
Cracking della crittografia BitLocker basato sulla vulnerabilità CVE-2023-21563
Per il blog completo clicca qui
Riproduzione in ambiente virtuale. La macchina locale (macchina attaccante) utilizza Ubuntu 22.04.5 LTS, mentre le macchine vittima sono Windows 10 21H2 19041.1 e Windows 11 21H2 22000.318, entrambe con BitLocker abilitato. QEMU viene utilizzato come gestore di macchine virtuali, gestito tramite virt-manager; qui utilizzo la macchina virtuale Windows 11 per l'operazione.
I miei file relativi alla riproduzione provengono dal repository Github di Syss; sulla loro base ho adattato le versioni degli strumenti e gestito alcune situazioni impreviste. È possibile scaricarli e usarli direttamente oppure modificarli secondo le proprie esigenze. I file immagine delle macchine virtuali provengono da UUP Dump, che offre il download di varie versioni di Windows; dopo il download, eseguendo il file cmd o sh si ottiene il file immagine ISO.
Per quanto riguarda l'installazione e l'uso di QEMU e virt-manager, non mi dilungherò qui; tuttavia, gli utenti che hanno appena scaricato il programma devono abilitare la modifica XML in virt-manager tramite "Edit -> Preferences -> General -> Enable XML editing", così da poter modificare direttamente il file di configurazione XML della macchina virtuale.
Quando si crea la macchina virtuale, selezionare "Local install media (ISO image or CDROM)" e scegliere il file immagine ISO di Windows 11 scaricato in precedenza. Assegnare le risorse appropriate (CPU, memoria, spazio su disco, ecc.) e, infine, assicurarsi di selezionare "Customize configuration before install", così da poter modificare il file di configurazione prima dell'installazione. A questo punto potrebbe esserci un problema con il riconoscimento automatico del sistema; in tal caso possiamo selezionare manualmente "Microsoft Windows 10/11".
Ora iniziamo la configurazione. Il punto più importante (perché questo non può essere modificato in seguito, mentre il resto può essere ripetutamente modificato dopo la creazione) è che, nella scheda Overview, si selezioni come Firmware "UEFI x86_64: /usr/share/OVMF/OVMF_CODE_4M.ms.fd". Se non lo si seleziona, basta eliminare la macchina virtuale e ricrearla; non è un problema.

Poi andare nella scheda "Boot Options" e assicurarsi che "SATA CDROM 1" sia spuntato, altrimenti non sarà possibile installare il sistema. Si può spostare "SATA CDROM 1" in cima alla lista per semplificare l'avvio. A questo punto si può creare direttamente la macchina; dopo aver installato il sistema, si procederà con le altre modifiche di configurazione.
Vedete "Press any key to boot from CD or DVD..."? Premete un tasto qualsiasi per entrare nella schermata di installazione e completate l'installazione seguendo le istruzioni. Se per caso finite in un'altra schermata, niente panico: selezionate "Boot Manager", poi "UEFI: QEMU DVD-ROM" per tornare alla schermata precedente e avviare premendo un tasto qualsiasi.

Procedete con l'installazione del sistema; spuntate l'opzione per non avere una chiave di prodotto e installate la versione Professional. In seguito ci saranno cose come la registrazione dell'account e altre seccature; si consiglia di avviare direttamente offline per ridurre i problemi. Se questa opzione non è disponibile, usate Shift + F10 per aprire il prompt dei comandi e digitate OOBE\BYPASSNRO per abilitare l'opzione di creazione dell'account offline.
Dopo essere entrati normalmente nel sistema, potete digitare msinfo32 nel terminale per visualizzare le informazioni di sistema (verificate se la modalità è UEFI), poi spegnete direttamente la macchina e procedete a modificare la configurazione:
<rom enabled="no"/> per abilitare l'avvio di rete. Ecco un esempio:<interface type="network">
<mac address="52:54:00:2f:53:4e"/>
<source network="default"/>
<model type="virtio"/>
<boot order="2"/>
<rom enabled="no"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
La scelta della configurazione di rete virtio è dovuta principalmente alla caratteristica di "paravirtualizzazione" dell'hardware di rete, che comunica direttamente con l'host. Inoltre, la disattivazione della ROM di avvio di rete serve a far comunicare direttamente il firmware UEFI con la scheda di rete virtio tramite il protocollo PXE integrato, evitando interferenze inutili durante l'avvio e garantendo di poter entrare correttamente nel sistema per le successive configurazioni e test.
Entrate nella macchina virtuale, installate i driver virtio tramite l'unità CD; la configurazione verrà completata automaticamente. Potete fare un semplice test per verificare che la rete funzioni. Successivamente, eseguite la crittografia BitLocker; potete creare un file flag sul desktop per la verifica successiva.
Se si esegue la riproduzione su una macchina fisica, basta collegare la macchina attaccante e la macchina vittima con un cavo di rete; non è necessario configurare virtio. Il resto della configurazione è praticamente identico. L'unica cosa da notare è che la macchina fisica può avere più interfacce di rete; è necessario selezionare l'interfaccia corretta per la configurazione.
La configurazione della macchina vittima è così completata; spegnetela direttamente. A questo punto possiamo procedere con lo sfruttamento della vulnerabilità seguendo i passaggi definiti in precedenza nel principio di sfruttamento.
Qui forniamo un'immagine di riferimento dell'intero flusso dell'attacco; potete dare prima un'occhiata generale al processo, che realizzeremo passo dopo passo in seguito:

Sulla macchina locale (macchina attaccante) devono essere installati i seguenti pacchetti software:
Su Ubuntu o Debian, è possibile installarli con il seguente comando:
sudo apt install dnsmasq libwin-hivex-perl python3-impacket
Nei file forniti dal progetto, eseguite il file build.sh per generare bitpixie-initramfs. Se volete modificare l'adattamento all'ambiente locale, potete modificare build.sh, configurare gli strumenti e i file di versione desiderati, quindi rieseguirlo per rigenerare bitpixie-initramfs.