ZionSiphon 是一款专门针对以色列水处理与海水淡化设施的操作技术(OT)恶意软件,于2026年4月被发现并披露。该恶意软件结合了传统主机端能力(权限提升、持久化、可移动介质传播)与针对工业控制系统的定向攻击逻辑,能够扫描内网 ICS 设备、操控 Modbus 协议寄存器、篡改加氯量和压力参数。该恶意软件集成了五层攻击路径(地理锁定 → OT 环境识别 → 配置文件投毒 → Modbus 协议操控 → USB 传播),若成功运行可造成大规模饮用水氯中毒和设备损坏。虽然其核心功能存在逻辑缺陷,但其技术架构的实战性预示了 APT 攻击向 OT 环境扩展的趋势。未来,随着 AI 介入攻击全生命周期,攻击者将利用其自动化能力快速修复技术短板、完美模拟工业协议。这将显著降低渗透门槛,使低成本、高精度的 AI 辅助攻击成为工业防御体系面临的常态化挑战。
ZionSiphon 是已知首款明确将政治动机与工业控制协议(Modbus、S7comm)相结合的 OT 恶意软件,其攻击目标直指以色列的水处理与海水淡化设施。尽管当前分析的样本因国家验证逻辑错误而未能成功触发完整攻击链,但其核心破坏能力已具备现实威胁:恶意软件中的 Modbus 寄存器写入逻辑、配置文件篡改机制以及通过 USB 进行的传播行为均可独立运作,足以对工业过程造成物理性破坏。ZionSiphon 的出现进一步印证了地缘政治冲突正在向关键基础设施的 OT 网络蔓延,水务、电力、油气等民生行业已不再是网络战中的旁观者,而成为直接打击对象。
1.1 攻击者画像
攻击团伙“0xICS”持亲伊朗、巴勒斯坦及也门的政治立场,明确反对以色列(其声明中以“xxx”代指敌方目标)。该组织的攻击意图具有鲜明的国家定向特征:所有指定的攻击IP段均位于以色列境内,并公开宣称“Poisoning the population of Tel Aviv and Haifa”(对特拉维夫和海法居民实施投毒)。
在战术层面,该团伙注重深度目标资产识别,综合运用USB可移动介质传播(.lnk文件)与PowerShell提权等成熟IT攻击手段,通过配置文件投毒及Modbus协议注入实现对工业过程的破坏。其具体攻击手法涵盖OT网络扫描、PE文件伪装、配置文件篡改、Modbus协议操纵以及利用USB介质进行横向移动。技术水平评估为中等:虽具备完整OT攻击工具的开发能力,但代码混淆较为简单(仅采用Base64与简易XOR加密),且对DNP3及S7comm协议的攻击实现存在功能残缺。攻击目标方面,样本代码中出现了以色列核研究中心所在地“Dimona”的标识,暗示其攻击意图可能延伸至该区域核设施周边的水务系统。
1.2 受害者分析
目标明确指向以色列国家水务公司 Mekorot运营的关键基础设施:
设施名称 |
希伯来语 |
地理位置 |
供水量占比 |
Sorek 海水淡化厂 |
שורק |
里雄莱锡安 |
~20% 饮用水 |
Hadera 海水淡化厂 |
חדרה |
哈代拉 |
~15% 饮用水 |
Ashdod 淡化厂 |
אשדוד |
阿什杜德 |
~15% 饮用水 |
Palmachim 淡化厂 |
פלמחים |
帕尔马基姆 |
~20% 饮用水 |
Shafdan 废水回收厂 |
שפדן |
特拉维夫都会区 |
~15% 饮用水(回收再利用) |
技战术分析
2.1 完整攻击链(Kill Chain)
2.2 MITRE ATT&CK for ICS 映射
下图展示了ZionSiphon一次攻击行为的完整战术链条与技术手段(MITRE ATT&CK Tactics and Techniques):

下图为恶意软件的行为分析图:

下图为恶意软件的进程树:

