Questa nuova variante di Petya si è diffusa inizialmente attraverso un aggiornamento di un software ucraino MEDoc per la gestione delle tasse.
L'utilizzo di vettore d'infezione attraverso software legittimi non è una cosa nuova, questa tecnica era gia stata utilizzata dal ransomware Cerber attraverso il software di amministrazione remota Ammyy nel 2016.
L'esecuzione del ransomware avveniva attraverso il software di aggiornamento MEDoc che eseguiva rundll32.exe passandogli come parametro il modulo del crypto-malware Petya.
Ora che il ransomware è attivo in memoria utilizza i seguenti vettori di infezione:
- Vulnerabilità EternalBlue (MS17-010)
- Utilizza le tecniche WMIC - PsExec
Il ransomware all'interno contiene anche l'utility della
SysInternal PsExec che permette l'esecuzione di programmi su sistemi remoti.
L'esecuzioni di programmi su sistemi remoti necessita delle credenziali dell'utente (user e password). Il ransomware usa un tool similare a Mimikatz per rubare le credeziali dell'utente e accedere ai computer della rete locale per infettarli attraverso PsExec e WMIC tool (wmic.exe).
Il malware scansiona la rete alla ricerca delle risorse condivise admin$ e vi copia il file del ransomware, che verrà eseguito in remoto via PsExec.
Invece WMIC (Windows Management Instrumentation Command) è utilizzato per scovare le risorse condivise e propagarsi attraverso le api NetEnum e NetAdd.
Cifratura di Eternal Petya fase 1: MBR / File
Se il ransomware dispone di diritti di administrator allora è in grado di infettare il Master Boot Record e di cifrare la Master File Table.
Il malware utilizza lo stesso approccio di Petya GoldenEye, prima infetta il Master Boot Record e al successivo riavvio cifra la Master File Table.
Nella versione precedente di Petya GoldenEye il riavvio del computer avveniva attraverso una schermata blue della morte (BSOD) generata da chiamata api che innalzava un'eccezione. In questa release l'autore del ransomware ha pensato di aggiungere un task, che dopo circa 1 ora esegue lo shutdown:
C:\WINDOWS\system32\shutdown.exe /r /f
Il dropper di Petya infetta il Master Boor Record del disco fisso sovrascrivendo i primi 36 settori, come rappresentato nello schema ==>
Il settore 0 dell'MBR è infettato dal codice di loader di Petya, come si può vedere in figura la lunghezza di questo codice è di 147 byte.
Dal settore 1 al 0x20 troviamo il codice virale di Petya.
|
|
Interessante è il settore 0x20:
Questo settore è strutturato in questo modo:
- Off. 0x00 (1 byte): stato del disco
- 0: disco da cifrare
- 1: disco cifrato
- 2: disco de-cifrato
- Off. 0x01 (32 byte): chiave utilizzata per la cifratura
- Off. 0x21 (8 byte): vettore di inizializzazione per la cifratura
- Off. 0x29 (128 byte): portafoglio in Bitcoin dove versare il riscatto
- Off. 0xa9 (90 byte): ID della vittima
Il settore 0x21, nella prima fase, è riempito solo con il byte 0x07.
Questo settore, nella fase 2 verrà cifrato e nella fase 3 sarà utilizzato per verificare la correttezza della chiave inserita.
|
 |
Il settore 0x22 contene il Master Boot Record cifrato con xor 0x07, come si può vedere nell'immagine a fianco.
Il settore 0x23, in questa fase contiene solo 0.
|
 |
Durante la fase 1, Eternal Petya non ha ancora iniziato a cifrare la Master File Table (MFT), ma ha solamente infettato il Master Boor Record.
Se il computer non è stato ancora riavviato è possibile spegnere il pc e riavviarlo da un CD\DVD bootabile di Windows per eseguire un "fixmbr" per rimuovere Petya dal Master Boot Record.
Se invece il computer viene riavviato o si è riavviato in automatico dovuto al task, allora verrà eseguito il boot loader dell'MBR infetto da Petya che darà inizio alla fase 2 della cifratura della Master File Table.
Cifratura file
Nel caso il ransomware venga eseguito senza i diritti di administrator, il malware non potrà infettare il Master Boot Record e procederà a cifrare i seguenti file di documenti:
3ds, 7z, accdb, ai, asp, aspx, avhd, back, bak, c, cfg, conf, cpp, cs, ctl, dbf, disk, djvu, doc, docx, dwg, eml, fdb, gz, h, hdd, kdbx, mail, mdb, msg, nrg, ora, ost, ova, ovf, pdf, php, pmf, ppt, pptx, pst, pvi, py, pyc, rar, rtf, sln, sql, tar, vbox, vbs, vcb, vdi, vfd, vmc, vmdk, vmsd, vmx, vsdx, vsv, work, xls, xlsx, xvd, zip |
Ai file cifrati non viene aggiunta nessuna nuova estensione, quindi rimangono con il loro nome originale. Per la cifratura dei file il ransomware utilizza l'algoritmo AES.
Cifratura di Eternal Petya fase 2: Master File Table
La fase 2 di
Eternal Petya è la stessa medesima di
Petya Goldeneye 4.0. Se il primo byte del settore 0x20, cioè quello del campo "stato del disco", vale 0, allora inizierà la procedura di cifratura della Master File Table di ogni partizione del disco. L'algoritmo di cifratura utilizzato è ancora
Salsa20.
In questa fase Petya visualizza un falso chkdsk che, in realtà, sta cifrando la Master File Table. La percentuale visualizzata indica la porzione di Master File Table cifrata.
In questa fase il settore 0x20 viene aggiornato:
Il primo byte del settore 0x20 viene aggiornato con il valore 1 (disco cifrato), e il 32 byte della chiave di cifratura vengono cancellati con zeri. Rimane intatto il valore del vettore di inizializzazione di 8 byte.
Invece il settore 0x21 risulterà anch'esso cifrato, come possiamo vedere in figura: |
 |
Nel settore 0x23 vi troviamo il numero di cluster cifrati, come possiamo vedere in figura: |
 |
Al termine della fase 2 della cifratura dell'MFT il computer verrà riavviato automaticamente da Petya.
Cifratura di Eternal Petya fase 3: richiesta riscatto
Al successivo boot,
Eternal Petya va a leggere il settore 0x20, e se il primo byte ("stato del disco") contiene il valore 1, allora visualizzerà la richiesta riscatto
Eternal Petya ci indica:
- la somma del riscatto di $300
- il portafoglio in Bitcoin
- l'indirizzo email dove inviare la ricevuta di pagamento
- l'ID della vittima
A questa punto
Petya rimane in attesa dell'inserimento della chiave per decifrare l'MFT.
La chiave da inserire manualmente è una stringa di 32 caratteri presi dal seguente insieme:
0123456789abcdef
Da questa chiave di 32 caratteri, Petya eseguirà ulteriori operazioni per ottenere una nuova chiave definitiva di 32 byte.
Petya per verificare la correttezza di ques'ultima chiave di 32 byte, ottenuta da quella inserita, proverà a decifrare il settore 0x21, se ogni byte del settore dopo la de-crifratura avrà il valore 0x07 allora la chiave che è stata inserita è corretta e procederà alla decifratura del'MFT.