Gli attacchi cold boot (in italiano “attacchi a freddo“) sono un tipo di aggressione informatica che sfrutta la memorizzazione dei dati nella RAM anche dopo che il sistema è stato spento. Sebbene la memoria volatile perda normalmente i dati quando il dispositivo viene spento, l’attacco cold boot sfrutta il fatto che, in alcuni casi, i dati rimangono nella memoria per un certo periodo di tempo. Un ricercatore indipendente ha sviluppato un software open source, Memory-Dump-UEFI, che permette di effettuare il dump della memoria ossia salvare sotto forma di file il contenuto della RAM quando il sistema è riavviato. Servendosi di tale programma, diventa possibile bypassare BitLocker via software.
Dimostrata una tecnica per bypassare BitLocker via software, anche sui sistemi Windows 11
Un ricercatore ha dimostrato che allorquando un aggressore avesse accesso al dispositivo fisico, questi potrebbe accedere ai dati memorizzati sul sistema, scavalcando la protezione BitLocker semplicemente riavviando brutalmente la macchina e scaricando il contenuto della RAM (dump) riferito alla precedente sessione di lavoro con Windows.
Il precedente contenuto della memoria RAM può così essere analizzato per individuare informazioni riservate come la chiave FVEK (Full Volume Encryption Key), ovvero la chiave crittografica usata da BitLocker per cifrare i dati conservati sull’unità. La tecnica non è comunque infallibile perché il contenuto della RAM tende a degradarsi rapidamente non appena viene meno l’alimentazione.
Ad ogni modo, l’autore del software Memory-Dump-UEFI sottolinea che la chiave FVEK può essere recuperata durante la fase di avvio di Windows, quando il sistema operativo è in caricamento.
Avvio del sistema da un supporto di boot e recupero della chiave FVEK
Per bypassare BitLocker via software, è necessario dotarsi di una chiavetta USB o di un dispositivo di memorizzazione USB che abbia capacità superiore al numero di gigabyte della memoria RAM del sistema target. Lo script flashimage.sh
, parte integrante del software Memory-Dump-UEFI, facilita la creazione del supporto avviabile.
Il riavvio deve avvenire in modo da minimizzare il tempo in cui il computer rimane spento. Come osservato in precedenza, i migliori risultati si ottengono riavviando il sistema durante il caricamento di Windows, prima che appaia la schermata di login.
Arrivati alla shell UEFI, è necessario individuare ed eseguire il file app.efi
, applicazione che avvia automaticamente il dump della RAM. Si ottengono così, di solito, più file da 4 GB ciascuno perché il file system FAT32, necessario per l’avvio dell’unità tramite UEFI, non permette la creazione di elementi di dimensioni maggiori.
Lo script concatDumps.py
permette appunto di unire i vari frammenti da 4 GB o meno, accoppiandoli in ordine cronologico.
Analizzare i dump della memoria RAM
Come spiegato in questa pagina, il ricercatore suggerisce di utilizzare uno strumento software come xxd
per esaminare il contenuto della memoria RAM salvato come file.
Usando un tono palesemente sarcastico, l’autore della ricerca spiega che Microsoft avrebbe avuto la “bella idea” di marcare le locazioni di memoria contenenti le chiavi crittografiche. C’è anche un prefisso esadecimale (ad esempio 0x0480
nel caso dell’algoritmo XTS-AES-128) che indica il tipo di cifratura usata da BitLocker. Lo script searchMem.py
permette di trovare offset specifici nei dump. L’utilità Linux dislocker può essere utilizzata per risalire alla tipologia di algoritmo crittografico utilizzato da BitLocker.
In corrispondenza delle aree di memoria indicate dall’autore di Memory-Dump-UEFI, si può trovare la chiave FVEK di BitLocker, estrarla e salvarla sotto forma di file.
Una volta individuata la chiave, è necessario anteporre il prefisso relativo allo schema crittografico in uso (nell’esempio 0480
) quindi impartire il comando seguente:
echo "0480CHIAVE_FVEK_ESADECIMALE" | xxd -r -p > output.fvek
Si ottiene un file output.fvek
contenente la chiave di decodifica BitLocker in formato binario.
Utilizzare dislocker per decodificare la partizione protetta con BitLocker
L’autore di Memory-Dump-UEFI lo dà per scontato. Tuttavia, come passaggio finale, è possibile decifrare la partizione BitLocker utilizzando l’utilità Linux dislocker. Basta eseguire il comando seguente, sostituendo /dev/sdd3
con il percorso corretto dell’unità protetta con BitLocker:
dislocker-fuse -K output.fvek /dev/sdd3 ./mnt/
Una volta montata l’unità, è possibile accedere ai dati utilizzando il seguente comando:
mount ./mnt/dislocker-file ./mnt2/
Dopo aver eseguito il comando, i dati dell’unità crittografata saranno accessibili dal percorso ./mnt2/
.
Note finali
Come sottolineato in altri nostri articoli, è bene tenere a mente che questi attacchi hanno gioco facile soprattutto sui sistemi che non sono protetti utilizzando BitLocker con la richiesta di un PIN all’avvio. La richiesta di un PIN all’avvio, sconosciuto all’attaccante, rende queste aggressioni più complesse e di scarsa efficacia.
Sebbene infatti sia possibile effettuare il boot da un’unità esterna anche nel caso di un sistema protetto con BitLocker TPM+PIN, il recupero delle chiavi di cifratura dalla memoria RAM, attraverso il dump della stessa, diventa una strada pressoché impraticabile.
Al fine di ottenere le migliori prestazioni possibili con Memory-Dump-UEFI, il ricercatore suggerisce di utilizzare preferibilmente un’unità esterna NVMe collegata al sistema tramite una delle porte USB disponibili. L’applicazione app.efi
sarà accessibile dalla shell UEFI, su uno dei dispositivi collegati (fs0, fs1, fs2…).
Credit immagine in apertura: iStock.com – natatravel