
Un bootkit de preuve de concept et une application de démarrage UEFI inspirés du rançongiciel Petya, écrits en Assembly, C et C++.
Un bootkit Proof-of-Concept et une application de démarrage UEFI inspirés du rançongiciel Petya, écrits en Assembly, C et C++
Si vous trouvez ce projet utile ou instructif, je vous serais vraiment reconnaissant de laisser une ⭐ sur le dépôt. Votre soutien serait une grande motivation pour moi afin de continuer à améliorer cet outil.
OpenPetya est un projet éducatif conçu pour étudier le fonctionnement interne des bootkits et des rançongiciels de 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 Command-and-Control (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 aux mécanismes de bootloader et de cryptographie de base implémentés dans ce projet. Cependant, vous pouvez toujours modifier ou supprimer ces fonctionnalités si nécessaire.
Remarque : Dans la version 2.0.0, j'ai choisi de ne pas l'implémenter pour UEFI par crainte qu'il ne soit utilisé à mauvais escient pour endommager les systèmes d'exploitation Windows modernes.
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 comment le processus de démarrage sous-jacent fonctionne réellement.
De plus, de nombreux projets existants liés à Petya s'appuient sur des binaires de bootloader extraits ou des composants d'origine 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 de bas niveau et les mécanismes internes des systèmes d'exploitation.
Articles connexes :
Dans la version 2.0.0, j'ai été curieux de savoir comment fonctionnent les bootkits modernes (comme couvert dans les derniers chapitres de « Rootkits and Bootkits » d'Alex Matrosov, Eugene Rodionov et Sergey Bratus). J'ai donc décidé d'étudier la programmation d'applications EFI à partir de zéro. J'ai ensuite découvert que c'était beaucoup plus difficile que prévu (en termes de débogage).
Quoi qu'il en soit, après avoir écrit quelques applications EFI simples, j'ai publié OpenPetya v2.0.0 !
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 d'origine, 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 afin d'éviter une corruption irréversible causée par des clés invalides.
Restauration automatique
Une fois le mot de passe correct saisi :
OpenPetya v2.0.0 n'inclut PAS le chiffrement MFT dans l'application EFI personnalisée (petya.efi). Il propose un simple panneau de connexion et effectue un chainloading une fois le mot de passe correct.
J'ai choisi de ne pas implémenter le chiffrement MFT dans l'application EFI car il pourrait être utilisé à mauvais escient pour endommager les systèmes d'exploitation Windows modernes, alors que je l'ai implémenté dans la v1.0.0 puisque les acteurs malveillants l'avaient déjà démontré en 2016.
OpenPetya.exeApplication de contrôle et d'installation en mode utilisateur.
Fonctions :
mbr.binCode du Master Boot Record (MBR) personnalisé responsable de :
stage2.binLa charge utile principale d'OpenPetya.
Responsabilités :
petya.efiLa charge utile principale d'OpenPetya.
Fonctions :
Le flux de travail d'OpenPetya (MBR + Bootloader) est résumé ci-dessous.
OpenPetya.exe et choisissent un mot de passe.NtRaiseHardError) fourni par l'installateur.Contrairement au rançongiciel Petya d'origine, 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 purement à des fins éducatives et de recherche.
Le flux de travail d'OpenPetya (UEFI) est résumé ci-dessous :
Vous pouvez compiler le projet à l'aide des commandes ci-dessous.
make # Compile mbr.bin et stage2.bin
./build.sh # Compile OpenPetya.exe
Avertissement : Veuillez l'exécuter 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) :
BIOS hérité :
OpenPetya.exe --list
OpenPetya.exe --drive 0 --install mbr.bin stage2.bin
UEFI :
OpenPetya.exe --is-admin
OpenPetya.exe --firmware
OpenPetya.exe --uefi-secure
OpenPetya.exe --drive 0 --uefi-install petya.efi
OpenPetya.exe --drive 0 --uefi-restore
Des explications détaillées sur :
NtRaiseHardError)Sont documentées dans cet article.
Ce projet a été développé purement à des fins éducatives et de recherche.
L'objectif 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 utilisation abusive de ce logiciel.
Merci d'avoir consulté ce projet. Les retours et suggestions sont les bienvenus.