Come sconfiggere o quasi il ransomware Phobos con i CUDA core di NVidia

I ricercatori del CERT polacco pubblicano il codice che aiuta a lanciare un attacco brute force sul ransomware Phobos in modo da provare a recuperare i dati crittografati sui sistemi delle vittime.

I ransomware sono una piaga impossibile da debellare: utilizzano algoritmi crittografici forti e chiavi crittografiche complesse. L’algoritmo RSA, ad esempio, risulta particolarmente resistente alla fattorizzazione ed è quindi ampiamente utilizzato non solo per le transazioni sicure sul Web ma anche dagli sviluppatori di ransomware.
Ransomware come LockBit e BlackCat sono diventati un vero e proprio business per i criminali informatici che cercano di spillare denaro anche con la minaccia della pubblicazione online dei dati razziati dal malware sui sistemi delle vittime.

Se da un lato l’algoritmo crittografico utilizzato dal ransomware è di fatto impossibile da violare, eventuali errori o atteggiamenti superficiali nello sviluppo del codice possono aiutare le vittime di un ransomware a rimettere le mani su dati che sembravano irrimediabilmente persi.

Buone notizie arrivano dal lavoro condotto dal CERT (Computer Emergency Response Team) polacco sul ransomware Phobos.
Phobos è una minaccia che circola dal 2018 e che ha provocato danni ingenti sui dati memorizzati presso le piccole e medie imprese.
Ad oggi non è disponibile un modulo di decodifica per il ransomware Phobos quindi i ricercatori del CERT polacco hanno avviato una serie di indagini per capire se fosse in qualche modo possibile ripristinare i dati crittografati e tenuti sotto scacco dai criminali informatici.

I CERT nazionali sono entità specializzate nella gestione degli incidenti di sicurezza informatica a livello di singolo Paese. Svolgono un ruolo cruciale nella prevenzione, nella gestione e nella risoluzione degli incidenti che possono verificarsi su scala nazionale o che possono avere un impatto significativo sulla sicurezza di cittadini, imprese ed enti pubblici.

Il CERT polacco ha svolto un approfondito studio sul ransomware Phobos che non è possibile non menzionare: svolgendo un’attenta attività di reverse engineering, i ricercatori hanno innanzi tutto rilevato che il malware usa fonti di entropia piuttosto scarse per la generazione delle chiavi crittografiche.
Inoltre, per controllare una chiave crittografica, sono necessari in media 256 round dell’algoritmo SHA-256 e una singola operazione di decodifica AES.

Poiché Phobos basa il suo funzionamento sull’ora di sistema, supponendo di conoscere l’orario dell’infezione con la precisione di 1 secondo (la si può recuperare usando timestamp dei file o i log), il numero di operazioni necessario per forzare ciascun componente usato dal ransomware per crittografare i dati non è enorme.
Il CERT sottolinea tuttavia che combinando i vari componenti usati da Phobos, il numero di operazioni da gestire per un eventuale attacco brute force sarebbe immensamente grande. Usare la “forza bruta” per risalire alla chiave di cifratura impostata da Phobos sembra di fatto impraticabile.

L’analisi del CERT è davvero fantastica perché dimostra come senza darsi subito per vinti, sia possibile raggiungere risultati inaspettati.
Gli esperti del team polacco hanno quindi recuperato informazioni come Process ID e Thread ID, entrambe usate dal malware come fonti di entropia. Hanno poi proseguito l’analisi riducendo progressivamente i bit di entropia, una misura che esprime la complessità di una chiave crittografica, ovvero la sua capacità di resistere ai tentativi di decodifica: da 141 si è passati a 51 bit di entropia semplificando notevolmente lo scenario.
141 bit di entropia significa che il numero di possibili chiavi crittografiche è pari a 2128, un numero estremamente grande che richiederebbe un tempo sproporzionato per sferrare un attacco brute force.

Recupero della chiave crittografica di Phobos con i CUDA core

Scartato l’utilizzo di Python, C++ o Rust (anche quest’ultimo, nonostante le notevoli abilità nel calcolo ad alte prestazioni, non si rivela all’altezza dell’arduo compito), gli esperti del CERT polacco hanno puntato sull’utilizzo dei CUDA core di NVidia.

CUDA (Compute Unified Device Architecture) è un’architettura di elaborazione parallela sviluppata da NVidia per accelerare il calcolo su GPU: fornisce un’interfaccia di programmazione per accedere alle risorse di elaborazione parallela delle GPU NVidia permettendo ai programmatori di scrivere applicazioni che possono sfruttare il potenziale di calcolo dei chip montati sulle moderne schede video per gestire problemi particolarmente gravosi.

L’architettura CUDA è stata introdotta per la prima volta nel 2007 ed è stata ampiamente adottata per l’elaborazione dei dati in campo scientifico, ingegneristico e di intelligenza artificiale. È inoltre supportata da una vasta gamma di linguaggi di programmazione e piattaforme di calcolo tra cui C, C++, Python e MATLAB.

Partendo dall’ottimizzazione del codice e dall’utilizzo della parallelizzazione, nel caso di Phobos è stato possibile provare fino a 818.000 chiavi di cifratura al minuto. Infine, utilizzando un piccolo cluster di GPU in dotazione presso i laboratori del CERT polacco, è stato possibile arrivare a provare quasi 10 milioni di chiavi crittografiche al minuto usando una batteria di 12 GPU NVidia. Questo sforzo ha permesso di scoprire la chiave di decodifica utilizzata da Phobos in poco meno di 3 ore di lavoro.
Fantastico! Fine dei giochi per gli autori del ransomware? Purtroppo no.

Perché il Proof-of-Concept del CERT polacco non permette di recuperare sempre i dati cifrati dal ransomware Phobos?

Nella pagina Phobos Ransomware CUDA Brute su GitHub, il CERT ha pubblicato il sorgente del lavoro svolto con i CUDA core di NVidia.

Il codice Proof-of-Concept (PoC) che è stato sviluppato per mettere al tappeto Phobos e recuperare i dati crittografati è perfettamente funzionante ma sfortunatamente non è ancora “generalizzabile”. “Abbiamo deciso di pubblicare i nostri risultati e strumenti, nella speranza che qualcuno li trovi utili, interessanti e continui la nostra ricerca“, si legge.

Ma perché quanto svolto dal CERT non può essere utilizzato per sviluppare una ricetta unica che permetta di arrivare a un modulo di decodifica funzionante per tutte le vittime di Phobos?

Il programma di decodifica basato sulla forza bruta dovrebbe essere in qualche modo automatizzato così da recuperare Process ID e Thread ID del malware, dovrebbe misurare il tempo con un approccio molto preciso (cosa molto complessa da fare…), anche dopo tutti i miglioramenti il codice che attiva il brute force rimane ancora troppo lento per essere eseguito su una macchina di livello consumer.
C’è da dire, inoltre, che non tutte le versioni di Phobos sono vulnerabili e che le vittime, quando si trovano davanti a un decryptor, vorrebbero avere una certa garanzia di successo.

Ti consigliamo anche

Link copiato negli appunti