
Ricostruzione educativa del worm Stuxnet per l'analisi malware e la ricerca difensiva. Include moduli per l'escalation dei privilegi, funzionalità rootkit e iniezione di payload PLC mirati ai PLC Siemens Step 7 e S7.
Questo repository contiene una ricostruzione strettamente educativa e orientata alla ricerca del famigerato worm Stuxnet. È il prodotto di innumerevoli ore di lavoro di reverse engineering condotto dalla comunità globale di ricercatori di sicurezza sui campioni binari originali scoperti nel 2010.
Disclaimer: Questo codice è fornito esclusivamente per studio accademico, formazione sull'analisi di malware e ricerca difensiva. Non è destinato a essere utilizzato per scopi dannosi, né è un malware distribuibile. Gli autori e i contributori non approvano attività illegali o non etiche.
Indice
Panoramica
Componenti Principali
Architettura Tecnica
Istruzioni di Build
Utilizzo
Aspetti Legali e Licenza
Riconoscimenti
Stuxnet è ampiamente riconosciuto come la prima cyber-arma conosciuta progettata per causare distruzione fisica ai sistemi di controllo industriale (ICS). Prendeva di mira specificamente il software Siemens Step 7 e i PLC S7-300/400, manipolando infine i convertitori di frequenza per danneggiare i rotori delle centrifughe.
Questo repository è un codice sorgente ricostruito derivato dai binari decompilati. Preserva la logica originale e i vettori di attacco, strutturando al contempo il codebase per leggibilità e analisi.
Caratteristiche Principali
Target: Siemens SIMATIC WinCC, Step 7 e PLC S7.
Propagazione: Unità USB (exploit LNK), condivisioni di rete (Print Spooler), Peer-to-Peer (P2P).
Payload: Modifica della logica dei blocchi PLC (OB1/OB35) per alterare le frequenze dei motori.
Stealth: Capacità avanzate di Rootkit (MRxCls.sys, MRxNet.sys) per il nascondimento di file, processi e chiavi di registro.
Il repository è organizzato in base ai moduli primari identificati durante l'analisi del malware originale.
Modulo: Loader/Dropper Nome file: winsta.exe, ~WTR4141.tmp Descrizione: Punto di ingresso responsabile dell'infezione iniziale, dell'escalation dei privilegi e della distribuzione di altri componenti.
Modulo: Escalation dei Privilegi Nome file: ~WTR4132.tmp Descrizione: Sfrutta la vulnerabilità di Win32k.sys per ottenere privilegi a livello di sistema.
Modulo: Libreria di Hook S7 Nome file: s7otbxdx.dll Descrizione: Sostituzione dannosa della s7otbxsx.dll originale. Intercetta la comunicazione tra Step 7 e il PLC.
Modulo: Libreria di Hook Step7 Nome file: s7aaapix.dll Descrizione: Intercetta le chiamate API AUT (Automation Tool) all'interno dell'ambiente di ingegneria Step 7.
Modulo: Rootkit (File System) Nome file: mrxcls.sys Descrizione: Driver in modalità kernel utilizzato per nascondere file, processi e chiavi di registro di Stuxnet tramite hooking SSDT.
Modulo: Rootkit (Rete) Nome file: mrxnet.sys Descrizione: Filtra le richieste del file system per nascondere file dannosi e abilita la propagazione P2P.
Modulo: Payload (Attacco) Nome file: s7plcmain Descrizione: La logica principale responsabile dell'attacco di "Manomissione della Frequenza" che danneggia le centrifughe.
Quanto segue descrive il flusso di esecuzione ad alto livello del framework Stuxnet.
Fase 1: Vettore di Infezione Iniziale (USB/Rete) Fase 2: Dropper ed Escalation Fase 3: Controllo dell'Ambiente Fase 4a: Target Trovato (Software Siemens) -> Installazione Hook S7 Fase 4b: Non-target -> Auto-distruzione/Inattività Fase 5: Monitoraggio delle Scritture PLC Fase 6: Rilevamento Scrittura OB1/OB35 -> Iniezione Payload Fase 7: Modifica dell'Output di Frequenza Fase 8: Danno Fisico alle Centrifughe Fase 9: Installazione Rootkit (MRxCls) Fase 10: Nascondere File e Registro Fase 11: Caricamento Modulo di Rete (MRxNet) Fase 12: Propagazione P2P
Flusso di Esecuzione
Ricognizione dell'Ambiente: Il worm verifica la presenza di specifici software Siemens (WinCC, Step 7) e di specifici PLC target (S7-315, S7-417).
Iniezione DLL: Intercetta la chiamata di funzione s7blk_write.
Iniezione di Codice: Quando un utente scarica un progetto sul PLC, il codice dannoso viene aggiunto ai blocchi OB1/OB35.
Impatto Fisico: Il PLC esegue il codice manipolato, causando la rotazione dei variatori di frequenza (VFD) collegati a frequenze anomale (alte/basse), con conseguente danno meccanico.
Istruzioni di Build
Importante: Questo codebase è progettato per l'analisi statica e il debug in un ambiente virtuale controllato. Non è destinato alla distribuzione live su alcuna infrastruttura critica.
Requisiti
Ambiente di Build: Microsoft Visual Studio 2019/2022 (Windows) o mingw-w64.
Sistema Operativo Target: Windows XP / Windows 7 (per la compatibilità dei driver).
Driver Kit: Windows Driver Kit (WDK) 7600 (se si compilano driver kernel).
Compilazione dei Moduli in User-Mode
Clonare il repository
git clone https://github.com/Sadpainy/Stuxnet.git cd stuxnet-analysis
Compilare il dropper principale
cd winsta nmake /f Makefile.win
Compilare la libreria di hook S7
cd ../s7otbxdx cl /LD s7otbxdx.c user32.lib ws2_32.lib
Questo codice è destinato a:
Analisi di Malware: Comprendere la logica di codice specifica utilizzata nelle minacce persistenti avanzate (APT).
Ricerca Difensiva: Sviluppare firme di rilevamento per strumenti di sicurezza ICS (ad es., regole YARA, firme Snort).
Studio Accademico: Esaminare l'intersezione tra cybersecurity e protezione delle infrastrutture critiche.
Setup di Analisi
Ambiente Isolato: Utilizzare una macchina virtuale (VMWare/VirtualBox) con rete Host-Only abilitata. Disabilitare la connettività Internet.
Caricare i Moduli: Analizzare i file .dll e .sys utilizzando strumenti come IDA Pro, Ghidra o x64dbg.
Monitorare l'Attività: Utilizzare Process Monitor (ProcMon), Process Hacker e Wireshark per osservare il comportamento.
Aspetti Legali e Licenza
Questo progetto è concesso in licenza secondo la GNU General Public License v3.0. Vedere il file LICENSE per i dettagli.
Il codice in questo repository è un prodotto di reverse engineering esclusivamente per scopi educativi. Gli autori originali del worm Stuxnet sono anonimi, ma la ricostruzione qui contenuta è opera di ricercatori di sicurezza indipendenti.
Gli autori non rivendicano la proprietà del malware originale.
Il codice è fornito "COSÌ COM'È" senza garanzia di alcun tipo.
Gli autori non sono responsabili di qualsiasi uso improprio o danno causato da questo codice.
Utilizzando questo repository, riconosci di essere l'unico responsabile di garantire la conformità con tutte le leggi e i regolamenti applicabili.
Questa ricerca e ricostruzione non sarebbe stata possibile senza l'ampia analisi e l'intelligence sulle minacce fornite dai vendor globali di cybersecurity.
Symantec (dossier W32.Stuxnet)
Kaspersky Lab (La saga di Stuxnet)
ESET (Stuxnet sotto il microscopio)
Amr Thabet e Christian Roggia (research-virus/stuxnet)
Questa è una ricostruzione accademica. Usala per costruire difese più forti, non per causare danni.