MythicRatatoskr Mesh-Network Backdoor and Sandworm Handover
An adversary has established initial access via a scheduled task to deploy the MATCHWOK backdoor and subsequently installed the MythicRatatoskr backdoor, which uses the Yggdrasil mesh network for stealthy C2 communication.
Based on research by ESET Research 2026-10-24 12 steps · 5 queries T1041 T1053.005 T1059.001 T1071 T1566
Brief
Why now: The UAC-0099 and Sandworm Handover
Recent reporting from ESET Research describes a collaboration between the initial access broker UAC-0099 and the Sandworm group. The adversary follows a specific progression: initial access via phishing leads to the MATCHWOK backdoor, which eventually hands off control to a sophisticated mesh-network backdoor called MythicRatatoskr. This transition is a precursor to destructive data-wiping attacks, making early discovery of the persistent backdoor critical.
How the Hunt Flows
The first phase scopes the environment for the initial beachhead. A query scans scheduled task metadata for the specific task name used by UAC-0099. This step identifies which hosts require deeper inspection and provides a temporal anchor for the rest of the hunt.
Once the hunt identifies potential hosts, it corroborates the access markers in parallel. It examines PowerShell script logs for the execution of payloads staged in temporary directories and searches the registry for the specific run-key persistence associated with the MATCHWOK infection. This step builds confidence that the initial access chain succeeded.
The hunt then pivots to the MythicRatatoskr deployment. It searches for specific binary filenames and service installations while simultaneously baselining rare network traffic. This network search focuses on the deprecated IPv6 range (200::/7) that the Yggdrasil mesh protocol uses. Finding these IPv6 connections on a small number of hosts provides a high-confidence signal of a decentralized backdoor.
Finally, the hunt synthesizes these phases. An analyst evaluates whether the hosts with early access markers are the same hosts showing mesh-network activity. This full-chain assessment confirms the transition from a simple phishing infection to a sophisticated, long-term persistence mechanism.
What the Hunt Cannot See
Visibility into the Yggdrasil mesh depends entirely on the granularity of IPv6 logging. If network sensors do not capture traffic in the 200::/7 range or if EDR agents do not report IPv6 destination addresses for local processes, the network-based corroboration will fail. Furthermore, if the adversary rotates binary filenames or task names beyond the known parameters, the scoping phase may return zero results even if the backdoor exists.
How to Run the Hunt
This hunt is an open hunt.md playbook. You can import the file into Huntbase or any other runtime that supports the hunt.md format. The playbook uses SQLite-based DSL for its queries and includes logic for scoping hosts, triaging results, and isolating compromised systems. To begin, set the lookback_days parameter to cover at least 60 days of telemetry to capture the full progression from initial access to backdoor installation.
Steps
-
Scoping the pdfopentask beachhead
Query · scopingIdentify the initial set of hosts where the UAC-0099 execution chain likely began.
reads hb_scheduled_jobsqlSELECT device_hostname, job_name, job_cmd_line, job_user_name, time FROM hb_scheduled_job WHERE LOWER(job_name) = 'pdfopentask' AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. A list of hosts that executed the reported initial-access task name. Silence implies the beachhead was not established or the task name was rotated.
-
PowerShell blocks for temporarydoc.txt
Query · enrichmentIdentify the execution of the PowerShell payload from the temporary directory.
reads hb_script_activitysqlSELECT device_hostname, script_content, script_path, time FROM hb_script_activity WHERE (LOWER(script_content) LIKE '%temporarydoc.txt%' OR LOWER(script_content) LIKE '%egyptanimals.com%') AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Script content showing the download or execution of the MATCHBOIL payload.
-
MATCHWOK Run-key persistence
Query · detection candidateFind the specific registry key used to persist the MATCHWOK backdoor.
reads hb_registry_activitysqlSELECT device_hostname, reg_target, reg_value_data, time FROM hb_registry_activity WHERE LOWER(reg_target) LIKE '%\\currentversion\\run\\updatemonitor' AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. A registry value named UpdateMonitor pointing to a suspicious binary.
-
Triage early access markers
Agent triageEvaluate the scoping and parallel results to confirm an active MATCHWOK infection per host.
-
MythicRatatoskr binary execution
Query · triageIdentify the execution of specific filenames and service names associated with the MythicRatatoskr backdoor.
reads hb_process_activitysqlSELECT device_hostname, process_name, process_cmd_line, time FROM hb_process_activity WHERE (LOWER(process_name) LIKE '%\\updater.exe' OR LOWER(process_name) LIKE '%\\krbtman.exe' OR LOWER(process_name) LIKE '%\\windowsdefendersvc.exe' OR LOWER(process_name) LIKE '%\\onedriveliveupdater.exe' OR LOWER(process_name) LIKE '%\\applicationasphost.exe' OR LOWER(process_name) LIKE '%\\act64.exe' OR LOWER(process_name) LIKE '%\\ieupdate.exe' OR LOWER(process_name) LIKE '%\\ie.exe' OR LOWER(process_cmd_line) LIKE '%ieupdate%' OR instr(',' || '{{mythic_binaries}}' || ',', ',' || LOWER(process_name) || ',') > 0) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Execution of updater.exe, krbtman.exe, or other reported binaries, particularly on hosts from the scoping phase. Suffix matching identifies binaries even when installed in unusual paths.
-
Baseline rare Yggdrasil mesh traffic
Query · baselineFind rare IPv6 traffic in the 200::/7 range indicating mesh-network C2.
reads hb_network_connectionsqlSELECT dst_endpoint_ip, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen FROM hb_network_connection WHERE (dst_endpoint_ip >= '0200:' AND dst_endpoint_ip < '0400:') AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY dst_endpoint_ip HAVING host_count <= 3What a hit looks like. Connections to IPv6 addresses in the deprecated mesh range (0200:: to 03ff::), appearing on a small number of hosts.
-
Assess full intrusion chain
Agent triageSynthesize early access and follow-on mesh C2 telemetry to confirm a complete backdoor deployment.
-
Route on compromise confidence
DecisionDirect hosts with confirmed mesh-network backdoors to immediate isolation.
-
Isolate compromised host
Response actionStop active C2 communication and prevent the transition to the data-wiping phase.
-
Forensic review of mesh config
Analyst taskReview captured artifacts to identify the peer addresses and exfiltration scope.
-
Close out hunt
Analyst taskDocument results and recommend detection improvements.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Initial Access and Scheduled Task Execution T1566 · T1053.005 · T1059.001 |
Yes | scoping-pdfopentask, phishing-script-blocks |
| MATCHWOK Backdoor Persistence T1071 |
Yes | matchwok-registry-persistence |
| MythicRatatoskr Service Installation T1053.005 |
Yes | mythic-binary-execution |
| Yggdrasil Mesh Network C2 and Lateral Movement T1071 · T1041 |
Yes | yggdrasil-traffic-baseline, manual-incident-review |
| GPO Coordinated Data Wipe T1059.001 |
Out of scope | Belongs to another part of the 'MythicRatatoskr: An Yggdrasil-enabled backdoor deployed in a UAC-0099-Sandworm collaboration' series. |
Blind spots
- Needs Comprehensive IPv6 logging including deprecated 200::/7 ranges. Adversaries could maintain C2 via encrypted IPv6 mesh routing that bypasses legacy IPv4-centric network filters. It would answer Whether the mesh-network traffic was visible to the network sensors.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
lookback_days | number | 60 | Days of history to examine, covering the window from initial access to the reported data-wiping attacks. |
mythic_binaries | list[path] | updater.exe, krbtman.exe, windowsdefendersvc.exe, onedriveliveupdater.exe, applicationasphost.exe, act64.exe, ieupdate.exe, ie.exe | Binary filenames associated with MythicRatatoskr and its proxy components. |
scope_hosts | list[host] | — | Hosts identified in the scoping step to focus the follow-on binary search. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Network telemetry | network | network |
Source
---
analysis: A single detection rule cannot correlate the two-month progression from
a phishing-driven scheduled task to a decentralized Go-based mesh backdoor. This
hunt baseline-counts the unique IPv6 range and pivots through the earlier MATCHWOK
infection markers to verify a complex, multi-actor intrusion.
blind_spots:
- id: limited-mesh-visibility
question: Whether the mesh-network traffic was visible to the network sensors
requires: Comprehensive IPv6 logging including deprecated 200::/7 ranges
risk: Adversaries could maintain C2 via encrypted IPv6 mesh routing that bypasses
legacy IPv4-centric network filters.
stage: yggdrasil-mesh-and-lateral-movement
coverage:
- stage: initial-access-scheduled-task
status: covered
steps:
- scoping-pdfopentask
- phishing-script-blocks
- stage: matchwok-backdoor-persistence
status: covered
steps:
- matchwok-registry-persistence
- stage: mythicratatoskr-service-installation
status: covered
steps:
- mythic-binary-execution
- stage: yggdrasil-mesh-and-lateral-movement
status: covered
steps:
- yggdrasil-traffic-baseline
- manual-incident-review
- reason: 'Belongs to another part of the ''MythicRatatoskr: An Yggdrasil-enabled
backdoor deployed in a UAC-0099-Sandworm collaboration'' series.'
stage: gpo-coordinated-data-wipe
status: out_of_scope
guardrails:
claims: no_unsupported
evidence: citation_required
missing_data: not_benign
telemetry: untrusted
hunt:
applicability: campaign-specific
handoff: keep-as-periodic-hunt
justification: The UAC-0099 to Sandworm handover is a documented precursor to destructive
attacks; verifying the absence of the MythicRatatoskr backdoor is an essential
preventive measure for high-risk estates.
methodology: model-assisted
trigger: intel-report
hypothesis: An adversary has established initial access via a scheduled task to deploy
the MATCHWOK backdoor and subsequently installed the MythicRatatoskr backdoor, which
uses the Yggdrasil mesh network for stealthy C2 communication.
labels:
- hunt
- attack.t1566
- attack.t1053.005
- attack.t1059.001
- attack.t1071
- attack.t1041
- command and control
- impact
- initial access
- persistence
name: MythicRatatoskr Mesh-Network Backdoor and Sandworm Handover
parameters:
lookback_days:
default: '60'
description: Days of history to examine, covering the window from initial access
to the reported data-wiping attacks.
type: number
mythic_binaries:
default:
- updater.exe
- krbtman.exe
- windowsdefendersvc.exe
- onedriveliveupdater.exe
- applicationasphost.exe
- act64.exe
- ieupdate.exe
- ie.exe
description: Binary filenames associated with MythicRatatoskr and its proxy components.
from:
kind: article
observed: '2026-10-22'
ref: eset-mythicratatoskr
type: list[path]
scope_hosts:
default: []
description: Hosts identified in the scoping step to focus the follow-on binary
search.
type: list[host]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://www.welivesecurity.com/en/eset-research/mythicratatoskr-yggdrasil-enabled-backdoor-deployed-uac0099-sandworm-collaboration/
gates:
- dry-run
- lint
model: hb_google/gemini-3-flash-preview
rationale: Focus the hunt on the pdfopentask scheduled task; hosts identified here
should be used to seed the scope_hosts parameter for the binary execution phase.
references:
- name: "ESET Research \u2014 MythicRatatoskr: An Yggdrasil-enabled backdoor deployed\
\ in a UAC-0099-Sandworm collaboration"
url: https://www.welivesecurity.com/en/eset-research/mythicratatoskr-yggdrasil-enabled-backdoor-deployed-uac0099-sandworm-collaboration/
related:
- hunt: gpo-coordinated-data-wipe
reason: This hunt focuses on the persistent backdoor phase; the final wiping phase
via GPO is a distinct follow-on activity.
relation: out-of-scope-alternative
scenario:
stages:
- name: Initial Access and Scheduled Task Execution
observables:
- scheduled task named pdfopentask
- PowerShell payload executed from %temp%\temporarydoc.txt
- MATCHBOIL downloader execution
slug: initial-access-scheduled-task
tactic: initial-access
techniques:
- T1566
- T1053.005
- T1059.001
- name: MATCHWOK Backdoor Persistence
observables:
- registry value UpdateMonitor in HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
- C&C domain uztickets.com
- Download URL egyptanimals.com/animals/photoalbum
slug: matchwok-backdoor-persistence
tactic: persistence
techniques:
- T1071
- name: MythicRatatoskr Service Installation
observables:
- Windows service named ieupdate
- Binary paths including C:\windows\system32\updater.exe, windowsdefendersvc.exe,
and krbtman.exe
- Configuration files named .updatecache in C:\Windows\system32 or C:\Windows\Temp
- Configuration file .crond in %LocalAppData%/Temp
slug: mythicratatoskr-service-installation
tactic: persistence
techniques:
- T1053.005
- name: Yggdrasil Mesh Network C2 and Lateral Movement
observables:
- IPv6 overlay traffic in the 200::/7 range
- 10-minute startup delay for backdoor execution
- SOCKS5 server deployment (krbtman.exe)
- OpenSSH SFTP server used for internal sample distribution
slug: yggdrasil-mesh-and-lateral-movement
tactic: command-and-control
techniques:
- T1071
- T1041
- name: GPO Coordinated Data Wipe
observables:
- Active Directory Group Policy (GPO) deployment of wiping tools
- Execution of SDelete utility across the organization
slug: gpo-coordinated-data-wipe
tactic: impact
techniques:
- T1059.001
summary: UAC-0099 initiated access to a Ukrainian firm via spearphishing and deployed
the MATCHWOK backdoor before handing off access to Sandworm. The campaign featured
a novel Go-based backdoor named MythicRatatoskr that utilizes the Yggdrasil mesh
network for command and control, ultimately concluding with a destructive data-wiping
attack via Active Directory Group Policy.
series:
index: 1
slug: mythicratatoskr-an-yggdrasil-enabled-backdoor-deployed-in-a-uac-0099-sandworm-collaboration
title: 'MythicRatatoskr: An Yggdrasil-enabled backdoor deployed in a UAC-0099-Sandworm
collaboration'
total: 2
severity: high
targets:
analyst:
name: Tier-2 analyst
role: analyst
endpoint:
category: endpoint
name: Endpoint telemetry (hb_ surfaces)
telemetry:
- endpoint
hunter:
agent: true
name: Hunt agent
network:
category: network
name: Network telemetry
telemetry:
- network
tlp: clear
type: investigation
---
# MythicRatatoskr Mesh-Network Backdoor and Sandworm Handover
The adversary gains initial access via phishing and persists using scheduled tasks and registry keys. The hunt identifies these early access markers and then pivots to find specialized mesh-network C2 telemetry. The phased flow ensures that the hunt weighs early access markers alongside specialized mesh C2 telemetry to confirm a high-confidence intrusion before the adversary transitions to data-wiping activity.
## scoping-pdfopentask
<!-- Scoping the pdfopentask beachhead -->
Identify the initial set of hosts where the UAC-0099 execution chain likely began.
```sqlite target=endpoint role=scoping params=(lookback_days=lookback_days)
~~~yaml
expected: A list of hosts that executed the reported initial-access task name. Silence
implies the beachhead was not established or the task name was rotated.
reads:
- device_hostname
- job_name
- job_cmd_line
- job_user_name
- time
silence: not_evidence_of_absence
source: hb_scheduled_job
verified: dry-run
verified_at: '2026-10-24'
~~~
SELECT device_hostname, job_name, job_cmd_line, job_user_name, time FROM hb_scheduled_job WHERE LOWER(job_name) = 'pdfopentask' AND time >= datetime('now', '-{{lookback_days}} days')
```
## parallel-early-corroboration
<!-- Corroborate early stage indicators -->
parallel:
- → phishing-script-blocks
- → matchwok-registry-persistence
join: → triage-early-access
## phishing-script-blocks
<!-- PowerShell blocks for temporarydoc.txt -->
Identify the execution of the PowerShell payload from the temporary directory.
```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days)
~~~yaml
expected: Script content showing the download or execution of the MATCHBOIL payload.
reads:
- device_hostname
- script_content
- script_path
- time
silence: not_evidence_of_absence
source: hb_script_activity
verified: dry-run
verified_at: '2026-10-24'
~~~
SELECT device_hostname, script_content, script_path, time FROM hb_script_activity WHERE (LOWER(script_content) LIKE '%temporarydoc.txt%' OR LOWER(script_content) LIKE '%egyptanimals.com%') AND time >= datetime('now', '-{{lookback_days}} days')
```
## matchwok-registry-persistence
<!-- MATCHWOK Run-key persistence -->
Find the specific registry key used to persist the MATCHWOK backdoor.
```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days)
~~~yaml
expected: A registry value named UpdateMonitor pointing to a suspicious binary.
reads:
- device_hostname
- reg_target
- reg_value_data
- time
silence: not_evidence_of_absence
source: hb_registry_activity
verified: dry-run
verified_at: '2026-10-24'
~~~
SELECT device_hostname, reg_target, reg_value_data, time FROM hb_registry_activity WHERE LOWER(reg_target) LIKE '%\\currentversion\\run\\updatemonitor' AND time >= datetime('now', '-{{lookback_days}} days')
```
## triage-early-access
<!-- Triage early access markers -->
```agent target=hunter
cite: required
context:
- scoping-pdfopentask
- phishing-script-blocks
- matchwok-registry-persistence
max_iterations: 3
objective: Determine which hosts show confirmed signs of the UAC-0099 initial access
chain (pdfopentask, temporarydoc, or UpdateMonitor).
success_criteria: A per-host verdict of malicious | suspicious | benign citing rows
from the scoped results.
tools:
- endpoint
- network
```
## parallel-mythic-ratatoskr
<!-- Hunt for MythicRatatoskr and Mesh C2 -->
parallel:
- → mythic-binary-execution
- → yggdrasil-traffic-baseline
join: → full-chain-assessment
## mythic-binary-execution
<!-- MythicRatatoskr binary execution -->
Identify the execution of specific filenames and service names associated with the MythicRatatoskr backdoor.
```sqlite target=endpoint role=triage params=(lookback_days=lookback_days, mythic_binaries=mythic_binaries, scope_hosts=scope_hosts)
~~~yaml
expected: Execution of updater.exe, krbtman.exe, or other reported binaries, particularly
on hosts from the scoping phase. Suffix matching identifies binaries even when installed
in unusual paths.
reads:
- device_hostname
- process_name
- process_cmd_line
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-10-24'
~~~
SELECT device_hostname, process_name, process_cmd_line, time FROM hb_process_activity WHERE (LOWER(process_name) LIKE '%\\updater.exe' OR LOWER(process_name) LIKE '%\\krbtman.exe' OR LOWER(process_name) LIKE '%\\windowsdefendersvc.exe' OR LOWER(process_name) LIKE '%\\onedriveliveupdater.exe' OR LOWER(process_name) LIKE '%\\applicationasphost.exe' OR LOWER(process_name) LIKE '%\\act64.exe' OR LOWER(process_name) LIKE '%\\ieupdate.exe' OR LOWER(process_name) LIKE '%\\ie.exe' OR LOWER(process_cmd_line) LIKE '%ieupdate%' OR instr(',' || '{{mythic_binaries}}' || ',', ',' || LOWER(process_name) || ',') > 0) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```
## yggdrasil-traffic-baseline
<!-- Baseline rare Yggdrasil mesh traffic -->
Find rare IPv6 traffic in the 200::/7 range indicating mesh-network C2.
```sqlite target=network role=baseline params=(lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: 'Connections to IPv6 addresses in the deprecated mesh range (0200:: to 03ff::),
appearing on a small number of hosts.'
prevalence:
by: device_hostname
key:
- dst_endpoint_ip
rare_below: 3
reads:
- dst_endpoint_ip
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-10-24'
~~~
SELECT dst_endpoint_ip, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen FROM hb_network_connection WHERE (dst_endpoint_ip >= '0200:' AND dst_endpoint_ip < '0400:') AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY dst_endpoint_ip HAVING host_count <= 3
```
## full-chain-assessment
<!-- Assess full intrusion chain -->
```agent target=hunter
cite: required
context:
- triage-early-access
- mythic-binary-execution
- yggdrasil-traffic-baseline
max_iterations: 6
objective: Confirm if any hosts showing early access markers also demonstrate MythicRatatoskr
binary execution or Yggdrasil mesh network traffic.
success_criteria: A per-host verdict citing the transition from MATCHWOK to MythicRatatoskr.
tools:
- endpoint
- network
```
## compromise-decision
<!-- Route on compromise confidence -->
if~: "the full-chain-assessment verdict is malicious for at least one host showing Yggdrasil network connections or mythic binary execution" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → manual-incident-review
unavailable: → manual-incident-review (blind_spot: limited-mesh-visibility)
else: → close-out-hunt
## isolate-host
<!-- Isolate compromised host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host, terminate updater.exe and krbtman.exe processes, and capture the .updatecache configuration file for forensics.
```
→ manual-incident-review
## manual-incident-review
<!-- Forensic review of mesh config -->
```manual target=analyst
Decrypt and examine the .updatecache files from C:\Windows\system32 to find the Yggdrasil peer public keys and C2 endpoints; check SOCKS5 logs for internal lateral movement.
```
→ close-out-hunt
## close-out-hunt
<!-- Close out hunt -->
```manual target=analyst
Record whether Yggdrasil traffic was found, the binaries identified, and recommend the UpdateMonitor registry query for promotion to a permanent rule.
```
→ end
Run it
Take this hunt into your environment.
Open it in Huntbase to run every step against your own connections, with Scout weighing the evidence and your analysts in command. Or take the open hunt.md file anywhere that reads the format.
Machine-drafted by huntbase-hunt-generation using hb_google/gemini-3-flash-preview, gated by dry-run, lint, then reviewed by a person.