
Un bootkit Proof-of-Concept inspiré par le ransomware Petya, écrit en Assembly, C et C++
Un Proof-of-Concept de bootkit inspiré du rançongiciel Petya, écrit en Assembly, C et C++
Si vous trouvez ce projet utile ou instructif, j'apprécierais vraiment une ⭐ sur le dépôt. Votre soutien serait une grande motivation pour continuer à améliorer cet outil.
OpenPetya est un projet éducatif conçu pour étudier le fonctionnement interne des bootkits et des rançongiciels bas niveau.
Le projet se concentre sur :
OpenPetya n'est PAS destiné à être une réimplémentation exacte de Petya ou de NotPetya. Il s'agit plutôt d'un Proof-of-Concept simplifié conçu à des fins d'apprentissage et de recherche.
Il convient de mentionner qu'OpenPetya n'inclut pas de fonctionnalité de commande et contrôle (C2). De plus, OpenPetya stocke les données de sauvegarde MFT en clair dans des secteurs cachés après le chiffrement. Ce comportement est intentionnellement conçu à des fins éducatives car ces fonctionnalités sont relativement triviales par rapport au noyau du bootloader et aux mécanismes cryptographiques implémentés dans ce projet. Cependant, vous pouvez toujours modifier ou supprimer ces fonctionnalités si nécessaire.
Au cours des derniers mois, j'ai étudié :
En recherchant Petya et NotPetya, j'ai réalisé que de nombreuses ressources en ligne n'expliquent que brièvement le flux de travail global sans démontrer le fonctionnement réel du processus de démarrage sous-jacent.
De plus, de nombreux projets existants liés à Petya s'appuient sur des binaires de bootloader extraits ou des composants originaux modifiés plutôt que d'implémenter la logique à partir de zéro.
Par conséquent, j'ai décidé de développer OpenPetya comme un projet pratique pour comprendre :
Le projet fait également partie de mes recherches en cours sur les bootkits, les logiciels malveillants bas niveau et les internes des systèmes d'exploitation.
Articles connexes :
MBR personnalisé
OpenPetya utilise un Master Boot Record (MBR) personnalisé pour charger la charge utile de deuxième étape.
Bootloader personnalisé de deuxième étape
Le bootloader de deuxième étape contient les fonctionnalités principales du projet, notamment :
Transition vers le mode protégé
Le bootloader passe du mode réel 16 bits au mode protégé 32 bits avant d'exécuter la logique de plus haut niveau.
Chiffrement MFT
Comme le Petya original, OpenPetya chiffre les parties critiques de la Master File Table (MFT) NTFS à l'aide de Salsa20.
Validation du mot de passe
OpenPetya valide le mot de passe saisi avant le déchiffrement pour éviter une corruption irréversible causée par des clés invalides.
Restauration automatique
Une fois le mot de passe correct saisi :
OpenPetya.exeApplication installateur et contrôleur en mode utilisateur.
Fonctions :
mbr.binCode MBR (Master Boot Record) personnalisé responsable de :
stage2.binLa charge utile principale d'OpenPetya.
Responsabilités :
Le flux de travail d'OpenPetya est résumé ci-dessous.
Les utilisateurs installent OpenPetya à l'aide de OpenPetya.exe et choisissent un mot de passe.
La machine est redémarrée manuellement ou via le mécanisme BSOD (via NtRaiseHardError) fourni par l'installateur.
Pendant le démarrage, le MBR personnalisé charge la charge utile de deuxième étape.
La charge utile de deuxième étape bascule le CPU en mode protégé.
OpenPetya chiffre les parties sélectionnées de la Master File Table (MFT) NTFS.
Après le chiffrement, la machine redémarre à nouveau.
Une interface au moment du démarrage invite l'utilisateur à saisir le mot de passe.
Si le mot de passe est correct :
Windows démarre normalement à nouveau.
Contrairement au rançongiciel Petya original, OpenPetya ne tente pas de tromper les utilisateurs avec de faux écrans CHKDSK ou des comportements d'ingénierie sociale. Le projet est conçu uniquement à des fins éducatives et de recherche.
Vous pouvez construire le projet en utilisant les commandes ci-dessous.
make # Construire mbr.bin et stage2.bin
./build.exe # Construire OpenPetya.exe
Avertissement : Exécutez-le dans votre machine virtuelle !
Les commandes ci-dessous montrent comment installer le MBR personnalisé et le bootloader de deuxième étape (des privilèges d'administrateur sont requis) :
OpenPetya.exe --list
OpenPetya.exe --drive 0 --install mbr.bin stage2.bin
Des explications détaillées sur :
NtRaiseHardError)Sont documentées dans cet article.
Ce projet a été développé uniquement à des fins éducatives et de recherche.
Le but d'OpenPetya est d'étudier :
N'utilisez PAS ce projet pour des activités illégales ou contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas explicitement l'autorisation de tester.
L'auteur n'est PAS responsable de toute mauvaise utilisation de ce logiciel.
Merci d'avoir consulté ce projet. Les commentaires et suggestions sont les bienvenus.