Présentation du projet
Le dépôt GitHub Sadpainy/Stuxnet propose une reconstruction du code source de Stuxnet, le premier malware connu pour provoquer des dommages physiques sur des systèmes de contrôle industriels. Le projet se veut strictement éducatif ; il est accompagné d’un avertissement juridique qui interdit toute utilisation malveillante. Les contributeurs ont synthétisé les modules identifiés à partir des binaires découverts en 2010, afin de rendre la logique d’attaque exploitable pour la recherche en cybersécurité et la création de signatures de détection.
Architecture technique de Stuxnet
Le code est organisé en plusieurs modules : winsta.exe agit comme chargeur initial, déclenchant l’escalade de privilèges via un exploit de Win32k.sys. Deux pilotes noyau, MRxCls.sys et MRxNet.sys, implémentent respectivement un rootkit de système de fichiers et un filtre réseau, tous deux basés sur le hooking de la table SSDT. Les bibliothèques s7otbxdx.dll et s7aaapix.dll remplacent les DLL légitimes de Siemens pour intercepter les appels API du logiciel Step 7 et du serveur WinCC, permettant l’injection de code dans les blocs PLC OB1/OB35. Le module s7plcmain orchestre la modification de la fréquence des variateurs, entraînant la rupture mécanique des centrifugeuses.
Analyse des vecteurs d’infection et des mécanismes d’escalade
Stuxnet se propage via trois canaux : des clés USB contenant des fichiers LNK exploités, le partage réseau grâce à une vulnérabilité du service d’impression (Print Spooler) et un réseau peer‑to‑peer interne. Après la copie du chargeur, le composant d’escalade exploite une faille du pilote graphique Win32k.sys pour obtenir les privilèges système, condition indispensable à l’installation des pilotes MRxCls.sys et MRxNet.sys. Une fois les privilèges élevés, le malware effectue une reconnaissance d’environnement : il recherche les processus WinCC, Step 7 et les PLC Siemens S7‑315 ou S7‑417. En absence de cible, le code s’autodétruit ou reste inactif, limitant la surface d’exposition.
git clone https://github.com/Sadpainy/Stuxnet.git
cd stuxnet-analysis
cd winsta
nmake /f Makefile.win
cd ../s7otbxdx
cl /LD s7otbxdx.c user32.lib ws2_32.libImplications pour la défense des systèmes industriels
La disponibilité du code source facilite la génération de signatures YARA ou Snort précises, car chaque module possède des chaînes d’identification uniques (ex. : noms de fichiers ~WTR4141.tmp, ~WTR4132.tmp). Cependant, la complexité du rootkit kernel‑mode et le recours à des hooks SSDT exigent des outils de détection capables d’intercepter les appels système anormaux. Les analystes doivent reproduire l’environnement virtuel décrit (Windows XP/7, WDK 7600) pour observer les comportements de MRxCls.sys et MRxNet.sys dans Process Monitor ou Wireshark. Malgré la richesse des informations, le projet ne fournit pas de métriques de performance ni d’évaluation de la robustesse du code face à des contre‑mesures modernes, ce qui limite l’évaluation de son efficacité actuelle contre les systèmes mis à jour.