Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
bitcracker — BitCracker è il primo strumento di cracking delle password open source per unità di memoria crittografate con BitLocker | Kitploit
Strumenti/GitHubGitHub/e-ago/bitcracker
Password CrackingStrumenti di Crittografia/DecrittografiaCrittografia
GitHube-ago/bitcracker

bitcracker

BitCracker è il primo strumento di cracking delle password open source per unità di memoria crittografate con BitLocker

Vedi Repository
9652072 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BitCracker

BitCracker è il primo strumento open source per il cracking delle password per dispositivi di archiviazione (Hard Disk, Pendrive USB, scheda SD, ecc...) cifrati con BitLocker, una funzionalità di crittografia disponibile su Windows Vista, 7, 8.1 e 10 (edizioni Ultimate, Pro e Enterprise). BitLocker offre diversi metodi di autenticazione per cifrare un dispositivo di archiviazione, come Trusted Platform Module (TPM), Smart Card, Password di ripristino, Password fornita dall'utente.

Tramite un attacco a dizionario, BitCracker cerca di trovare la corretta Password Utente o Password di Ripristino per decifrare il dispositivo di archiviazione cifrato. È stato implementato in CUDA e OpenCL.

Articolo scientifico

Diverse riviste hanno ritardato la pubblicazione del nostro articolo su BitCracker (quasi 3 anni, con rifiuto finale dopo diverse revisioni), che spiega i dettagli del nostro attacco, il formato del volume BitLocker Drive Encryption (BDE) e le possibili debolezze nella procedura di crittografia/decifratura. Alla fine, abbiamo pubblicato l'articolo qui: https://arxiv.org/abs/1901.01337 . Sentitevi liberi di commentare e condividere.

Requisiti

Per eseguire BitCracker-CUDA, i requisiti minimi sono:

  • una GPU NVIDIA con CC 3.5 o successiva
  • CUDA 7.5 o più recente

