
BitCracker ist das erste Open-Source-Passwort-Knacktool für mit BitLocker verschlüsselte Speichereinheiten.
BitCracker ist das erste Open-Source-Passwort-Knacktool für Speichergeräte (Festplatte, USB-Stick, SD-Karte usw.), die mit BitLocker verschlüsselt sind – einer Verschlüsselungsfunktion, die unter Windows Vista, 7, 8.1 und 10 (Ultimate-, Pro- und Enterprise-Editionen) verfügbar ist. BitLocker bietet verschiedene Authentifizierungsmethoden zur Verschlüsselung eines Speichergeräts, wie Trusted Platform Module (TPM), Smart Card, Recovery Password und User Password.
Mittels eines Wörterbuchangriffs versucht BitCracker, das korrekte User Password oder Recovery Password zu finden, um das verschlüsselte Speichergerät zu entschlüsseln. Es wurde in CUDA und OpenCL implementiert.
Mehrere Zeitschriften haben die Veröffentlichung unseres BitCracker-Papers verzögert (fast 3 Jahre, mit endgültiger Ablehnung nach mehreren Überarbeitungen), das die Details unseres Angriffs, das BitLocker Drive Encryption (BDE)-Volumenformat und mögliche Schwachstellen im Verschlüsselungs-/Entschlüsselungsverfahren erklärt. Schließlich haben wir das Paper hier veröffentlicht: https://arxiv.org/abs/1901.01337 . Bitte kommentieren und teilen Sie es.
Um BitCracker-CUDA auszuführen, sind mindestens erforderlich:
Um BitCracker-OpenCL auszuführen, ist mindestens eine GPU oder CPU erforderlich, die OpenCL unterstützt (Hilfe finden Sie hier.
BitCracker benötigt mindestens 260 MB Gerätespeicher.
Wir empfehlen dringend, Ihren Angriff aus Leistungsgründen auf einer GPU statt auf einer CPU auszuführen (siehe Abschnitt Leistung).
Die Ausführung des Skripts build.sh erzeugt 4 ausführbare Dateien im Verzeichnis build: bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl.
Um bitcracker_cuda kohärent mit Ihrer NVIDIA GPU und CUDA-Version zu erstellen, müssen Sie die src_CUDA/Makefile bearbeiten und die korrekte SM-Version auswählen. Als Referenz können Sie die folgende Tabelle verwenden:
| GPU-Architektur | Empfohlenes CUDA | Makefile |
|---|---|---|
| Kepler | CUDA 7.5 | arch=compute_35,code=sm_35 |
| Maxwell | CUDA 8.0 | arch=compute_52,code=sm_52 |
| Pascal | CUDA 9.0 | arch=compute_60,code=sm_60 |
| Volta | CUDA 9.0 | arch=compute_70,code=sm_70 |
Sie müssen das Image Ihres mit BitLocker verschlüsselten Speichergeräts erstellen, z. B. mit dem Befehl dd:
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)
Dann müssen Sie die ausführbare Datei bitcracker_hash auf Ihrem imageEncrypted.img ausführen, um:
Wenn die Ausführung korrekt abgeschlossen wird, erzeugt bitcracker_hash 1 oder 2 Ausgabedateien:
BDE-verschlüsselte Volumes können für verschiedene Authentifizierungsmethoden unterschiedliche Formate haben. Wenn bitcracker_hash das Recovery Password auf Ihrem verschlüsselten Image nicht finden kann, öffnen Sie bitte ein Issue oder kontaktieren Sie mich
Ein Beispiel:
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7
---------> BitCracker Hash Extractor <---------
Opening file ./Images/imgWin7
....
Signature found at 0x02208000
Version: 2 (Windows 7 or later)
VMK entry found at 0x022080bc
VMK encrypted with user password found!
VMK encrypted with AES-CCM
VMK entry found at 0x0220819c
VMK encrypted with Recovery key found!
VMK encrypted with AES-CCM
User Password hash:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2
Recovery Key hash:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688
Output file for user password attack: "hash_user_pass.txt"
Output file for recovery password attack: "hash_recv_pass.txt"
Sie können diese Art von Angriff verwenden, wenn das Speichergerät mit einem benutzerdefinierten Passwort verschlüsselt wurde, wie im folgenden Bild gezeigt.
BitCracker führt einen Wörterbuchangriff durch, daher müssen Sie eine Wortliste mit möglichen User Passwörtern bereitstellen.
Um den Angriff zu starten, benötigen Sie:
hash_user_pass.txtEin Beispiel für die Befehlszeile:
./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u
Wobei:
-f : Pfad zur Datei hash_user_pass.txt-d : Pfad zu Ihrer Wortliste-t : Anzahl der Passwörter, die von jedem CUDA-Thread verarbeitet werden-b : Anzahl der CUDA-Blöcke-g : NVIDIA GPU-Geräte-ID-u : gibt an, dass Sie einen User Password-Angriff wünschenFür alle verfügbaren Optionen geben Sie ./build/bitcracker_cuda -h ein.
Um die beste Leistung zu erzielen, beziehen Sie sich bitte auf die Tabelle im Abschnitt Leistung, um die Optionen t und b entsprechend Ihrer NVIDIA GPU richtig einzustellen.
Die gleichen Überlegungen gelten für die ausführbare Datei bitcracker_opencl.
Ein Ausgabebeispiel:
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
....
Reading hash file "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663
====================================
Attack
====================================
Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No
CUDA Kernel execution:
Stream 0
Effective number psw: 12
Passwords Range:
abcdefshhf
.....
blablalbalbalbla12
Time: 28.651947 sec
Passwords x second: 0.42 pw/sec
================================================
....
Password found: paperino
================================================
Derzeit kann BitCracker Eingabepasswörter mit einer Länge zwischen 8 und 55 Zeichen verarbeiten.