详细技术分析(Technical Analysis)
3.1 函数架构总览
根据逆向结果,ZionSiphon 采用高度模块化设计,每类攻击功能对应独立函数:
ZionSiphon (Main)
│
├── IsTargetCountry() ── 第一层:地理锁定(以色列 IP 段)
│ └── EncryptDecrypt(str, key) ← XOR 解密(存在关键 Bug)
│
├── IsDamDesalinationPlant() ── 第二层:OT 环境验证
│ ├── 扫描进程名(DesalPLC, ChlorineCtrl, ROController...)
│ └── 扫描文件系统路径(Mekorot, Sorek, Hadera...)
│
├── [验证通过后执行]
│ ├── IncreaseChlorineLevel() ── 本地配置文件投毒
│ ├── UZJctUZJctUZJct() ── ICS 子网发现
│ ├── [Modbus 分支] ── Modbus 操控(完整)
│ ├── [DNP3 分支] ── DNP3(仅帧头碎片)
│ └── [S7comm 分支] ── S7comm(WriteVar 不完整)
│
├── s1() ── 持久化(LocalAppData\svchost.exe)
├── sdfsdfsfsdfsdfqw() ── USB 传播(.lnk 诱饵)
└── SelfDestruct() ── 自毁(验证失败时)
3.2 目标锁定机制
第一层:国家地理锁定 — IsTargetCountry()
硬编码三个以色列 IPv4 地址段,Base64 + XOR 混淆存储:
IP段 1: 2.52.0.0 - 2.55.255.255 (以色列电信AS范围)
IP段 2: 79.176.0.0 - 79.191.255.255 (以色列宽带用户段)
IP段 3: 212.150.0.0 - 212.150.255.255(以色列政府/企业段)
第二层:OT 环境验证 —IsDamDesalinationPlant
通过扫描运行进程名和文件系统路径,识别目标是否属于水处理/海水淡化 OT 环境。
扫描的进程名关键词(部分):
DesalPLC, ROController, SchneiderRO, DamRO, ReverseOsmosis,
WaterGenix, RO_Pump, ChlorineCtrl, WaterPLC, SeaWaterRO,
BrineControl, OsmosisPLC, DesalMonitor, RO_Filter, ChlorineDose,
RO_Membrane, DesalFlow, WaterTreat, SalinityCtrl
扫描的目录路径(部分):
C:\Program Files\Desalination
C:\Program Files\Schneider Electric\Desal
C:\Program Files\IDE Technologies
C:\Program Files\Water Treatment
C:\Program Files\RO Systems
C:\Program Files\DesalTech
C:\Program Files\Aqua Solutions
C:\Program Files\Hydro Systems
以色列水基础设施关键词:
Mekorot(以色列国家水务公司)
Sorek(索雷克海水淡化厂)
Hadera(哈代拉海水淡化厂)
Ashdod(阿什杜德海水淡化厂)
Palmachim(帕尔马基姆海水淡化厂)
Shafdan(沙夫丹废水回收处理厂)
这五大海水淡化厂是以色列约80%的饮用水来源,被定点打击意味着大规模停水风险。
自毁 — SelfDestruct()
当目标验证失败(非以色列 IP 或非 OT 环境)时,恶意软件执行自毁:
删除注册表自启动项:HKCU\Software\Microsoft\Windows\CurrentVersion\Run ”中移除SystemHealthCheck值
-
在
%TEMP%\target_verify.log写入日志:"Target not matched. Operation restricted to IL ranges. Self-destruct initiated."
-
生成批处理文件
%TEMP%\delete.bat,循环尝试删除自身
3.3 攻击功能模块
权限提升(Privilege Escalation)
RunAsAdmin() → IsElevated()
持久化(Persistence)
s1() → HKCU\Software\Microsoft\Windows\CurrentVersion\Run
本地配置文件篡改(Local Config Tampering)
当 OT 环境验证通过后,恶意软件首先执行本地文件投毒:
IncreaseChlorineLevel()函数向以下配置文件追加恶意参数:
C:\DesalConfig.ini
C:\ROConfig.ini
C:\DesalSettings.conf
C:\Program Files\Desalination\system.cfg
C:\WaterTreatment.ini
C:\ChlorineControl.dat
C:\RO_PumpSettings.ini
C:\SalinityControl.ini
追加的恶意内容:
Chlorine_Dose=10; 加氯量设为危险高值
Chlorine_Pump=ON ; 氯泵强制开启
Chlorine_Flow=MAX ; 氯流量设为最大
Chlorine_Valve=OPEN ; 氯阀门强制打开
RO_Pressure=80 ; 反渗透压力设为80(高压危险)
OT目标扫描探测(ICS Discovery)
UZJctUZJctUZJct() — 子网 ICS 设备发现
端口 |
协议 |
说明 |
502 |
Modbus TCP |
最成熟的实现路径 |
20000 |
DNP3 |
仅含帧头碎片,极不完整 |
102 |
S7comm (Siemens S7) |
仅含不完整 WriteVar 请求结构 |
Modbus 协议操控(Modbus Write)
Modbus 分支是唯一完整实现的 OT 攻击路径:
读取阶段(Read Holding Registers):
01 03 00 00 00 0A
│ │ ││ ││
│ │ │ │ └── 读10个寄存器
│ │ │ └─────── 起始地址 = 0
│ │ └──────────────── 功能码 0x03(读保持寄存器)
│ └────────────────── 单元ID = 0x01
└───────────────────── 事务ID/协议ID(Modbus TCP)
寄存器筛选逻辑:
- Chlorine_Dose → 寻找值 > 0 且 < 1000 的寄存器
- Turbine_Speed → 寻找值 > 100 的寄存器
写入阶段(Write Single Register,功能码 0x06):
分析结论:动态扫描+硬编码备用双重机制表明攻击者对目标环境有部分但非完整的了解,初始扫描逻辑用于探测真实寄存器布局,备用帧确保即使扫描失败也能造成破坏。
DNP3 协议实现(极不完整)
返回字节序列:05 64 0A 0C 01 02
字节位置 |
含义 |
评估 |
05 64 |
DNP3 链路层同步头(正确) |
仅此部分有效 |
0A 0C |
链路层地址字段 |
不完整,缺16位 CRC 校验 |
01 02 |
疑似源/目标地址 |
未确认,无应用层载荷 |
整体帧结构严重残缺,无法构成有效 DNP3 命令。
S7comm 协议实现(部分实现)
返回字节序列:03 00 00 13 0E 00 + 05 00 1C 22 1E
USB 可移动介质传播
sdfsdfsfsdfsdfqw() → CreateUSBShortcut()
枚举系统中所有可移动磁盘驱动器
-
将自身以
svchost.exe名称复制到 U 盘根目录,设置为Hidden + System属性
-
创建指向恶意文件的
.lnk快捷方式,图标使用 Windows 通用文件图标(shell32.dll, 4)
原文件同样设为隐藏
感染链:受害者在 U 盘根目录看到正常文件图标(实际是快捷方式),点击后无声执行恶意代码。此手法类似于 USBee、Raspberry Robin 等 USB 传播蠕虫。