本仓库包含对臭名昭著的 Stuxnet 蠕虫的纯教育和研究用途重构。它是全球安全研究社区对 2010 年发现的原始二进制样本进行无数小时逆向工程工作的成果。
免责声明:本代码仅供学术研究、恶意软件分析培训和防御性研究使用。它不旨在用于任何恶意目的,也不是可部署的恶意软件。作者和贡献者不纵容任何非法或不道德的活动。
目录
概述
核心组件
技术架构
构建说明
用法
法律与许可证
致谢
Stuxnet 被广泛认为是首个旨在对工业控制系统(ICS)造成物理破坏的已知网络武器。它专门针对西门子 Step 7 软件和 S7-300/400 PLC,最终操纵变频器驱动器以损坏离心机转子。
本仓库是从反编译二进制文件中推导出的重构源代码。它保留了原始逻辑和攻击向量,同时将代码库结构化以便于阅读和分析。
关键特征
目标:西门子 SIMATIC WinCC、Step 7 和 S7 PLC。
传播方式:USB 驱动器(LNK 漏洞)、网络共享(Print Spooler)、点对点(P2P)。
载荷:修改 PLC 块逻辑(OB1/OB35)以改变电机频率。
隐蔽性:高级 Rootkit 功能(MRxCls.sys、MRxNet.sys),用于隐藏文件、进程和注册表项。
本仓库按原始恶意软件分析过程中识别出的主要模块进行组织。
模块:加载器/投放器 文件名:winsta.exe、~WTR4141.tmp 描述:负责初始感染、权限提升和其他组件部署的入口点。
模块:权限提升 文件名:~WTR4132.tmp 描述:利用 Win32k.sys 漏洞获取系统级权限。
模块:S7 钩子库 文件名:s7otbxdx.dll 描述:恶意替换原始 s7otbxsx.dll。拦截 Step 7 与 PLC 之间的通信。
模块:Step7 钩子库 文件名:s7aaapix.dll 描述:拦截 Step 7 工程环境中的 AUT(自动化工具)API 调用。
模块:Rootkit(文件系统) 文件名:mrxcls.sys 描述:内核模式驱动程序,通过 SSDT 挂钩隐藏 Stuxnet 文件、进程和注册表项。
模块:Rootkit(网络) 文件名:mrxnet.sys 描述:过滤文件系统请求以隐藏恶意文件,并支持 P2P 传播。
模块:载荷(攻击) 文件名:s7plcmain 描述:负责损坏离心机的“频率篡改”攻击的核心逻辑。
以下描述 Stuxnet 框架的高级执行流程。
阶段 1:初始感染向量(USB/网络) 阶段 2:投放器和权限提升 阶段 3:检查环境 阶段 4a:发现目标(西门子软件)-> 安装 S7 钩子 阶段 4b:非目标 -> 自毁/空闲 阶段 5:监控 PLC 写入 阶段 6:检测 OB1/OB35 写入 -> 注入载荷 阶段 7:修改频率输出 阶段 8:对离心机造成物理损坏 阶段 9:安装 Rootkit(MRxCls) 阶段 10:隐藏文件和注册表项 阶段 11:加载网络模块(MRxNet) 阶段 12:P2P 传播
执行流程
环境侦察:蠕虫检查是否存在特定的西门子软件(WinCC、Step 7)和特定的目标 PLC(S7-315、S7-417)。
DLL 注入:它拦截 s7blk_write 函数调用。
代码注入:当用户将项目下载到 PLC 时,恶意代码被附加到 OB1/OB35 块中。
物理影响:PLC 执行被操纵的代码,导致连接的变频驱动器(VFD)以异常频率(高/低)旋转,从而造成机械损坏。
构建说明
重要提示:此代码库专为在受控虚拟环境中进行静态分析和调试而设计。它不旨在部署在任何关键基础设施上进行实时运行。
要求
构建环境:Microsoft Visual Studio 2019/2022(Windows)或 mingw-w64。
目标操作系统:Windows XP / Windows 7(用于驱动程序兼容性)。
驱动程序套件:Windows Driver Kit(WDK)7600(如果编译内核驱动程序)。
构建用户模式模块
克隆仓库
git clone https://github.com/Sadpainy/Stuxnet.git cd stuxnet-analysis
构建主投放器
cd winsta nmake /f Makefile.win
构建 S7 钩子库
cd ../s7otbxdx cl /LD s7otbxdx.c user32.lib ws2_32.lib
本代码旨在用于:
恶意软件分析:理解高级持续性威胁(APT)中使用的特定代码逻辑。
防御性研究:为 ICS 安全工具开发检测签名(例如 YARA 规则、Snort 签名)。
学术研究:考察网络安全与关键基础设施保护之间的交叉领域。
分析设置
隔离环境:使用启用仅主机(Host-Only)网络的虚拟机(VMWare/VirtualBox)。禁用互联网连接。
加载模块:使用 IDA Pro、Ghidra 或 x64dbg 等工具分析 .dll 和 .sys 文件。
监控活动:使用 Process Monitor(ProcMon)、Process Hacker 和 Wireshark 观察行为。
法律与许可证
本项目根据 GNU 通用公共许可证 v3.0 授权。详情请参阅 LICENSE 文件。
本仓库中的代码是仅出于教育目的进行逆向工程的产物。Stuxnet 蠕虫的原始作者是匿名的,但此处包含的重构是独立安全研究人员的工作成果。
作者不声称拥有原始恶意软件的所有权。
本代码按“原样”提供,不附带任何形式的保证。
作者不对因使用本代码造成的任何误用或损害负责。
使用本仓库即表示您确认自行负责确保遵守所有适用的法律法规。
如果没有全球网络安全厂商提供的广泛分析和威胁情报,这项研究和重构是不可能完成的。
Symantec(W32.Stuxnet 档案)
Kaspersky Lab(Stuxnet 传奇)
ESET(显微镜下的 Stuxnet)
Amr Thabet 和 Christian Roggia(research-virus/stuxnet)
这是一项学术性重构。请用它来构建更强大的防御,而不是造成伤害。