Petya: ransomware che cifra il disco

Aggiornamento 03-04-2016: Modificato per aggiungere maggiori dettagli in merito allo schema di cifratura.


Petya è un nuovo ransomware con una particolare inclinazione al male: invece di cifrare i file, blocca l’intero disco, rendendolo praticamente inutilizzabile. In particolare, cifra la master file table (MFT) del file system, in modo che il sistema operativo non sia in grado di individuare i file. Si installa nel master boot record (MBR) del disco come un bootkit. Ma invece di mascherare le proprie azioni, mostra una schermata rossa con le istruzioni su come ripristinare il sistema.
Puntare all’MFT è un attacco veloce che richiede molto meno tempo che cifrare file di dati ma l’effetto complessivo è lo stesso: rendere i dati inaccessibili.

Petya, Premere un tasto!

Petya consiste di due fasi. La prima è il dropper principale, che:

  • infetta l’MBR utilizzando una diretta \\.\PhysicalDrive manipulation.
  • genera una serie di chiavi di cifratura, compresa una chiave casuale a 16 byte di cifratura del disco e una coppia di chiavi Elliptic Curve (EC). In questo momento viene creato anche il “codice di decifratura speciale”.
  • salva la chiave di cifratura del disco e il codice di decifratura per un uso successivo nel codice per infettare l’MBR. Tutti gli altri dati di cifratura generati vengono eliminati.
  • spegne la macchina senza alcun preavviso per effettuare il boot del codice MBR.

Petya utilizza uno schema di crittografia a curva ellittica per la cifratura a chiave asimmetrica e la distribuzione. Il dropper contiene una chiave pubblica a 192 bit e i parametri della curva secp192k1 hard coded nel binario. Petya prende la chiave pubblica del server e stabilisce uno shared secret utilizzando un algoritmo Elliptic Curve Diffie-Hellman (ECDH). Con questo shared secret, che solo il malware e il server possono utilizzare, il malware critta la chiave di cifratura del disco a 16 byte utilizzando AES.Questo viene cifrato insieme alla chiave pubblica del malware EC utilizzando uno schema di codifica binario-ascii Base58. Il risultato è il “codice di decifratura”, presentato in seguito sullo schermo rosso.

Petya physdrive

Manipolazione Physicaldrive del Dropper di Petya.

Petya server pubkey

Chiave pubblica ECC del server Petya distribuita col dropper.

Params ecc Petya

Parametri curva secp192k1 di Petya ditribuiti col dropper.

Chiave pubblica codifica Petya

Codifica ASCII della chiave pubblica ECC del dropper di Petya.

Chiave salsa20 generata da Petya

Petya dropper salsa20 bytes generation.

Dopo l’infezione la macchina effettua il boot del codice MBR,che:

  • si assicura che il disco sia stato infettato.
  • in caso contrario, presenterà una falsa schermata CHKDSK e cifrerà l’MFT utilizzando lo shared secret come chiave di cifratura.
  • utilizza salsa20 per la cifratura del disco e successivamente distrugge la chiave.
  • presenta la “schermata cranio” rosso e poi lo schermo con gli URL dell’hidden service di Tor e il “codice di decrittazione”, un messaggio cifrato che solo il server è in grado di aprire.
Ambiente di debug di Petya

Petya reversing environment.

cifratura_disco_petya

Falso CHKDSK del codice MBR di Petya; cifratura disco con salsa20.

Petya salsa20 expand32

Codice salsa20 dell’MBR di Petya.

Solo il server è in grado di ripristinare la chiave di cifratura, utilizzando l’algoritmo EC. Questo perché la chiave viene distrutta dal malware e anche se non lo fosse, la macchina è bloccata e rimane inutilizzabile. Anche il ripristino dell’MBR con il disco di ripristino non aiuterà, perché l’MFT è ancora cifrata. Teoricamente sarebbe possibile recuperare lo shared secret e decrittare la chiave di cifratura del disco con un disco di ripristino; ma dovrebbe essere disponibile la coppia di chiavi EC originale e tutti i dati EC necessari sono stati eliminati dal dropper. Sarebbe come possedere due chiavi per la casa e perdere la seconda di proposito!

Sul lato server, la decodifica del codice di decrittazione avviene presumibilmente in ordine inverso:

  • decodificare i dati binari codificati in base58
  • estrarre la chiave pubblica del malware e i dati cifrati
  • usare la chiave pubblica, stabilire lo shared secret
  • usare lo shared secret, il server è in grado di decifrare la chiave di cifratura del disco utilizzando AES
  • L’autore dell’attacco può restituire la chiave di cifratura che potrà sbloccare la macchina bloccata

Ad esempio, uno dei codici di decrittazione nelle macchine dei nostri laboratori si presenta così (i trattini e i primi due caratteri sono stati rimossi: il server non li usa per la decodifica).

Q5rL1YMqnJPCsCgji4KcDv5XnQrtqttBQ7tfbAq7QStmTXNQ6Voepeaiem8uzaQxYq3LwpvMCXBvMx2Mmqkdt8Fi

Quando questo codice viene decodificato utilizzando un algoritmo Base58 standard, produce i seguenti dati (la chiave pubblica generata dal malware presentata in verde a scopo dimostrativo e la chiave del disco cifrato in rosso).

Codice decrittazione Petya sbloccato

L’unico modo per ripristinare la macchina senza l’aiuto del server è quello di catturare la chiave salsa20 all’interno del processo d’infezione, usando i debugger. Una contromisura decisamente poco attraente per l’utente medio:).

Curiosità:

Il post è stato tradotto grazie all’esplicita autorizzazione di F-Secure

Fonte: Petya: Disk Encrypting Ransomware

Written by admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *