Il 31 marzo scorso il C.R.A.M. di TG Soft aveva analizzato il funzionamento a basso livello di Petya Ransomware, la cui analisi può essere consultata dall'informativa: "
Petya Ransomware ai raggi X !!".
Vediamo ora come è possibile determinare la chiave utilizzata per la cifratura della MFT (Master File Table).
Abbiamo visto che la lunghezza della key inserita deve essere compresa tra 16 e 73 caratteri. Solo i caratteri compresi tra lo spazio ' ' asc(0x20) e la '~' asc (0x7e) saranno stampati a video.
Ma dalla key inserita vengono presi solo i primi 16 caratteri che appartengono al seguente insieme:
123456789abcdefghijkmnopqrstuvwxABCDEFGHJKLMNPQRSTUVWX
|
|
questa nuova key sarà chiamata Key da 16 byte: B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15
Dalla Key da 16 byte si ottiene una Key da 32 byte come rappresentato in figura:

La Key da 32 byte sarà utilizzata per decifrare da Petya.
Petya usa una versione "ibrida" di Salsa20. Esso crea una tabella "master" di partenza di 0x40 byte (come mostrata in figura), dove viene inizializzata con i seguenti valori:
- "expand 32-byte k"
- Key da 32 byte
- Vettore da 8 byte del settore 0x36
- 8 byte con valore 0
come vediamo da questo schema:
Dalla "Master Table" di 0x40 byte vengono create 2 tabelle (vettori) uguali di 0x20 byte: Tab_1 e Tab_2.
Tab_1 e Tab_2 sono ottenute prendendo la parte bassa (WORD) delle 16 DWORD della "Master Table".
In questo modo si andranno ad utilizzare solo i byte K0, K1, K4, K5, ..., K28, K29 della Key a 32 byte.
La Tab_1 sarà rimescolata dall'algoritmo di Salsa e sommata a 16 bit con la Tab_2 ottenendo una tabella di 16 DWORD contenenti le chiavi XOR per la cifratura (Tab_3).
Da questo si evince che Petya utilizza solo 8 dei 16 Byte inseriti nella chiave iniziale, questo ci perme di determinare in modo più agevole la chiave di cifratura utilizzata.
I byte della chiave utilizzati nell'algoritmo di cifratura saranno: B0, B2, B4, B6, B8, B10, B12, B14
In questo modo siamo passati da una chiave inserita di 16 Byte ad una chiave di 8 Byte, abbassando notevolmente il numero delle possibili combinazioni (548).
Con l'ausilio di tecniche di "Brute Force" o algoritmi geneteci sarà possibile determinare la chiave inserita e decriptare la Master File Table.
Aggiornamento del 11/04/2016: Il ricercatore Leo Stone ha realizzato un decodifcatore di Petya all'indirizzo: https://petya-pay-no-ransom.herokuapp.com/
Aggiornamento del 12/04/2016: Con l'aggiornamento
8.1.50 di VirIT (versione LITE e PRO) abbiamo rilasciato una nuova versione del modulo "Ninjavir" che permette di calcolare la chiave di cifratura utlizzata di Petya.
E' necessario collegare il disco infetto da Petya come secondario in un altro computer e installare la versione LITE (free) o PRO di VirIT.
La versione Lite di VirIT è scaricabile dalla pagina di
download.
Dopo aver installato VirIT e aggiornato alla 8.1.50 (dopo l'aggiornamento si consiglia di riavviare il pc).
Aprire un cmd (prompt del dos) con i diritti di administrator:
Dal prompt eseguire il comando:
c:\vexplite\ninjavir.exe /gui
Si aprirà il programma "Ninjavir", attendere qualche secondo per la sua inizializzazione.
Clickare sul menu "
Decoder->Petya Ransomware" e selezionare l'unità infetta da "Petya Ransomware". Ninjavir visualizzerà una finestra con la key utilizzata da Petya per la cifratura:
Autore: Ing. Gianfranco Tonello
Torna ad inizio pagina