
Un bootkit Proof-of-Concept e applicazione di avvio UEFI ispirata al ransomware Petya, scritto in Assembly, C e C++.
Un bootkit Proof-of-Concept e un'applicazione di avvio UEFI ispirati al ransomware Petya, scritti in Assembly, C e C++
Se trovi questo progetto utile o informativo, apprezzerei davvero una ⭐ sul repository. Il tuo supporto sarebbe una grande motivazione per me per continuare a migliorare questo strumento.
OpenPetya è un progetto educativo progettato per studiare come funzionano internamente i bootkit e i ransomware di basso livello.
Il progetto si concentra su:
OpenPetya NON è pensato per essere una reimplementazione esatta di Petya o NotPetya. Invece, è un Proof-of-Concept semplificato progettato per scopi di apprendimento e ricerca.
Vale la pena menzionare che OpenPetya non include funzionalità di Command-and-Control (C2). Inoltre, OpenPetya memorizza i dati di backup MFT in chiaro all'interno di settori nascosti dopo la crittografia. Questo comportamento è progettato intenzionalmente per scopi educativi perché quelle funzionalità sono relativamente banali rispetto al bootloader principale e ai meccanismi crittografici implementati in questo progetto. Tuttavia, puoi comunque modificare o rimuovere queste funzionalità se necessario.
Nota: Nella versione 2.0.0, ho scelto di non implementarlo per UEFI per timore che potesse essere abusato per danneggiare i moderni sistemi operativi Windows.
Negli ultimi mesi, ho studiato:
Durante la ricerca su Petya e NotPetya, ho realizzato che molte risorse online spiegano solo brevemente il flusso di lavoro complessivo senza dimostrare come funziona effettivamente il processo di avvio sottostante.
Inoltre, molti progetti esistenti legati a Petya si affidano a binari di bootloader estratti o a componenti originali modificati piuttosto che implementare la logica da zero.
Pertanto, ho deciso di sviluppare OpenPetya come progetto pratico per comprendere:
Il progetto fa anche parte della mia ricerca in corso su bootkit, malware di basso livello e internals dei sistemi operativi.
Articoli correlati:
Nella versione 2.0.0, sono diventato curioso su come funzionano i bootkit moderni (come trattato negli ultimi capitoli di "Rootkits and Bootkits" di Alex Matrosov, Eugene Rodionov e Sergey Bratus). Pertanto, ho deciso di studiare la programmazione di applicazioni EFI da zero. Ho poi scoperto che era molto più difficile di quanto mi aspettassi (dal punto di vista del debug).
Comunque, dopo aver scritto alcune semplici applicazioni EFI, ho pubblicato OpenPetya v2.0.0!
MBR Personalizzato
OpenPetya utilizza un Master Boot Record (MBR) personalizzato per caricare il payload di stage-2.
Bootloader Stage-2 Personalizzato
Il bootloader di stage-2 contiene le funzionalità principali del progetto, tra cui:
Transizione alla Protected Mode
Il bootloader passa dalla Real Mode a 16 bit alla Protected Mode a 32 bit prima di eseguire la logica di livello superiore.
Crittografia MFT
Similmente al Petya originale, OpenPetya crittografa parti critiche della Master File Table (MFT) NTFS utilizzando Salsa20.
Validazione della Password
OpenPetya valida la password inserita prima della decrittografia per prevenire corruzioni irreversibili causate da chiavi non valide.
Ripristino Automatico
Una volta inserita la password corretta:
OpenPetya v2.0.0 NON include la crittografia MFT nell'applicazione EFI personalizzata (petya.efi). Offre un semplice pannello di accesso ed esegue il chainloading una volta che la password è corretta.
Ho scelto di non implementare la crittografia MFT nell'applicazione EFI perché potrebbe essere abusata per danneggiare i moderni sistemi operativi Windows, mentre l'ho implementata nella v1.0.0 poiché gli attori delle minacce l'avevano già dimostrata nel 2016.
OpenPetya.exeApplicazione di controllo e installazione in modalità utente.
Funzioni:
mbr.binCodice del Master Boot Record (MBR) personalizzato responsabile di:
stage2.binIl payload principale di OpenPetya.
Responsabilità:
petya.efiIl payload principale di OpenPetya.
Funzioni:
Il flusso di lavoro di OpenPetya (MBR + Bootloader) è riassunto di seguito.
OpenPetya.exe e scelgono una password.NtRaiseHardError) fornito dall'installer.A differenza del ransomware Petya originale, OpenPetya non tenta di ingannare gli utenti con schermate CHKDSK finte o comportamenti di ingegneria sociale. Il progetto è progettato puramente per scopi educativi e di ricerca.
Il flusso di lavoro di OpenPetya (UEFI) è riassunto di seguito:
Puoi compilare il progetto utilizzando i comandi seguenti.
make # Compila mbr.bin e stage2.bin
./build.sh # Compila OpenPetya.exe
Avviso: Eseguilo nella tua macchina virtuale!
I comandi seguenti mostrano come installare l'MBR personalizzato e il bootloader di stage-2 (è richiesto il privilegio di amministratore):
BIOS legacy:
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
Spiegazioni dettagliate su:
NtRaiseHardError)Sono documentate in questo articolo.
Questo progetto è stato sviluppato puramente per scopi educativi e di ricerca.
L'obiettivo di OpenPetya è studiare:
NON utilizzare questo progetto per attività illegali o contro sistemi che non possiedi o per i quali non hai esplicitamente il permesso di testare.
L'autore NON è responsabile per qualsiasi uso improprio di questo software.
Grazie per aver dato un'occhiata a questo progetto. Feedback e suggerimenti sono benvenuti.