TG Soft Security Software Specialist - Vir.IT eXplorer: AntiVirus-AntiSpyware-AntiMalware-AntiRansomware
Identifica virus/malwareIdentifica virus polimorfici grazie a DEEP SCANMacro Virus AnalyzerTecnologia INTRUSION DETECTIONTools rimozione virus/malwareInstallazione su Active DirectoryProtezione Real-Time 16/32/64 bitVir.IT Scan MailVir.IT Console Client/ServerVir.IT WebFilter ProtectionAggiornamenti automatici Live-UpdateVir.IT Personal FirewallAssistenza tecnica in lingua italianaCentro Ricerche Anti Malware


Attiva la tua Licenza Invia file sospetto Newsletter

fb rss linkedin twitter

ICSA Lab ICSA Lab

Vir.IT eXplorer PRO supera il test internazionale VB100 2019-02

AMTSO

OpsWat



EICAR Membro SERIT - Security Research in ITaly

31/03/2016 08:30:23 - Petya Ransomware ai raggi X !!!


In questi giorni abbiamo visto la nuova evoluzione dei Crypto-Malware con la cifratura a basso livello del disco ad opera del Petya Ransomware.
Il ransomware Petya sembrerebbe essere stato indviduato il 24 marzo dai ricercatori tedeschi di GData.

Il C.R.A.M. di TG Soft ha gia analizzato questa nuova tipologia di CryptoMalware chiamata Petya ransomware, la cui analisi sugli effetti è possibile leggerla dalla news "CryptoMalware 2.0 ==> PETYA ransomware l'evoluzione della specie...".

L'analisi "statica" che invece abbiamo eseguito,  ci ha permesso di approfondire il funzionamento a basso livello del Petya Ransomware.


CryptoMalware
CryptoMalware

INDICE



Esecuzione del sample infetto da PETYA


NOME FILE: Bewerbungsmappe-gepackt.exe
MD5: af2379cc4d607a45ac44d62135fb7015
DIMENSIONE: 230912 byte
CryptoMalware

Abbiamo eseguito il sample su un computer di test con Widows XP ITA.

All'esecuzione del file Bewerbungsmappe-gepackt.exe contenente il dropper del Petya, il computer si blocca visualizzando la schermata blu di BSOD (Blue Screen of Death) riportata quì a fianco.
La scherma BSOD visualizza un messaggio di errore in lingua italiana, molto probabilmente dovuto alla versione in italiano di Windows XP.

A questo punto il malware ha infettato l'MBR (Master Boot Record) del disco fisso e ha sovrascritto alcuni settori compressi tra l'MBR e il Boot Sector della partizione.

Petya CryptoMalware
In questa fase non ha ancora iniziato a cifrare l'MFT (Master File Table).


Disco infetto dopo l'esecuzione del dropper del Petya:

Il settore 0 dell'MBR è infettato dal codice di loader del Petya. La lunghezza di questo codice è di 147 byte.

I settori dall'1 al 0x21 sono cifrati con XOR 0x37.

Dal settore 0x22 al 0x35 troviamo il codice virale di Petya Ransomware.

Nel settore 0x36 vi troviamo la key utilizzata per la cifratura, un vettore, gli indirizzi Tor-Onion e l'ID della vittima.

Il settore 0x37 è utilizzato per la verifica della key, in questa fase ogni byte del settore contiene il valore 0x37.

Nel settore 0x38 vi troviamo l'MBR originale cifrato con XOR 0x37

Il settore 0x39 è vuoto, contiene solo zeri.

 

Settore 0x36
E' utile analizzare in modo più dettagliato il settore 0x36.
 



Struttura del settore 0x36:
off 0x0: 1 byte: valore che indica lo stato del disco
  • 0: disco da cifrare
  • 1: disco cifrato
  • 2: disco de-cifrato
off 0x01: (32 byte) key utilizzata per la cifratura
off 0x21: (8 byte) vettore utilizzato per la cifratura
off 0x29: (128 byte) indirizzi Tor-Onion per pagare il riscatto
off 0xa9: (90 byte) id vittima


In questo momento il disco o meglio la MFT (Master File Table) non è ancora stata cifrata.
Se il computer viene spento e riavviato da un cd bootable oppure collegato l'hard disk  come secondario ad un altro pc, è possibile rimuovere l'infezione con il comando FIXMBR senza perdere nessun dato.
Se invece il computer viene riavviato o acceso, il codice virale del Petya andrà a cifrare la Master File Table.


