新闻动态

News information

ZionSiphon内幕:针对以色列水务系统的OT恶意软件的分析

<<返回

2026年05月07日 12:00

ZionSiphon 是一款专门针对以色列水处理与海水淡化设施的操作技术(OT)恶意软件20264月被发现并披露。该恶意软件结合了传统主机端能力(权限提升、持久化、可移动介质传播)与针对工业控制系统的定向攻击逻辑,能够扫描内网 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


标题: fig:


2.2 MITRE ATT&CK for ICS 映射

下图展示了ZionSiphon一次攻击行为的完整战术链条与技术手段(MITRE ATT&CK Tactics and Techniques):


标题: fig:




2.3 主机行为


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

标题: fig:


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

标题: fig:


详细技术分析(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 
分支]             ── S7commWriteVar 不完整)

├── 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 环境)时,恶意软件执行自毁:

  1. 删除注册表自启动项:HKCU\Software\Microsoft\Windows\CurrentVersion\Run ”中移除SystemHealthCheck

  2. %TEMP%\target_verify.log写入日志:"Target      not matched. Operation restricted to IL ranges. Self-destruct      initiated."
  3. 生成批处理文件

    %TEMP%\delete.bat,循环尝试删除自身

3.3 攻击功能模块

权限提升(Privilege Escalation

RunAsAdmin() → IsElevated()

  • 调用 Windows      API 获取当前进程令牌

  • 检查是否属于本地      Administrators 

  • 若未提权:以当前可执行文件路径为参数,通过 PowerShell 执行

    Start-Process      -FilePath <exe> -Verb RunAs,弹出 UAC 提示框,请求管理员权限

持久化(Persistence

s1() → HKCU\Software\Microsoft\Windows\CurrentVersion\Run

  • 若当前路径不在

    %LocalAppData%\svchost.exe,将自身复制到该路径
  • 设置文件属性为Hidden(隐藏)

  • 在注册表

    HKCU\...\Run下创建名为SystemHealthCheck的自启动项
  • 使用 Windows 合法进程名      "svchost.exe" 伪装,增加人工排查难度


本地配置文件篡改(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 设备发现

  • 获取本地 IPv4 地址,构造 /24 子网

  • 并行探测      254 台主机,扫描三个标准      ICS 协议端口:


端口

协议

说明

502

Modbus TCP

最成熟的实现路径

20000

DNP3

仅含帧头碎片,极不完整

102

S7comm (Siemens   S7)

仅含不完整 WriteVar 请求结构


  • 每个连接极短 100ms左右,快速批量探测内网 OT 设备(/24 全部254子网主机)


Modbus 协议操控(Modbus Write

Modbus 分支是唯一完整实现的 OT 攻击路径

读取阶段Read Holding Registers):

01 03 00 00 00 0A
│ │ │  ││
│ │ │         └── 
10个寄存器
│ │ │       └─────── 
起始地址 = 0
│ │ └──────────────── 
功能码 0x03(读保持寄存器)
│ └────────────────── 
单元ID = 0x01
└───────────────────── 
事务ID/协议IDModbus TCP


寄存器筛选逻辑:

  • Chlorine_Dose → 寻找值 > 0      <      1000 的寄存器
  • Turbine_Speed → 寻找值 >      100 的寄存器

写入阶段Write Single Register,功能码 0x06):

  • 若找到符合条件的寄存器:将

    Chlorine_Dose写入100,其他参数写入0

  • 若未找到:使用硬编码的备用 Modbus 写帧(预设寄存器地址和值)

分析结论动态扫描+硬编码备用双重机制表明攻击者对目标环境有部分但非完整的了解,初始扫描逻辑用于探测真实寄存器布局,备用帧确保即使扫描失败也能造成破坏。

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

  • 03 00 00 13      0E 00 S7comm 通信的 COTP 连接确认包
  • 05 00 1C 22      1E中第一个字节0x05 S7comm WriteVar(写变量)功能码,但后续字节不构成有效的变量规范结构
  • 完整 S7 WriteVar 至少需要11字节的变量规范结构,当前片段仅5字节

  • 结论S7comm 分支是未完成的开发代码


USB 可移动介质传播

sdfsdfsfsdfsdfqw() → CreateUSBShortcut()

  • 枚举系统中所有可移动磁盘驱动器

  • 将自身以

    svchost.exe名称复制到 U 盘根目录,设置为Hidden + System属性
  • 创建指向恶意文件的

    .lnk快捷方式,图标使用 Windows 通用文件图标(shell32.dll,      4
  • 原文件同样设为隐藏

感染链:受害者在 U 盘根目录看到正常文件图标(实际是快捷方式),点击后无声执行恶意代码。此手法类似于 USBeeRaspberry Robin  USB 传播蠕虫。



— 【 THE END 】—