
Reconstrucción educativa del gusano Stuxnet para análisis de malware e investigación defensiva. Incluye módulos para escalada de privilegios, funcionalidad de rootkit e inyección de payloads en PLC dirigidos a Siemens Step 7 y PLCs S7.
Este repositorio contiene una reconstrucción estrictamente educativa y orientada a la investigación del famoso gusano Stuxnet. Es el producto de innumerables horas de trabajo de ingeniería inversa realizado por la comunidad global de investigadores de seguridad sobre las muestras binarias originales descubiertas en 2010.
Aviso legal: Este código se proporciona únicamente para estudio académico, formación en análisis de malware e investigación defensiva. No está destinado a ser utilizado con fines maliciosos, ni es una pieza de malware desplegable. Los autores y colaboradores no aprueban actividades ilegales o poco éticas.
Tabla de Contenidos
Descripción General
Componentes Principales
Arquitectura Técnica
Instrucciones de Compilación
Uso
Legal y Licencia
Agradecimientos
Stuxnet es ampliamente reconocido como el primer ciberarma conocido diseñado para causar destrucción física a los sistemas de control industrial (ICS). Se dirigía específicamente al software Siemens Step 7 y a los PLC S7-300/400, manipulando en última instancia los accionamientos de convertidores de frecuencia para dañar los rotores de las centrifugadoras.
Este repositorio es un código fuente reconstruido derivado de los binarios descompilados. Preserva la lógica original y los vectores de ataque, al tiempo que estructura el código base para facilitar su lectura y análisis.
Características Clave
Objetivo: Siemens SIMATIC WinCC, Step 7 y PLC S7.
Propagación: Unidades USB (exploits LNK), recursos compartidos de red (Print Spooler), Peer-to-Peer (P2P).
Carga útil: Modificación de la lógica de bloques del PLC (OB1/OB35) para alterar las frecuencias del motor.
Sigilo: Capacidades avanzadas de Rootkit (MRxCls.sys, MRxNet.sys) para ocultar archivos, procesos y claves de registro.
El repositorio está organizado por los módulos principales identificados durante el análisis del malware original.
Módulo: Loader/Dropper Archivo: winsta.exe, ~WTR4141.tmp Descripción: Punto de entrada responsable de la infección inicial, la escalada de privilegios y el despliegue de otros componentes.
Módulo: Escalada de Privilegios Archivo: ~WTR4132.tmp Descripción: Explota la vulnerabilidad de Win32k.sys para obtener privilegios a nivel de sistema.
Módulo: Biblioteca de Hooks S7 Archivo: s7otbxdx.dll Descripción: Reemplazo malicioso del s7otbxsx.dll original. Intercepta la comunicación entre Step 7 y el PLC.
Módulo: Biblioteca de Hooks Step7 Archivo: s7aaapix.dll Descripción: Intercepta las llamadas a la API de AUT (Automation Tool) dentro del entorno de ingeniería Step 7.
Módulo: Rootkit (Sistema de Archivos) Archivo: mrxcls.sys Descripción: Controlador en modo kernel utilizado para ocultar archivos, procesos y claves de registro de Stuxnet mediante el enganche de SSDT.
Módulo: Rootkit (Red) Archivo: mrxnet.sys Descripción: Filtra las solicitudes del sistema de archivos para ocultar archivos maliciosos y permite la propagación P2P.
Módulo: Carga Útil (Ataque) Archivo: s7plcmain Descripción: La lógica central responsable del ataque de "Manipulación de Frecuencia" que daña las centrifugadoras.
Lo siguiente describe el flujo de ejecución de alto nivel del framework Stuxnet.
Etapa 1: Vector de Infección Inicial (USB/Red) Etapa 2: Dropper y Escalada Etapa 3: Verificación del Entorno Etapa 4a: Objetivo Encontrado (Software Siemens) -> Instalar Hooks S7 Etapa 4b: No Objetivo -> Autodestrucción/Inactividad Etapa 5: Monitorizar Escrituras del PLC Etapa 6: Detectar Escritura OB1/OB35 -> Inyectar Carga Útil Etapa 7: Modificar Salida de Frecuencia Etapa 8: Daño Físico a las Centrifugadoras Etapa 9: Instalar Rootkit (MRxCls) Etapa 10: Ocultar Archivos y Registro Etapa 11: Cargar Módulo de Red (MRxNet) Etapa 12: Propagación P2P
Flujo de Ejecución
Reconocimiento del Entorno: El gusano verifica la presencia de software específico de Siemens (WinCC, Step 7) y de PLC objetivo específicos (S7-315, S7-417).
Inyección de DLL: Intercepta la llamada a la función s7blk_write.
Inyección de Código: Cuando un usuario descarga un proyecto al PLC, el código malicioso se añade a los bloques OB1/OB35.
Impacto Físico: El PLC ejecuta el código manipulado, lo que provoca que los accionamientos de frecuencia variable (VFD) conectados giren a frecuencias anormales (altas/bajas), resultando en daños mecánicos.
Instrucciones de Compilación
Importante: Este código base está diseñado para análisis estático y depuración en un entorno virtual controlado. No está destinado a su despliegue en vivo en ninguna infraestructura crítica.
Requisitos
Entorno de Compilación: Microsoft Visual Studio 2019/2022 (Windows) o mingw-w64.
SO Objetivo: Windows XP / Windows 7 (para compatibilidad de controladores).
Kit de Controladores: Windows Driver Kit (WDK) 7600 (si se compilan controladores de kernel).
Compilación de los Módulos en Modo Usuario
Clonar el repositorio
git clone https://github.com/Sadpainy/Stuxnet.git cd stuxnet-analysis
Compilar el dropper principal
cd winsta nmake /f Makefile.win
Compilar la biblioteca de hooks S7
cd ../s7otbxdx cl /LD s7otbxdx.c user32.lib ws2_32.lib
Este código está destinado a:
Análisis de Malware: Comprender la lógica de código específica utilizada en las amenazas persistentes avanzadas (APT).
Investigación Defensiva: Desarrollar firmas de detección para herramientas de seguridad ICS (por ejemplo, reglas YARA, firmas Snort).
Estudio Académico: Examinar la intersección entre la ciberseguridad y la protección de infraestructuras críticas.
Configuración del Análisis
Aislar el Entorno: Utilice una máquina virtual (VMWare/VirtualBox) con red Solo-Anfitrión (Host-Only) habilitada. Desactive la conectividad a Internet.
Cargar Módulos: Analice los archivos .dll y .sys utilizando herramientas como IDA Pro, Ghidra o x64dbg.
Monitorizar la Actividad: Utilice Process Monitor (ProcMon), Process Hacker y Wireshark para observar el comportamiento.
Legal y Licencia
Este proyecto está licenciado bajo la GNU General Public License v3.0. Consulte el archivo LICENSE para más detalles.
El código de este repositorio es un producto de ingeniería inversa con fines exclusivamente educativos. Los autores originales del gusano Stuxnet son anónimos, pero la reconstrucción contenida aquí es obra de investigadores de seguridad independientes.
Los autores no reclaman la propiedad del malware original.
El código se proporciona "TAL CUAL" sin garantía de ningún tipo.
Los autores no son responsables de ningún uso indebido o daño causado por este código.
Al utilizar este repositorio, usted reconoce que es el único responsable de garantizar el cumplimiento de todas las leyes y regulaciones aplicables.
Esta investigación y reconstrucción no habría sido posible sin el extenso análisis e inteligencia de amenazas proporcionados por los proveedores globales de ciberseguridad.
Symantec (Expediente W32.Stuxnet)
Kaspersky Lab (La saga Stuxnet)
ESET (Stuxnet bajo el microscopio)
Amr Thabet y Christian Roggia (research-virus/stuxnet)
Esta es una reconstrucción académica. Úsela para construir defensas más sólidas, no para causar daño.