Petya: primo boot...

Vediamo ora che cosa avviene quando viene eseguito per la prima volta (il primo boot) l'MBR infetto da Petya.
Quando viene accesso il computer, il Bios andrà ad eseguire il codice contenuto nel settore 0 (MBR) del disco.
Il codice dell'MBR viene carico al seguente indirizzo: 0:7c00
L'MBR infetto da Petya va a leggere 0x20 settori partendo dal settore 0x22 e li carica all'indirizzo: 0:8000, dove salta a quell'indirizzo con un JMP.
Ora all'indirizzo 0:8000 avremo tutto il codice del Petya attivo in memoria.

La prima operazione che fa è quella di leggere le partizioni di tutti di dischi collegati e di memorizzarli in una tabella con la seguente struttura:
  • BYTE: drive (0x80+idx)
  • BYTE: 0/1
  • BYTE: 1
  • BYTE: ?
  • DWORD: fine partizione  (?)
A questo punto va leggere il settore 0x36 in memoria:



La funzione "sub_51b2"  è utilizzata per leggere o scrivere settori del disco.
Prototipo: (drive, indirizzo del buffer, (DWORD) settore assoluto,  num. di settori, 0/1)
L'ultimo parametro indica la lettura (0) o la scrittura (1).

A questo punto verifica il valore del primo byte del settore 0x36, cioè quella del campo "stato del disco".
Se vale 0 inizierà la procedura di cifratura, altrimenti visualizzerà le istruzioni del riscatto.

Essendo il primo boot, il codice virale troverà il valore 0, che indica che il Petya deve cifrare la Master File Table.

A questo punto inizia la fase cifratura, con la visualizzazione dei messaggi del falso chkdsk. Petya CryptoMalware

Vediamo in più in dettaglio questa fase di cifratura:

Step 1: lettura della key in memoria e sua cancellazione dal disco
  1. Petya legge nuovamente il settore 0x36 in memoria
  2. Imposta a 1 il valore del primo byte del settore 0x36 caricato in memoria (stato del disco)
  3. Copia la key da 32 byte in un buffer interno e azzera quella in memoria del settore 0x36
  4. Riscrive il settore 0x36 modificato

Settore 0x36 modificato:


A questo punto la key a 32 byte per la cifratura è presente solo in memoria.

Step 2: cifratura del settore 0x37

Ora Petya va a cifrare il settore 0x37 (che conteneva tutti i byte di valore 0x37) con la key a 32 byte (residente in memoria)
  1. Lettura del settore 0x37 in memoria 
  2. Cifratura del buffer in memoria del settore 0x37 con la key a 32 byte e il vettore a 8 byte (settore 0x36)
  3. Scrittura del settore 0x37 cifrato
La cifratura deI settore 0x37 permette a Petya di verificare se la chiave inserita è corretta.
Settore 0x37: prima della cifratura Settore 0x37: dopo la cifratura
   

Vediamo ora la funzione di cifratura:


La funzione "sub_54b2" è preposta alla cifratura attraverso la key a 32 byte e il vettore a 8 byte.
Il prototipo della funzione: (ptr Key a 32 byte, ptr vettore a 8 byte, 0/1, ptr buffer da cifrare, dimensione)
Nell'esempio viene cifrato il buffer dove è stato caricato il settore 0x37 la cui dimensione è di 512 byte.

La cifratura avviene attraverso la funzione XOR come mostrato da questo schema:


Petya 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
La tabella viene ri-elaborata attraverso varie funzioni, che per comodità abbiamo chiamato "Scramble", che va a rimescolare i valori in modo da ottenere 16 DWORD in questo formato: Word LO, Word HI, 0, 0. L'algoritmo utilizzato dallo "Scramble" è molto simile a SALSA20.

Il byte di indice 0 viene cifrato con XOR prendendo il byte di indice 0 della tabella di indice 0 ottenuta dallo "scramble" della tabella master.
Il byte di indice 1 viene cifrato con XOR prendendo il byte di indice 1 della tabella di indice 1 ottanuta dallo "scramble" della tabella di indice 0... e cosi via.
Ogni volta che viene chiamata la funzione "Scramble" viene re-impostata la tabella "master" e incrementato un suo indice interno, da cui si ottiene la nuova tabella.

