ZionSiphon Attack Path
How a USB drive becomes physical consequence
The malware did not arrive through a phishing email or an exposed service.
It arrived on a USB drive someone plugged in.
From that moment, it moved through systems that looked entirely normal until it reached the process layer.
The Attack Path
Seven phases. Click any node to inspect it. Step through with the controls below. The path builds as the attack progresses — watch the current escalate from trusted blue to amber to consequence red.
IOC Hunt Checklist
Detection Playbooks
svchost.exe Outside System32
Endpoint — highest priority detection, catches active sample
- Alert on any svchost.exe process where the image path contains AppData, LocalAppData, Temp, or a removable drive letter
- Legitimate svchost.exe runs exclusively from %SystemRoot%\System32\ under SYSTEM, LOCAL SERVICE, or NETWORK SERVICE accounts
- A user-context svchost.exe from AppData is a near-certain malware indicator
process_name="svchost.exe"
NOT process_path CONTAINS "\\Windows\\System32\\"
| table _time, host, user, process_path, parent_process
| sort -_time
title: ZionSiphon - svchost.exe Masquerade logsource: category: process_creation product: windows detection: selection: Image|endswith: '\svchost.exe' filter_legit: Image|startswith: - 'C:\Windows\System32\' - 'C:\Windows\SysWOW64\' condition: selection and not filter_legit tags: [attack.defense_evasion, attack.t1036.005] level: critical
HKCU Run Key — SystemHealthCheck
Registry — direct ZionSiphon persistence indicator
- Alert on creation of HKCU\Software\Microsoft\Windows\CurrentVersion\Run with value name SystemHealthCheck
- This is a hardcoded indicator specific to the analyzed ZionSiphon sample
- Any match should be treated as high-confidence and investigated immediately
event_type=registry_set
registry_key CONTAINS "\\CurrentVersion\\Run"
registry_value_name="SystemHealthCheck"
| table _time, host, user, registry_key, registry_value_data
title: ZionSiphon - Hardcoded Run Key Persistence logsource: category: registry_set product: windows detection: selection: TargetObject|contains: '\CurrentVersion\Run' TargetObject|endswith: '\SystemHealthCheck' condition: selection tags: [attack.persistence, attack.t1547.001] level: critical
PowerShell UAC Bypass via RunAs Verb
Endpoint — elevation mechanism used by ZionSiphon
- Alert on PowerShell command lines containing Start-Process and -Verb RunAs launched from a non-interactive parent process
- This indicates an application attempting to self-elevate through UAC rather than running with pre-granted privileges
- In an OT workstation context, this is unusual and warrants immediate investigation
process_name="powershell.exe"
cmdline CONTAINS "Start-Process"
cmdline CONTAINS "RunAs"
parent_is_interactive=false
| table _time, host, user, cmdline, parent_process
title: ZionSiphon - PowerShell Self-Elevation logsource: category: process_creation product: windows detection: selection: Image|endswith: '\powershell.exe' CommandLine|contains|all: - 'Start-Process' - 'RunAs' filter_interactive: ParentImage|endswith: - '\explorer.exe' - '\cmd.exe' condition: selection and not filter_interactive tags: [attack.privilege_escalation, attack.t1548.002] level: high
LNK Creation on Removable Media
File system — USB propagation mechanism
- Alert on .lnk file creation events where the target path is a removable drive volume (D:\, E:\, etc.)
- ZionSiphon creates disguised LNK shortcuts to carry itself across USB media
- Correlate with the presence of svchost.exe on the same drive for higher confidence
event_type=file_create
file_extension=".lnk"
file_path REGEX "^[D-Z]:\\"
| table _time, host, user, file_path, process_name
title: ZionSiphon - USB Propagation LNK logsource: category: file_event product: windows detection: selection: TargetFilename|re: '^[D-Z]:\\.*\.lnk$' filter_user: Image|endswith: '\explorer.exe' condition: selection and not filter_user tags: [attack.lateral_movement, attack.t1091] level: high
TCP Burst to OT Protocol Ports
Network — OT network reconnaissance sweep
- Alert on a single source IP making rapid TCP connection attempts to multiple hosts on ports 502 (Modbus), 20000 (DNP3), and 102 (S7comm) within a short time window
- ZionSiphon scans the local /24 subnet for accessible ICS devices before targeting them
- A workstation initiating this sweep is a very high confidence indicator of OT sabotage tooling
dest_port IN (502, 20000, 102)
| stats dc(dest_ip) as hosts by src_ip, _time span=60s
| where hosts > 3
| table _time, src_ip, hosts
title: ZionSiphon - OT Network Reconnaissance logsource: category: network_connection product: windows detection: selection: DestinationPort: [502, 20000, 102] condition: selection | count(DestinationIp) by SourceIp > 3 timeframe: 60s tags: [attack.discovery, attack.t1046] level: high
Modbus FC06 Write to Registers 0–9 (OT Platform)
OT Protocol — requires industrial DPI with Modbus baseline
- Alert on Modbus function code 06 (Write Single Register) targeting registers 0 through 9 from a workstation process outside an authorized change window
- ZionSiphon writes FC06 value of 100 to the chlorine dose register — a direct process manipulation attempt
- This detection requires OT-aware monitoring with Modbus protocol deep packet inspection and a behavioral baseline
- In a water environment, any unexpected FC06 write to low registers should be treated as a sabotage scenario
title: ZionSiphon - Modbus FC06 Process Manipulation logsource: product: modbus service: protocol detection: selection: function_code: 6 # FC06 Write Single Register register_address|lt: 10 filter_maintenance: change_window_active: true condition: selection and not filter_maintenance tags: [attack.impact, attack.t0836, attack.t0855] level: critical
Modbus FC03 Read Burst Across Multiple Hosts (OT Platform)
OT Protocol — discovery phase before manipulation
- Alert on a single source issuing Modbus FC03 (Read Holding Registers) requests to ten registers from address zero across multiple destination IPs in rapid succession
- This is ZionSiphon's register discovery pattern — it reads before it writes to identify the chlorine dose register
- This detection requires OT network visibility with Modbus protocol parsing
title: ZionSiphon - Modbus FC03 Register Discovery logsource: product: modbus service: protocol detection: selection: function_code: 3 # FC03 Read Holding Registers start_address: 0 quantity: 10 condition: selection | count(dest_ip) by src_ip > 2 timeframe: 30s tags: [attack.discovery, attack.t1046] level: high
Key Takeaways
Air Gaps Don't Stop USB
ZionSiphon's propagation mechanism is specifically designed to cross air gaps through operational media use. Physical isolation is not a control against this vector. Media policy and workstation lockdown are.
The Flaw Is Temporary
The country validation logic error that prevents current activation is a single correctable line of code. The Modbus capability, USB propagation, and masquerade persistence are all functional. This is a draft weapon.
Process-Aware Tooling Is Accessible
ZionSiphon proves that actors outside top-tier nation-state programs can now build malware that understands OT protocols and targets physical process parameters. The barrier has dropped significantly.
Read the full intelligence report including MITRE mapping, complete IOC table, and mitigation recommendations.
← View Full Threat Bulletin