
OpenPetya v2.0.0
Ein Proof-of-Concept-Bootkit und eine UEFI-Boot-Anwendung, inspiriert von der Petya-Ransomware, geschrieben in Assembly, C und C++.
OpenPetya
Ein Proof-of-Concept-Bootkit und UEFI-Boot-Anwendung, inspiriert von der Petya-Ransomware, geschrieben in Assembly, C und C++
Wenn Sie dieses Projekt hilfreich oder informativ finden, würde ich mich über einen ⭐ auf dem Repository sehr freuen. Ihre Unterstützung wäre eine große Motivation für mich, dieses Tool weiter zu verbessern.
Überblick
OpenPetya ist ein Bildungsprojekt, das dazu dient zu untersuchen, wie Bootkits und Low-Level-Ransomware intern funktionieren.
Das Projekt konzentriert sich auf:
- benutzerdefiniertes MBR-Bootloading
- mehrstufigen Boot-Prozess
- Wechsel in den Protected Mode
- NTFS-Master-File-Table (MFT)-Verschlüsselung
- Salsa20-basierte Kryptografie
- Passwortvalidierung und Wiederherstellungsworkflow
- UEFI-Programmierung
OpenPetya ist NICHT als exakte Neuimplementierung von Petya oder NotPetya gedacht. Stattdessen handelt es sich um ein vereinfachtes Proof-of-Concept, das für Lern- und Forschungszwecke entwickelt wurde.
Es ist erwähnenswert, dass OpenPetya keine Command-and-Control (C2)-Funktionalität enthält. Darüber hinaus speichert OpenPetya Klartext-MFT-Backup-Daten in versteckten Sektoren nach der Verschlüsselung. Dieses Verhalten ist absichtlich für Bildungszwecke konzipiert, da diese Funktionen im Vergleich zu den in diesem Projekt implementierten Kern-Bootloader- und Kryptografiemechanismen relativ trivial sind. Sie können diese Funktionen jedoch bei Bedarf ändern oder entfernen.
Hinweis: In Version 2.0.0 habe ich mich entschieden, es nicht für UEFI zu implementieren, aus Sorge, dass es missbraucht werden könnte, um moderne Windows-Betriebssysteme zu beschädigen.
Projektmotivation
v1.0.0
In den letzten Monaten habe ich mich mit Folgendem beschäftigt:
- Malware-Analyse
- Bootloadern
- Rootkits und Bootkits
- Windows-Interna
- Grundlagen von Betriebssystemen
- Low-Level-Assembly-Programmierung
Bei der Recherche zu Petya und NotPetya ist mir aufgefallen, dass viele Online-Ressourcen den Gesamtablauf nur kurz erklären, ohne zu zeigen, wie der zugrunde liegende Boot-Prozess tatsächlich funktioniert.
Darüber hinaus basieren viele bestehende Petya-bezogene Projekte auf extrahierten Bootloader-Binärdateien oder modifizierten Originalkomponenten, anstatt die Logik von Grund auf neu zu implementieren.
Daher habe ich mich entschieden, OpenPetya als praktisches Projekt zu entwickeln, um Folgendes zu verstehen:
- wie benutzerdefinierte MBR-Bootkits funktionieren
- wie Stage-2-Bootloader arbeiten
- wie Festplattenverschlüsselungs-Workflows funktionieren
- wie Passwortvalidierungs- und Wiederherstellungsmechanismen implementiert werden
Das Projekt dient auch als Teil meiner laufenden Forschung zu Bootkits, Low-Level-Malware und Betriebssystem-Interna.
Verwandte Artikel:
- Analyzing Petya
- Analyzing NotPetya
- Simple MBR And Bootloader
- OpenBootloader
- Rootkits and Bootkits Notes
- PC Assembly Language Notes
- Serious Cryptography Notes
v2.0.0
In Version 2.0.0 wurde ich neugierig, wie moderne Bootkits funktionieren (wie in den letzten Kapiteln von „Rootkits and Bootkits" von Alex Matrosov, Eugene Rodionov und Sergey Bratus behandelt). Daher habe ich mich entschieden, die Programmierung von EFI-Anwendungen von Grund auf zu studieren. Ich habe dann festgestellt, dass es viel schwieriger war als erwartet (was das Debugging betrifft).
Wie auch immer, nachdem ich einige einfache EFI-Anwendungen geschrieben hatte, habe ich OpenPetya v2.0.0 veröffentlicht!
Funktionen
v1.0.0
-
Benutzerdefinierter MBR
OpenPetya verwendet einen benutzerdefinierten Master Boot Record (MBR), um die Stage-2-Payload zu laden.
-
Benutzerdefinierter Stage-2-Bootloader
Der Stage-2-Bootloader enthält die Kernfunktionalität des Projekts, einschließlich:
- Salsa20-Verschlüsselung/-Entschlüsselung
- Passwortvalidierung
- Wiederherstellungslogik
- Benutzeroberfläche
-
Wechsel in den Protected Mode
Der Bootloader wechselt vom 16-Bit-Real Mode in den 32-Bit-Protected Mode, bevor er die Logik auf höherer Ebene ausführt.
-
MFT-Verschlüsselung
Ähnlich wie beim ursprünglichen Petya verschlüsselt OpenPetya kritische Teile der NTFS-Master-File-Table (MFT) mit Salsa20.
-
Passwortvalidierung
OpenPetya validiert das eingegebene Passwort vor der Entschlüsselung, um irreversible Beschädigungen durch ungültige Schlüssel zu verhindern.
-
Automatische Wiederherstellung
Sobald das richtige Passwort eingegeben wurde:
- werden verschlüsselte Daten wiederhergestellt
- wird die ursprüngliche Boot-Kette wiederhergestellt
- entfernt sich OpenPetya automatisch
v2.0.0
OpenPetya v2.0.0 enthält KEINE MFT-Verschlüsselung in der benutzerdefinierten EFI-Anwendung (petya.efi). Es bietet ein einfaches Anmeldefenster und führt ein Chainloading durch, sobald das Passwort korrekt ist.
Ich habe mich entschieden, die MFT-Verschlüsselung in der EFI-Anwendung nicht zu implementieren, da sie missbraucht werden könnte, um moderne Windows-Betriebssysteme zu beschädigen, während ich sie in v1.0.0 implementiert habe, da Bedrohungsakteure dies bereits 2016 demonstriert hatten.
Komponenten
OpenPetya.exe
Benutzermodus-Installations- und Steuerungsanwendung.
Funktionen:
- Laufwerksauswahl
- Installation
- Neustartauslösung
- Dienstprogramm-Schnittstelle
mbr.bin
Benutzerdefinierter Master-Boot-Record (MBR)-Code, verantwortlich für:
- Stage-2-Laden
- frühe Boot-Ausführung
stage2.bin
Die Kern-Payload von OpenPetya.
Verantwortlichkeiten:
- Wechsel in den Protected Mode
- Salsa20-Kryptografieoperationen
- MFT-Verschlüsselung/-Entschlüsselung
- Passwortvalidierung
- Wiederherstellung
- Boot-Zeit-Schnittstelle
petya.efi
Die Kern-Payload von OpenPetya.
Funktionen:
- Passwortvalidierung
- Chainloading
Arbeitsablauf
BIOS
Der Arbeitsablauf von OpenPetya (MBR + Bootloader) ist unten zusammengefasst.
- Benutzer installieren OpenPetya mit
OpenPetya.exeund wählen ein Passwort. - Die Maschine wird manuell oder über den BSOD-Mechanismus (über
NtRaiseHardError), der vom Installationsprogramm bereitgestellt wird, neu gestartet. - Während des Bootens lädt der benutzerdefinierte MBR die Stage-2-Payload.
- Die Stage-2-Payload versetzt die CPU in den Protected Mode.
- OpenPetya verschlüsselt ausgewählte Teile der NTFS-Master-File-Table (MFT).
- Nach der Verschlüsselung startet die Maschine erneut.
- Eine Boot-Zeit-Schnittstelle fordert den Benutzer zur Eingabe des Passworts auf.
- Wenn das Passwort korrekt ist:
- werden verschlüsselte Daten entschlüsselt
- wird die ursprüngliche Boot-Kette wiederhergestellt
- entfernt sich OpenPetya automatisch
- Windows bootet wieder normal.
Im Gegensatz zur ursprünglichen Petya-Ransomware versucht OpenPetya nicht, Benutzer mit gefälschten CHKDSK-Bildschirmen oder Social-Engineering-Verhalten zu täuschen. Das Projekt ist rein für Bildungs- und Forschungszwecke konzipiert.
UEFI
Der Arbeitsablauf von OpenPetya (UEFI) ist unten zusammengefasst:
- Eine Boot-Zeit-Schnittstelle fordert den Benutzer zur Eingabe des Passworts auf.
- Wenn das Passwort korrekt ist:
- führt das System ein Chainloading durch
- Benutzer entfernen das benutzerdefinierte EFI-Programm manuell
Build
Sie können das Projekt mit den folgenden Befehlen erstellen.
make # Build mbr.bin and stage2.bin
./build.sh # Build OpenPetya.exe
Verwendung
Warnung: Bitte führen Sie es in Ihrer virtuellen Maschine aus!
Die folgenden Befehle zeigen, wie der benutzerdefinierte MBR und der Stage-2-Bootloader installiert werden (Administratorrechte erforderlich):
Legacy-BIOS:
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
Technische Hinweise
Detaillierte Erklärungen zu:
- MBR-Boot-Prozess
- Real Mode und Protected Mode
- Salsa20-Implementierung
- MFT-Verschlüsselungs-Workflow
- Bootkit-Design
- Weitere Diskussionen über Petya und NotPetya
- Verwendung undokumentierter APIs (wie
NtRaiseHardError)
sind in diesem Artikel dokumentiert.
Haftungsausschluss
Dieses Projekt wurde ausschließlich für Bildungs- und Forschungszwecke entwickelt.
Das Ziel von OpenPetya ist es, Folgendes zu untersuchen:
- Bootkits
- Betriebssystem-Interna
- Low-Level-Malware-Techniken
- Bootloader-Architektur
Verwenden Sie dieses Projekt NICHT für illegale Aktivitäten oder gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testberechtigung haben.
Der Autor ist NICHT verantwortlich für jeglichen Missbrauch dieser Software.
Demonstration (Windows 7)
Screenshots
Laufzeit-Demo
Zukunftspläne
- Verbesserter Wiederherstellungs-Workflow
- Besseres NTFS-Parsing
- Genauere Simulation des Petya-Verhaltens
- Zusätzliche Bootkit-Forschung
- Vollbild-Grafikmodus
- Linux-Unterstützung
Danksagung
Vielen Dank, dass Sie sich dieses Projekt angesehen haben. Feedback und Vorschläge sind willkommen.