
OpenPetya v2.0.0
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++.
OpenPetya
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.
Aperçu
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 :
- le chargement personnalisé du MBR
- le processus de démarrage en plusieurs étapes
- la transition vers le mode protégé
- le chiffrement de la Master File Table (MFT) NTFS
- la cryptographie basée sur Salsa20
- la validation du mot de passe et le processus de restauration
- la programmation UEFI
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.
Motivation du projet
v1.0.0
Au cours des derniers mois, j'ai étudié :
- l'analyse de logiciels malveillants
- les bootloaders
- les rootkits et bootkits
- les mécanismes internes de Windows
- les fondamentaux des systèmes d'exploitation
- la programmation Assembly de bas niveau
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 :
- comment fonctionnent les bootkits MBR personnalisés
- comment fonctionnent les bootloaders de deuxième étape
- comment fonctionnent les flux de travail de chiffrement de disque
- comment sont implémentés les mécanismes de validation du mot de passe et de restauration
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 :
- Analyzing Petya
- Analyzing NotPetya
- Simple MBR And Bootloader
- OpenBootloader
- Rootkits and Bootkits Notes
- PC Assembly Language Notes
- Serious Cryptography Notes
v2.0.0
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 !
Fonctionnalités
v1.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 :
- le chiffrement/déchiffrement Salsa20
- la validation du mot de passe
- la logique de restauration
- l'interface utilisateur
-
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 :
- les données chiffrées sont restaurées
- la chaîne de démarrage d'origine est récupérée
- OpenPetya se supprime automatiquement
v2.0.0
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.
Composants
OpenPetya.exe
Application de contrôle et d'installation en mode utilisateur.
Fonctions :
- sélection du disque
- installation
- déclenchement du redémarrage
- interface utilitaire
mbr.bin
Code du Master Boot Record (MBR) personnalisé responsable de :
- le chargement de la deuxième étape
- l'exécution au début du démarrage
stage2.bin
La charge utile principale d'OpenPetya.
Responsabilités :
- transition vers le mode protégé
- opérations cryptographiques Salsa20
- chiffrement/déchiffrement MFT
- validation du mot de passe
- restauration
- interface au moment du démarrage
petya.efi
La charge utile principale d'OpenPetya.
Fonctions :
- validation du mot de passe
- chainloading
Flux de travail
BIOS
Le flux de travail d'OpenPetya (MBR + Bootloader) est résumé ci-dessous.
- Les utilisateurs installent OpenPetya à l'aide d'
OpenPetya.exeet 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 fait passer 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 demande le mot de passe à l'utilisateur.
- Si le mot de passe est correct :
- les données chiffrées sont déchiffrées
- la chaîne de démarrage d'origine est restaurée
- OpenPetya se supprime automatiquement
- Windows démarre normalement à nouveau.
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.
UEFI
Le flux de travail d'OpenPetya (UEFI) est résumé ci-dessous :
- Une interface au moment du démarrage demande le mot de passe à l'utilisateur.
- Si le mot de passe est correct :
- le système effectue un chainloading
- Les utilisateurs suppriment manuellement le programme EFI personnalisé
Compilation
Vous pouvez compiler le projet à l'aide des commandes ci-dessous.
make # Compile mbr.bin et stage2.bin
./build.sh # Compile OpenPetya.exe
Utilisation
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
Notes techniques
Des explications détaillées sur :
- le processus de démarrage MBR
- le mode réel et le mode protégé
- l'implémentation de Salsa20
- le flux de travail de chiffrement MFT
- la conception des bootkits
- d'autres discussions sur Petya et NotPetya
- comment utiliser des API non documentées (telles que
NtRaiseHardError)
Sont documentées dans cet article.
Avertissement
Ce projet a été développé purement à des fins éducatives et de recherche.
L'objectif d'OpenPetya est d'étudier :
- les bootkits
- les mécanismes internes des systèmes d'exploitation
- les techniques de logiciels malveillants de bas niveau
- l'architecture des bootloaders
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.
Démonstration (Windows 7)
Captures d'écran
Démo d'exécution
Projets futurs
- Flux de récupération amélioré
- Meilleure analyse NTFS
- Simulation plus précise du comportement de Petya
- Recherche supplémentaire sur les bootkits
- Mode graphique plein écran
- Prise en charge de Linux
Remerciements
Merci d'avoir consulté ce projet. Les retours et suggestions sont les bienvenus.