Stuxnet README

The project's README from github.com/Sadpainy/Stuxnet. As one markdown file: README.md.

Stuxnet

Build Unstable Windows Siemens Tests AGPLv3

This repository contains a strictly educational and research-oriented reconstruction of the infamous Stuxnet worm. It is the product of countless hours of reverse engineering work conducted by the global security research community on the original binary samples discovered in 2010.

Disclaimer: This code is provided solely for academic study, malware analysis training, and defensive research. It is not intended to be used for any malicious purposes, nor is it a deployable piece of malware. The authors and contributors do not condone illegal or unethical activities.

Table of Contents

Overview

Core Components

Technical Architecture

Build Instructions

Usage

Legal and License

Acknowledgements

Overview

Stuxnet is widely recognized as the first known cyber-weapon designed to cause physical destruction to industrial control systems (ICS). It specifically targeted Siemens Step 7 software and S7-300/400 PLCs, ultimately manipulating frequency converter drives to damage centrifuge rotors.

This repository is a reconstructed source code derived from the decompiled binaries. It preserves the original logic and attack vectors while structuring the codebase for readability and analysis.

Key Characteristics

Target: Siemens SIMATIC WinCC, Step 7, and S7 PLCs.

Propagation: USB drives (LNK exploits), Network shares (Print Spooler), Peer-to-Peer (P2P).

Payload: Modification of PLC block logic (OB1/OB35) to alter motor frequencies.

Stealth: Advanced Rootkit capabilities (MRxCls.sys, MRxNet.sys) for file, process, and registry hiding.

Core Components

The repository is organized by the primary modules identified during the analysis of the original malware.

Module: Loader/Dropper Filename: winsta.exe, ~WTR4141.tmp Description: Entry point responsible for initial infection, privilege escalation, and deployment of other components.

Module: Privilege Escalation Filename: ~WTR4132.tmp Description: Exploits the Win32k.sys vulnerability to gain system-level privileges.

Module: S7 Hook Library Filename: s7otbxdx.dll Description: Malicious replacement of the original s7otbxsx.dll. Intercepts communication between Step 7 and the PLC.

Module: Step7 Hook Library Filename: s7aaapix.dll Description: Intercepts AUT (Automation Tool) API calls within the Step 7 engineering environment.

Module: Rootkit (File System) Filename: mrxcls.sys Description: Kernel-mode driver used to hide Stuxnet files, processes, and registry keys via SSDT hooking.

Module: Rootkit (Network) Filename: mrxnet.sys Description: Filters file system requests to hide malicious files and enables P2P propagation.

Module: Payload (Attack) Filename: s7plcmain Description: The core logic responsible for the "Frequency Tampering" attack that damages the centrifuges.

Technical Architecture

The following describes the high-level execution flow of the Stuxnet framework.

Stage 1: Initial Infection Vector (USB/Network) Stage 2: Dropper and Escalation Stage 3: Check Environment Stage 4a: Target Found (Siemens Software) -> Install S7 Hooks Stage 4b: Non-target -> Self-Destruct/Idle Stage 5: Monitor PLC Writes Stage 6: Detect OB1/OB35 Write -> Inject Payload Stage 7: Modify Frequency Output Stage 8: Physical Damage to Centrifuges Stage 9: Install Rootkit (MRxCls) Stage 10: Hide Files and Registry Stage 11: Load Network Module (MRxNet) Stage 12: P2P Propagation

Execution Flow

  1. Environment Reconnaissance: The worm checks for the presence of specific Siemens software (WinCC, Step 7) and specific target PLCs (S7-315, S7-417).

  2. DLL Injection: It intercepts the s7blk_write function call.

  3. Code Injection: When a user downloads a project to the PLC, the malicious code is appended to the OB1/OB35 blocks.

  4. Physical Impact: The PLC executes the manipulated code, causing the connected variable frequency drives (VFDs) to spin at abnormal frequencies (high/low), resulting in mechanical damage.

Build Instructions

Important: This codebase is designed for static analysis and debugging in a controlled virtual environment. It is not intended for live deployment on any critical infrastructure.

Requirements

Build Environment: Microsoft Visual Studio 2019/2022 (Windows) or mingw-w64.

Target OS: Windows XP / Windows 7 (for driver compatibility).

Driver Kit: Windows Driver Kit (WDK) 7600 (if compiling kernel drivers).

Building the User-Mode Modules

Clone the repository

git clone https://github.com/Sadpainy/Stuxnet.git
cd Stuxnet

Build the main dropper

cd winsta
nmake /f Makefile.win

Build the S7 hook library

cd ../s7otbxdx
cl /LD s7otbxdx.c user32.lib ws2_32.lib

Usage