Pseudo-codice:
for (j=0; j<n; j++) {

    if (j==0)
Table[0] = Scramble (Master Table)
    else
Table[j] = Scramble (Table[j-1])

    Buffer_Cipher[j] = Buffer_Src[j] XOR Table[j].[j & 0x3f]  
}



Step 3: Cifratura della Master File Table
  1. Scrittura del settore 0x39 con tutti zeri (lo ripete su tutti i dischi collegati)
  2. Lettura del Boot Sector
  3. Calcola la posizione dell'MFT sul disco
  4. Legge 2 settori dell'MFT
  5. Dal record con attributo 0x80 determina il numero totale di settori da cifrare e il settore assoluto da cui iniziare
  6. Cifratura dei settori dell'MFT con la key a 32 byte e il vettore a 8 byte (vengono cifrati 8 settori alla volta fino al raggiungimento del numero prestabilito)
  7. Scrittura del settore 0x39 con il numero totale dei cluster cifrati
  8. Reboot del computer
Nella figura sottostante è mostrato il settore 0x39 dove viene memorizzato il numero di cluster cifrati, in questo caso sono 0x1558 cluster (43712 settori, se 1 cluster = 8 settori).

A questo punto Petya ha cifrato la Master File Table e al successivo riavvio verrano visualizzate le istruzioni del riscatto.


Petya: secondo boot e successivi

Dal secondo avvio in poi, Petya visualizzerà le schermate relative al riscatto:

Petya CryptoMalware Petya CryptoMalware

Quando Petya leggerà il settore 0x36, questo inizierà con il valore 1 (stato del disco cifrato), che indica che l'MFT è gia stata cifrata.

Step 1: Visualizzazione informazioni del riscatto

  1. Visualizzazione della schermata del teschio (vedi figura sopra). Per continuare è necessario premere un tasto
  2. Lettura del settore 0x36 per le infromazioni dei siti Tor-Onion
  3. Visualizzazione delle informazioni del riscatto
  4. Richiesta di inserire la Key
A questo punto Petya rimane in attesa che la vittima inserisca la Key acquistata.

Step 2: Controllo della Key acquistata

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.

Dalla key inserita vengono presi i primi 16 caratteri che appartengono al seguente insieme:
123456789abcdefghijkmnopqrstuvwxABCDEFGHJKLMNPQRSTUVWX
questa nuova key sarà chiamata Key da 16 byte.
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.

Step 3: fase di decifrazione

Ottenuta la Key da 32 byte, Petya esegue le seguente operazioni:
  1. Lettura del settore 0x36 per leggere il vettore da 8 byte
  2. Lettura del settore 0x37
  3. Tramite la Key da 32 byte ottenuta e il vettore da 8 byte decifra il settore 0x37, se ogni byte del settore 0x37 ha valore 0x37 allora la key da 32 byte è esatta, nel caso contrario visualizza messaggio di "Invalid key!"
  4. Se la chiave è esatta, pone a 2 il primo byte del settore 0x36 e scrive la key da 32 byte nel medesimo settore.
  5. Decifra il master File Table (MFT)
  6. Legge il settore 0x38 dove è memorizzato l'MBR cifrato con XOR 0x37, dopo averlo decifrato lo scrive nel settore 0.
  7. Decifra i settori da 0x1 a 0x21 che erano cifrati con XOR 0x37
  8. In casi paricolari (se all'offset 0 x1b8 dell'MBR contiene la DWORD 0x37373737) allora decifra ulteriori settori sempre con XOR 0x37
  9. Al termine chiede di riavviare il computer
 



Posso recuperare l'accesso al disco ?

Abbiamo visto che Petya utilizza il settore 0x37 per verificare la correttezza della chiave inserita.
Dal settore 0x37 possiamo determinare i valori Bj-esimi delle Tabelle j-esime utilizzate per la cifratura:
 


Settore 0x37: cifrato Tabella con le 512 key xor ottenuta dal settore 0x37
   


Dalla tabella ottenuta con le 512 key xor possiamo decifrare solamente il primo settore dell'MFT cifrato da Petya. Per decifrare i settori successivi dell'MFT è necessario conoscere tutte le altre chiavi ottenute dalle tabelle calcolate con il metodo descritto precedentemente.
Avendo a disposizione però solamente un valore della Tabella[0] non è possibile risalire alla Tabella Master e di conseguenza alla Key da 32 byte.
Per motivi di tempo non possiamo approfondire l'analisi sul sistema di cifratura, anche se sarebbe stato interessante capire se c'e' la possibilità di predire i valori mancanti delle tabelle o le chiavi xor successive alla 512-esima.

