
Reconstrução educacional do worm Stuxnet para análise de malware e pesquisa defensiva. Inclui módulos para escalonamento de privilégios, funcionalidade de rootkit e injeção de payload em PLCs, visando PLCs Siemens Step 7 e S7.
Este repositório contém uma reconstrução estritamente educacional e voltada à pesquisa do infame worm Stuxnet. É o produto de inúmeras horas de trabalho de engenharia reversa conduzido pela comunidade global de pesquisa em segurança sobre as amostras binárias originais descobertas em 2010.
Aviso: Este código é fornecido exclusivamente para estudo acadêmico, treinamento em análise de malware e pesquisa defensiva. Não se destina a ser usado para quaisquer fins maliciosos, nem é uma peça de malware implantável. Os autores e colaboradores não endossam atividades ilegais ou antiéticas.
Índice
Visão Geral
Componentes Principais
Arquitetura Técnica
Instruções de Compilação
Uso
Aspectos Legais e Licença
Agradecimentos
O Stuxnet é amplamente reconhecido como a primeira arma cibernética conhecida projetada para causar destruição física a sistemas de controle industrial (ICS). Ele visava especificamente o software Siemens Step 7 e os CLPs S7-300/400, manipulando, em última instância, os conversores de frequência para danificar os rotores das centrífugas.
Este repositório é um código-fonte reconstruído derivado dos binários descompilados. Ele preserva a lógica original e os vetores de ataque, ao mesmo tempo em que estrutura a base de código para legibilidade e análise.
Principais Características
Alvo: Siemens SIMATIC WinCC, Step 7 e CLPs S7.
Propagação: Unidades USB (explorações LNK), compartilhamentos de rede (Print Spooler), Peer-to-Peer (P2P).
Carga útil: Modificação da lógica de blocos do CLP (OB1/OB35) para alterar as frequências do motor.
Furtividade: Capacidades avançadas de Rootkit (MRxCls.sys, MRxNet.sys) para ocultação de arquivos, processos e chaves de registro.
O repositório é organizado pelos módulos primários identificados durante a análise do malware original.
Módulo: Loader/Dropper Nome do arquivo: winsta.exe, ~WTR4141.tmp Descrição: Ponto de entrada responsável pela infecção inicial, escalonamento de privilégios e implantação de outros componentes.
Módulo: Escalonamento de Privilégios Nome do arquivo: ~WTR4132.tmp Descrição: Explora a vulnerabilidade do Win32k.sys para obter privilégios de nível de sistema.
Módulo: Biblioteca de Hook do S7 Nome do arquivo: s7otbxdx.dll Descrição: Substituição maliciosa do s7otbxsx.dll original. Intercepta a comunicação entre o Step 7 e o CLP.
Módulo: Biblioteca de Hook do Step7 Nome do arquivo: s7aaapix.dll Descrição: Intercepta chamadas de API AUT (Automation Tool) dentro do ambiente de engenharia do Step 7.
Módulo: Rootkit (Sistema de Arquivos) Nome do arquivo: mrxcls.sys Descrição: Driver em modo kernel usado para ocultar arquivos, processos e chaves de registro do Stuxnet por meio de hooking de SSDT.
Módulo: Rootkit (Rede) Nome do arquivo: mrxnet.sys Descrição: Filtra solicitações do sistema de arquivos para ocultar arquivos maliciosos e permite a propagação P2P.
Módulo: Carga Útil (Ataque) Nome do arquivo: s7plcmain Descrição: A lógica central responsável pelo ataque de "Adulteração de Frequência" que danifica as centrífugas.
O seguinte descreve o fluxo de execução de alto nível da estrutura do Stuxnet.
Estágio 1: Vetor de Infecção Inicial (USB/Rede) Estágio 2: Dropper e Escalonamento Estágio 3: Verificação do Ambiente Estágio 4a: Alvo Encontrado (Software Siemens) -> Instalar Hooks do S7 Estágio 4b: Não-Alvo -> Autodestruição/Inatividade Estágio 5: Monitorar Gravações no CLP Estágio 6: Detectar Gravação em OB1/OB35 -> Injetar Carga Útil Estágio 7: Modificar a Saída de Frequência Estágio 8: Dano Físico às Centrífugas Estágio 9: Instalar Rootkit (MRxCls) Estágio 10: Ocultar Arquivos e Registro Estágio 11: Carregar Módulo de Rede (MRxNet) Estágio 12: Propagação P2P
Fluxo de Execução
Reconhecimento do Ambiente: O worm verifica a presença de software Siemens específico (WinCC, Step 7) e CLPs alvo específicos (S7-315, S7-417).
Injeção de DLL: Ele intercepta a chamada de função s7blk_write.
Injeção de Código: Quando um usuário baixa um projeto para o CLP, o código malicioso é anexado aos blocos OB1/OB35.
Impacto Físico: O CLP executa o código manipulado, fazendo com que os conversores de frequência variável (VFDs) conectados girem em frequências anormais (altas/baixas), resultando em danos mecânicos.
Instruções de Compilação
Importante: Esta base de código é projetada para análise estática e depuração em um ambiente virtual controlado. Não se destina à implantação ao vivo em qualquer infraestrutura crítica.
Requisitos
Ambiente de Compilação: Microsoft Visual Studio 2019/2022 (Windows) ou mingw-w64.
SO Alvo: Windows XP / Windows 7 (para compatibilidade de drivers).
Kit de Drivers: Windows Driver Kit (WDK) 7600 (se estiver compilando drivers de kernel).
Compilando os Módulos em Modo de Usuário
Clone o repositório
git clone https://github.com/Sadpainy/Stuxnet.git cd stuxnet-analysis
Compile o dropper principal
cd winsta nmake /f Makefile.win
Compile a biblioteca de hook do S7
cd ../s7otbxdx cl /LD s7otbxdx.c user32.lib ws2_32.lib
Este código se destina a:
Análise de Malware: Compreender a lógica de código específica usada em ameaças persistentes avançadas (APTs).
Pesquisa Defensiva: Desenvolver assinaturas de detecção para ferramentas de segurança de ICS (por exemplo, regras YARA, assinaturas Snort).
Estudo Acadêmico: Examinar a interseção entre segurança cibernética e proteção de infraestrutura crítica.
Configuração de Análise
Ambiente Isolado: Use uma máquina virtual (VMWare/VirtualBox) com rede Host-Only habilitada. Desative a conectividade com a internet.
Carregar Módulos: Analise os arquivos .dll e .sys usando ferramentas como IDA Pro, Ghidra ou x64dbg.
Monitorar Atividade: Use Process Monitor (ProcMon), Process Hacker e Wireshark para observar o comportamento.
Aspectos Legais e Licença
Este projeto é licenciado sob a GNU General Public License v3.0. Consulte o arquivo LICENSE para obter detalhes.
O código neste repositório é um produto de engenharia reversa para fins educacionais apenas. Os autores originais do worm Stuxnet são anônimos, mas a reconstrução contida aqui é o trabalho de pesquisadores de segurança independentes.
Os autores não reivindicam propriedade do malware original.
O código é fornecido "NO ESTADO EM QUE SE ENCONTRA", sem garantia de qualquer tipo.
Os autores não são responsáveis por qualquer uso indevido ou dano causado por este código.
Ao usar este repositório, você reconhece que é o único responsável por garantir a conformidade com todas as leis e regulamentos aplicáveis.
Esta pesquisa e reconstrução não teria sido possível sem a extensa análise e inteligência de ameaças fornecida por fornecedores globais de segurança cibernética.
Symantec (Dossiê W32.Stuxnet)
Kaspersky Lab (A saga do Stuxnet)
ESET (Stuxnet sob o microscópio)
Amr Thabet e Christian Roggia (research-virus/stuxnet)
Esta é uma reconstrução acadêmica. Use-a para construir defesas mais fortes, não para causar danos.