Per eseguire BitCracker-OpenCL, i requisiti minimi sono qualsiasi GPU o CPU che supporti OpenCL (puoi trovare aiuto qui.

BitCracker richiede almeno 260 MB di memoria del dispositivo.

Consigliamo vivamente di eseguire l'attacco su una GPU piuttosto che su una CPU per motivi di prestazioni (vedi sezione Prestazioni).

Compilazione

Eseguendo lo script build.sh vengono generati 4 eseguibili nella directory build: bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl.

Per compilare bitcracker_cuda in modo coerente con la tua GPU NVIDIA e la versione CUDA, devi modificare il file src_CUDA/Makefile scegliendo la corretta versione SM. Come riferimento, puoi usare la seguente tabella:

Preparare l'attacco

Devi creare l'immagine del tuo dispositivo di archiviazione cifrato con BitLocker usando, ad esempio, il comando dd:

root@kitploit:~
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 record in
4030464+0 record out
2063597568 byte trasferiti in 292.749849 sec (7049013 byte/sec)

Poi devi eseguire l'eseguibile bitcracker_hash sulla tua imageEncrypted.img per:

  • verificare se l'immagine ha un formato valido e può essere attaccata da BitCracker
  • verificare se il dispositivo di archiviazione originale è stato cifrato con una Password Utente o una Password di Ripristino
  • estrarre l'hash che descrive l'immagine

Se l'esecuzione viene completata correttamente, bitcracker_hash produce 1 o 2 file di output:

  • hash_user_pass.txt : se il dispositivo è stato cifrato con una Password Utente, questo file contiene l'hash necessario per avviare la modalità di attacco Password Utente.
  • hash_recv_pass.txt : l'hash necessario per avviare la modalità di attacco Password di Ripristino

I volumi cifrati BDE possono avere formati diversi a seconda dei diversi metodi di autenticazione. Se bitcracker_hash non riesce a trovare la Password di Ripristino sulla tua immagine cifrata, apri un issue o contattami

Un esempio:

root@kitploit:~
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7

---------> BitCracker Hash Extractor <---------
Apertura file ./Images/imgWin7

....

Firma trovata a 0x02208000
Versione: 2 (Windows 7 o successivo)

Voce VMK trovata a 0x022080bc
VMK cifrato con password utente trovato!
VMK cifrato con AES-CCM

Voce VMK trovata a 0x0220819c
VMK cifrato con chiave di ripristino trovato!
VMK cifrato con AES-CCM

Hash password utente:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2

Hash chiave di ripristino:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688

File di output per attacco password utente: "hash_user_pass.txt"
File di output per attacco password di ripristino: "hash_recv_pass.txt"

Attacco Password Utente

Puoi usare questo tipo di attacco se il dispositivo di archiviazione è stato cifrato con una password fornita dall'utente come mostrato nell'immagine seguente. alt text BitCracker esegue un attacco a dizionario, quindi devi fornire una wordlist di possibili password utente.

Per avviare l'attacco hai bisogno:

  • del file hash_user_pass.txt
  • di una wordlist di possibili password utente (devi fornirla tu)

Un esempio da riga di comando:

./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u

Dove:

  • -f : percorso del file hash_user_pass.txt
  • -d : percorso della tua wordlist
  • -t : numero di password processate da ogni thread CUDA
  • -b : numero di blocchi CUDA
  • -g : ID del dispositivo GPU NVIDIA
  • -u : specifica che vuoi un attacco password utente

Per tutte le opzioni disponibili, digita ./build/bitcracker_cuda -h. Per ottenere le migliori prestazioni, fai riferimento alla tabella nella sezione Prestazioni per impostare correttamente le opzioni t e b in base alla tua GPU NVIDIA.

Le stesse considerazioni valgono per l'eseguibile bitcracker_opencl.

Un esempio di output:

root@kitploit:~
====================================
Dispositivo selezionato: GPU Tesla K80 (ID: 0)
====================================
....
Lettura file hash "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663

====================================
Attacco
====================================

Tipo di attacco: Password Utente
Thread CUDA: 1024
Blocchi CUDA: 1
Password per thread: 1
Max Password per kernel: 1024
Dizionario: wordlist.txt
Controllo rigoroso (-s): No
Confronto MAC (-m): No

Esecuzione kernel CUDA:
	Stream 0
	Numero effettivo di password: 12
	Intervallo password:
		abcdefshhf
		.....
		blablalbalbalbla12
	Tempo: 28.651947 sec
	Password al secondo:     0.42 pw/sec

================================================
....
Password trovata: paperino
================================================

Attualmente BitCracker è in grado di elaborare password in input con una lunghezza compresa tra 8 e 55 caratteri.

Attacco Password di Ripristino

Durante la crittografia di un dispositivo di archiviazione (indipendentemente dal metodo di autenticazione), BitLocker chiede all'utente di memorizzare da qualche parte una Password di Ripristino che può essere utilizzata per ripristinare l'accesso al dispositivo di archiviazione cifrato nel caso in cui non sia possibile sbloccare l'unità normalmente. Pertanto la Password di Ripristino è una sorta di passe-partout per tutti i metodi di autenticazione ed è composta da una chiave di 48 cifre come questa:

236808-089419-192665-495704-618299-073414-538373-542366

Vedi documentazione Microsoft per ulteriori dettagli.

Come per la password utente, BitCracker è in grado di eseguire un attacco a dizionario per trovare la corretta Password di Ripristino generata da BitLocker per crittografare il dispositivo di archiviazione. Si prega di notare che attualmente siamo in grado di attaccare la Password di Ripristino solo se il dispositivo di archiviazione non è stato crittografato con il TPM.

Per avviare l'attacco hai bisogno:

  • del file hash_recv_pass.txt
  • di una wordlist di possibili password di ripristino

Generare e memorizzare tutte le possibili password è un problema difficile. Per questo motivo, abbiamo creato un generatore di Password di Ripristino chiamato bitcracker_rpgen. Con questo strumento puoi creare un insieme di wordlist di Password di Ripristino da utilizzare per i tuoi attacchi. Ad esempio:

./build/bitcracker_rpgen -n 300 -p 10000000 -s 000000-000011-000022-000033-000044-000055-008459-015180

Questo genera:

  • -n : numero di wordlist
  • -p : numero di Password di Ripristino per wordlist
  • -s : genera Password di Ripristino a partire da questa

Puoi usare la configurazione predefinita eseguendo senza opzioni:

root@kitploit:~
./build/bitcracker_rpgen

************* BitCracker Recovery Password wordlists generator *************

Esecuzione con questa configurazione:
### Crea 100 wordlist
### Password di ripristino per wordlist=5000000
### Consenti duplicati=No
### Genera a partire da=000000-000011-000022-000033-000044-000055-000066-000077

Creazione wordlist "bitcracker_wlrp_0.txt" con 5000000 password
Prima password=000000-000011-000022-000033-000044-000055-000066-000077
Ultima password= 000000-000011-000022-000033-000044-000055-000902-217822
...

Nota che l'opzione -s può essere utilizzata per riavviare la generazione dall'ultima Password di Ripristino generata (invece di ricominciare sempre da quella iniziale). L'opzione -d abilita la possibilità di avere duplicati nella stessa Password di Ripristino. Ad esempio: 000000-000011-000055-000055-000044-000055-000902-217822

Per tutte le opzioni disponibili, digita ./build/bitcracker_rpgen -h.

NOTA: Si prega di notare che la quantità di possibili Password di Ripristino è enorme:
recovery password = 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536
Secondo la nostra ricerca, la distribuzione delle password è uniforme e non c'è modo di trovare numeri "più probabili". Finora non abbiamo trovato una regola per ridurre la quantità di possibili candidati. Ciò significa che l'attacco alla Password di Ripristino potrebbe durare per sempre (l'attacco alla Password Utente è sempre preferito). Presto modificheremo lo strumento bitcracker_rpgen per generare Password di Ripristino in modo casuale piuttosto che in sequenza ordinata.

Un esempio da riga di comando:

./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r

Dove le opzioni sono le stesse del caso Password Utente ma invece di -u devi specificare -r. Un esempio di output:

root@kitploit:~
====================================
Dispositivo selezionato: GPU Tesla K80 (ID: 0)
====================================

...
Lettura file hash "hash_recv_pass.txt"
$bitlocker$2$16$432dd19f37dd413a88552225628c8ae5$1048576$12$a0da3fc75f6cd30106000000$60$3e57c68216ef3d2b8139fdb0ec74254bdf453e688401e89b41cae7c250739a8b36edd4fe86a597b5823cf3e0f41c98f623b528960a4bee00c42131ef


====================================
Attacco
====================================

Tipo di attacco: Password di Ripristino
Thread CUDA: 1024
Blocchi CUDA: 1
Password per thread: 8
Max Password per kernel: 8192
Dizionario: wordlist.txt
Controllo rigoroso (-s): No
Confronto MAC (-m): No

Esecuzione kernel CUDA:
	Password effettive: 6014
	Intervallo password:
		390775-218680-136708-700645-433191-416240-153241-612216
		.....
		090134-625383-540826-613283-563497-710369-160182-661364
	Tempo: 193.358937 sec
	Password al secondo:    31.10 pw/sec


================================================
Attacco CUDA completato
Password valutate: 6014
Password trovata: 111683-110022-683298-209352-468105-648483-571252-334455
================================================

Falsi Positivi

Per impostazione predefinita, BitCracker esegue un attacco veloce (per entrambe le modalità Password Utente e di Ripristino) che potrebbe restituire alcuni falsi positivi. In questo caso puoi rieseguire l'attacco con l'opzione -m che abilita la verifica MAC (soluzione più lenta).

Esempi

Per testare BitCracker sul tuo sistema prima di iniziare l'attacco reale, abbiamo fornito diverse immagini di dispositivi di archiviazione cifrati.

  • imgWin7: BitLocker su Windows 7 Enterprise edition OS
  • imgWin8: BitLocker su Windows 8 Enterprise edition OS
  • imgWin10Compat.vhd: BitLocker (modalità compatibile) su Windows 10 Pro edition OS
  • imgWin10NotCompat.vhd: BitLocker (modalità non compatibile) su Windows 10 Pro edition OS
  • imgWin10NotCompatLongPsw.vhd : BitLocker (modalità non compatibile) su Windows 10 Pro edition OS con una password utente più lunga

Puoi attaccare queste immagini con entrambe le modalità Password Utente e di Ripristino, utilizzando le wordlist memorizzate nella cartella Dictionary.

Prestazioni

Qui riportiamo le migliori prestazioni di BitCracker in caso di attacco veloce (predefinito) alla Password Utente (opzione -u).

Prestazioni:

N.B. Ogni password richiede circa 2.097.152 SHA-256

John The Ripper

Abbiamo rilasciato BitCracker come formato OpenCL-BitLocker in John The Ripper (--format=bitlocker-opencl). I file hash generati da bitcracker_hash (vedi sezione Come fare) sono completamente compatibili con il formato John.
Sulla GTV100 il tasso di password è di circa 3150 p/s. Il team di JtR ha sviluppato la versione CPU di questo attacco (--format=bitlocker); su una CPU Intel(R) Xeon(R) v4 2.20GHz, il tasso di password è di circa 78 p/s.

Hashcat

Questo è un lavoro in corso...

Changelog

Nov 2021: Codice aggiornato per funzionare su GPU NVIDIA Ampere utilizzando CUDA 11.x

Prossimi sviluppi

  • Fornire un'implementazione multi-GPU
  • Fornire un'interfaccia Qt

Riferimenti, crediti e contatti

Per favore condividete e testate il nostro progetto: abbiamo bisogno del vostro feedback!

Un ringraziamento speciale al team di John The Ripper, ai progetti Dislocker e LibBDE.

Questo è un progetto di ricerca in collaborazione con il Consiglio Nazionale delle Ricerche d'Italia rilasciato sotto licenza GPLv2.
Copyright (C) 2013-2021 Elena Ago (elena dot ago at gmail dot com) e Massimo Bernaschi (massimo dot bernaschi at gmail dot com)
Forniremo alcune informazioni aggiuntive sull'attacco di BitCracker in un futuro articolo.

Sebbene utilizziamo la licenza GPLv2, siamo aperti a collaborazioni. Per qualsiasi informazione aggiuntiva, collaborazioni o segnalazione di bug, contattateci o aprite un issue.

Scarica lo strumento
Architettura GPUCUDA suggeritaMakefile
KeplerCUDA 7.5arch=compute_35,code=sm_35
MaxwellCUDA 8.0arch=compute_52,code=sm_52
PascalCUDA 9.0arch=compute_60,code=sm_60
VoltaCUDA 9.0arch=compute_70,code=sm_70
Acronimo GPUGPUArchCC# SMClockCUDA
GFTGeForce TitanKepler3.5148357.0
GTK80Tesla K80Kepler3.5138757.5
GFTXGeForce Titan XMaxwell5.22410017.5
GTP100Tesla P100Pascal6.15613288.0
GTV100Tesla V100Volta7.08012909.0
AMDMRadeon Malta-----
VersioneGPU-t-bPassword per kernelPassword/secHash/sec
CUDAGFT813106.496303635 MH/s
CUDAGTK80814114.688370775 MH/s
CUDAGFTX824106.6089331.957 MH/s
CUDAGTP10015657.3441.4182.973 MH/s
CUDAGTV10018081.9203.2526.820 MH/s
OpenCLAMDM3264524.288241505 MH/s
OpenCLGFTX824196.6088841.853 MH/s