Quindi se il malware ha cifrato l'MFT (Master File Table), per ora, non è possibile effettuare l'accesso al disco senza conoscere la chiave utilizzata per la cifratura.
La cifratura dell'MFT non comporta la cifratura dei file, ma solamente l'impossibilità di accedere al disco. Sarà possibile recuperare i file accedendo a basso livello al disco, ma questa operazione è molto lunga e costosa.

L'operazione FixMBR può essere eseguita solamente se l'MFT non è stato ancora cifrato. In questo caso possiamo riavviare il PC da un cd bootable oppure collegare l'hard disk  come secondario ad un altro computer, ed eseguire il comando FIXMBR per rimuovere l'infezione senza perdere nessun dato.

Nel caso venisse effettuato FixMBR con l'MFT cifrata, Windows non si caricherà correttamente segnalando il danneggiamento del disco ed inviterà all'utlizzo di utility tipo "chkdsk", il cui utilizzo potrebbe danneggiare ulteriormente l'MFT e rendere ancora più difficoltosa il recupero dei dati del disco anche dopo l'eventuale pagamento.

Qualche coraggioso potrebbe provare un attacco "Brute Force" sulla chiave Key da 32 byte, la quale è ottenuta da quella da 16 byte, ma il numero max delle possibili chiavi da 16 byte su un alfabeto di 54 elementi è 5416 in termini verbali oltre 5 quadriliardi un numero troppo elevato per i normali computer desktop.

Torna ad inizio pagina

Considerazioni finali

Con Petya Ransomware si è dato inizio ad una nuova evoluzione di Crypto-Malware che utilizzano funzioni a basso livello del disco per renderlo inutilizzabile e richiedere un riscatto. L'analisi ha messo in evidenza come "funziona"  Petya Ransomware a basso livello nelle diverse fasi di avvio, sarebbe stato interessante anche analizzare come il "dropper" calcola la Key da 32 byte e se vi siano comunicazioni con server di comando e controllo (C&C) per determinare un legame tra l'ID della vittima e la Key da 32 byte generata.

Questo tipo di attacco alla Master File Table rende molto difficoltoso il recupero dei dati. Anche nel caso che si possieda copie di backup dei propri dati, sarà necessario re-installare il sistema operativo e i relativi applicativi oltre al ripristino dei propri dati dalle copie di backup, con una notevole perdita di tempo di ore di lavoro.

Naturalmente invitiamo tutti a fare molta attenzione nell'aprire/eseguire gli allegati delle mail, anche se arrivano da un mittente noto o la navigazione su siti poco raccomandabili, e di eseguire sempre copie di backup anche su supporti staccati dal computer.
 


Autore: Ing. Gianfranco Tonello

Torna ad inizio pagina


Utilizzabilità delle informative e delle immagine in esse contenute

Ogni informazione pubblicata sul nostro sito può essere utilizzata e pubblicata su altri siti internet, blog, forum, facebook a patto che venga sempre e comunque citata la fonte "Fonte: C.R.A.M. by TG Soft www.tgsoft.it" con link cliccabile all'informativa e/o pagina web originale da cui sono stati estrapolati contenuti testuali, spunti e/o immagini. Inoltre per ogni immagine utilizzata dovrà essere sempre indicata la fonte ed il link cliccabile alla pagina originale dell'informativa di prima pubblicazione. Per quanto riguarda le pubblicazioni cartacee sarà necessario citare la fonte esplicitamente "Fonte: C.R.A.M. by TG Soft www.tgsoft.it" ed in analogia alle pubblicata elettroniche i link sotto ad ogni immagine alla pagina web originale da cui sono state estratte.

Sarà gradito nel caso di utilizzo dell'informativa del C.R.A.M. by TG Soft www.tgsoft.it nella relazione di articoli di sintesi il riconoscimento/ringraziamento di seguito "Si ringrazia il Centro Ricerche Anti-Malware C.R.A.M. by TG Soft di cui segnaliamo il link diretto all'informativa originale:[link diretto cliccabile]"

fb rss linkedin twitter
 




Legal & Eula | Privacy | Disinstallazione

TG Soft S.r.l. - via Pitagora 11/b, 35030 Rubàno (PD), ITALIA - C.F. e P.IVA 03296130283