This code is intended for:

Malware Analysis: Understanding the specific code logic used in advanced persistent threats (APTs).

Defensive Research: Developing detection signatures for ICS security tools (e.g., YARA rules, Snort signatures).

Academic Study: Examining the intersection of cybersecurity and critical infrastructure protection.

Analysis Setup

  1. Isolate Environment: Use a virtual machine (VMWare/VirtualBox) with Host-Only networking enabled. Disable internet connectivity.

  2. Load Modules: Analyze the .dll and .sys files using tools such as IDA Pro, Ghidra, or x64dbg.

  3. Monitor Activity: Use Process Monitor (ProcMon), Process Hacker, and Wireshark to observe the behavior.

Legal and License

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

Disclaimer

The code in this repository is a product of reverse engineering for educational purposes only. The original authors of the Stuxnet worm are anonymous, but the reconstruction contained herein is the work of independent security researchers.

The authors do not claim ownership of the original malware.

The code is provided "AS IS" without warranty of any kind.

The authors are not responsible for any misuse or damage caused by this code.

By using this repository, you acknowledge that you are solely responsible for ensuring compliance with all applicable laws and regulations.

Acknowledgements

This research and reconstruction would not have been possible without the extensive analysis and threat intelligence provided by global cybersecurity vendors.

Symantec (W32.Stuxnet dossier)

Kaspersky Lab (The Stuxnet saga)

ESET (Stuxnet under the microscope)

Amr Thabet and Christian Roggia (research-virus/stuxnet)

This is an academic reconstruction. Use it to build stronger defenses, not to cause harm.

Stuxnet (Sadpainy/Stuxnet)

Searching Database…

这是什么?这是 Stuxnet 的重构源代码。Stuxnet 是 2010 年那款破坏西门子工业控制系统的著名蠕虫,作者基于逆向工程研究把它重建出来,用于教学和恶意软件分析。
这是真正的 Stuxnet 二进制文件,还是基于研究的重现?它是重现版本:C 源码取自反编译的二进制样本和公开的威胁情报报告,被重新组织成可读的模块(加载器、S7 钩子库、rootkit 驱动、PLC 载荷),而不是原始泄露的恶意软件。
怎么构建和分析它?克隆仓库,用 Visual Studio 2019/2022 或 mingw-w64 构建用户态模块(投递器、S7 钩子库);内核驱动需要 Windows Driver Kit(WDK)7600。分析应在隔离的虚拟机里进行,用上 IDA Pro、Ghidra、Process Monitor 和 Wireshark 等工具。
除了源码本身还需要什么?你需要面向 Windows XP/Windows 7 的构建目标来保证驱动兼容性,还需要 WDK 7600 来编译内核态 rootkit 驱动(mrxcls.sys、mrxnet.sys)。
在真实机器上运行它安全吗?不安全。作者明确表示它只为在受控虚拟环境中做静态分析和调试而设计,不能部署到任何真实系统上,而且它的范围仅限于旧版 Windows XP/7 驱动兼容性。
它面向哪些人?恶意软件分析师、ICS/SCADA 防御研究人员,以及研究高级持续性威胁和逆向工程的学生,而不是真实工业设备的操作人员。
目标代码运行在哪些平台上?载荷和驱动专门为 Windows XP 和 Windows 7 构建,与原始 Stuxnet 的目标环境一致。
这个恶意软件实际上攻击什么?它攻击西门子 SIMATIC WinCC、Step 7 软件和 S7-300/400 PLC,拦截 s7blkwrite 调用,向 OB1/OB35 块注入代码并操纵变频器驱动,在真实事件中曾造成离心机转子的物理损坏。
它是怎么传播和隐藏自己的?传播途径包括受感染的 U 盘(LNK 漏洞利用)、网络打印后台处理程序共享和对等网络;隐蔽性来自内核 rootkit 驱动(MRxCls.sys、MRxNet.sys),它们利用 SSDT 钩子隐藏文件、进程和注册表键。
仓库把蠕虫拆成了哪些模块?核心组件包括加载器/投递器、针对 Win32k.sys 的提权漏洞利用、拦截 PLC 通信的 S7/Step7 钩子库、两个 rootkit 驱动,以及负责变频篡改攻击的 s7plcmain 载荷。
这次重构的技术细节来自哪里?它建立在公开的威胁情报研究之上,包括 Symantec 的 W32.Stuxnet 报告、卡巴斯基实验室的 Stuxnet 连载、ESET 的分析,以及独立研究人员 Amr Thabet 和 Christian Roggia 的成果。
Creator
Sadpainy
Size
5.5 MB
Stars
588
Updated
CommitOct 16
Age
1mo
Commits · 90 Days