
Ein Proof-of-Concept-Bootkit und eine UEFI-Boot-Anwendung, inspiriert von der Petya-Ransomware, geschrieben in Assembly, C und C++.
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.
OpenPetya ist ein Bildungsprojekt, das dazu dient zu untersuchen, wie Bootkits und Low-Level-Ransomware intern funktionieren.
Das Projekt konzentriert sich auf:
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.
In den letzten Monaten habe ich mich mit Folgendem beschäftigt:
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:
Das Projekt dient auch als Teil meiner laufenden Forschung zu Bootkits, Low-Level-Malware und Betriebssystem-Interna.
Verwandte Artikel:
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!
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:
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:
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.
OpenPetya.exeBenutzermodus-Installations- und Steuerungsanwendung.
Funktionen:
mbr.binBenutzerdefinierter Master-Boot-Record (MBR)-Code, verantwortlich für:
stage2.binDie Kern-Payload von OpenPetya.
Verantwortlichkeiten:
petya.efiDie Kern-Payload von OpenPetya.
Funktionen:
Der Arbeitsablauf von OpenPetya (MBR + Bootloader) ist unten zusammengefasst.
OpenPetya.exe und wählen ein Passwort.NtRaiseHardError), der vom Installationsprogramm bereitgestellt wird, neu gestartet.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.
Der Arbeitsablauf von OpenPetya (UEFI) ist unten zusammengefasst:
Sie können das Projekt mit den folgenden Befehlen erstellen.
make # Build mbr.bin and stage2.bin
./build.sh # Build OpenPetya.exe
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
Detaillierte Erklärungen zu:
NtRaiseHardError)sind in diesem Artikel dokumentiert.
Dieses Projekt wurde ausschließlich für Bildungs- und Forschungszwecke entwickelt.
Das Ziel von OpenPetya ist es, Folgendes zu untersuchen:
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.
Vielen Dank, dass Sie sich dieses Projekt angesehen haben. Feedback und Vorschläge sind willkommen.