Bitcracker ist das erste Open -Source -Passwort -Cracking -Tool für Speichergeräte (Festplatten, USB Pendrive, SD -Karte usw.), verschlüsselt mit Bitlocker, einer Verschlüsselungsfunktion, die unter Windows Vista, 7, 8.1 und 10 verfügbar ist (Ultimate, Pro und Enterprise) Ausgaben). BitLocker bietet eine Reihe verschiedener Authentifizierungsmethoden, um ein Speichergerät wie Trusted Platform Modul (TPM), Smart Card, Wiederherstellungskennwort und Benutzer mit dem Benutzer zu verschlüsseln.
Mit einem Wörterbuchangriff versucht Bitcracker, das richtige Benutzerkennwort oder das richtige Wiederherstellungskennwort zu finden, um das verschlüsselte Speichergerät zu entschlüsseln. Es wurde in CUDA und OpenCL implementiert.
Mehrere Zeitschriften verzögerten die Veröffentlichung unseres Bitcracker -Papiers (fast 3 Jahre, mit endgültiger Ablehnung nach mehreren Überarbeitungen), die die Details unseres Angriffs, das Bitlocker Drive -Verschlüsselungsformat (BDE) und mögliche Schwächen in der Verschlüsselungs-/Entschaltungsverfahren erläutert. Schließlich haben wir das Papier hier veröffentlicht: https://arxiv.org/abs/1901.01337. Bitte zögern Sie nicht, zu kommentieren und zu teilen.
Um die Bitcracker-Cuda auszuführen, sind minimale Anforderungen:
Um den Bitcracker-OpenCL auszuführen, sind minimale Anforderungen jede GPU- oder CPU-Unterstützung von OpenCL (finden Sie hier einige Hilfe.
Bitcracker benötigt mindestens 260 MB Gerätespeicher.
Wir empfehlen dringend, Ihren Angriff aus Leistungsgründen eher auf eine GPU als auf CPU auszuführen (siehe Abschnittsleistung).
Ausführen des Skripts build.sh
generiert 4 ausführbare Ausführungen im build
-Verzeichnis: bitcracker_hash
, bitcracker_rpgen
, bitcracker_cuda
, bitcracker_opencl
.
Um mit Ihrer NVIDIA GPU und Ihrer CUDA -Version bitcracker_cuda
kohärent zu erstellen, müssen Sie die src_CUDA/Makefile
ändern und die richtige SM -Version auswählen. Als Referenz können Sie die folgende Tabelle verwenden:
GPU -Architektur | Vorgeschlagen 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 Bild Ihres Speichergeräts erstellen, das mit BitLocker verschlüsselt wird, als Beispiel den 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)
Anschließend müssen Sie die ausführbare bitcracker_hash
-Datei auf Ihrem imageEncrypted.img
ausführen, um:
Wenn die Ausführung korrekt abgeschlossen ist, erzeugt bitcracker_hash
1 oder 2 Ausgabedateien:
BDE verschlüsselte Volumina könnten unterschiedliche Formate für verschiedene Authentifizierungsmethoden haben. Wenn bitcracker_hash
das Wiederherstellungskennwort in Ihrem verschlüsselten Bild nicht finden kann, öffnen Sie bitte ein Problem 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 diesen Angriffstyp verwenden, wenn das Speichergerät mit einem im folgenden Bild angegebenen Benutzer mit dem Benutzer versehen ist. Bitcracker führt einen Wörterbuchangriff aus, sodass Sie eine WordList von Possibile -Benutzerkennwörtern bereitstellen müssen.
Um den Angriff zu beginnen, den Sie brauchen:
hash_user_pass.txt
Ein Befehlszeilenbeispiel:
./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u
Wo:
-f
: Pfad zur Datei hash_user_pass.txt
-d
: Pfad zu Ihrer Wortliste-t
: Anzahl der von jedem CUDA -Thread verarbeiteten Passwörter-b
: Anzahl der Cuda -Blöcke-g
: Nvidia GPU -Geräte -ID-u
: Geben Sie Ihren Wunsch eines Benutzerkennwortangriffs an Geben Sie für alle verfügbaren Optionen ./build/bitcracker_cuda -h
ein. Um die beste Leistung zu erzielen, lesen Sie bitte die Tabelle im Bereich Performance -Abschnitt, um die t
und b
-Optionen gemäß Ihrer NVIDIA -GPU ordnungsgemäß festzulegen.
Gleiche Überlegungen können für die ausführbare bitcracker_opencl
angewendet werden.
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 Eingabekennwörter mit einer Länge zwischen 8 und 55 Zeichen verarbeiten.
Während der Verschlüsselung eines Speichergeräts (unabhängig von der Authentifizierungsmethode) fordert BitLocker den Benutzer auf, ein Wiederherstellungskennwort zu speichern, mit dem der Zugriff auf das verschlüsselte Speichergerät wiederhergestellt werden kann, wenn sie das Laufwerk nicht entsperren kann normalerweise. Somit ist das Wiederherstellungskennwort eine Art Passe-Partie für alle Authentifizierungsmethoden und besteht aus einer 48-stelligen Schlüssel wie folgt:
236808-089419-192665-495704-618299-073414-538373-542366
Weitere Informationen finden Sie unter Microsoft -Dokumente.
Was das Benutzerkennwort betrifft, kann Bitcracker einen Wörterbuchangriff ausführen, um das richtige Wiederherstellungskennwort zu finden, das von Bitlocker generiert wird, um das Speichergerät zu verschlüsseln. Bitte beachten Sie, dass wir derzeit das Wiederherstellungskennwort nur angreifen können, wenn das Speichergerät nicht mit dem TPM verschlüsselt wurde.
Um den Angriff zu beginnen, den Sie brauchen:
hash_recv_pass.txt
Generieren und speichern Sie alle Possibile -Passwörter. Es ist ein schwieriges Problem. Aus diesem Grund haben wir einen Wiederherstellungskennwortgenerator mit dem Namen bitcracker_rpgen
erstellt. Mit diesem Tool können Sie eine Reihe von Wiederherstellungskennwörtern erstellen, die Sie für Ihre Angriffe verwenden können. Als Beispiel:
./build/bitcracker_rpgen -n 300 -p 10000000 -s 000000-000011-000022-000033-000044-000055-008459-015180
Dies erzeugt:
-n
: Anzahl der Wortlisten-p
: Anzahl der Wiederherstellungskennwörter pro WordList-s
: Generieren Sie die Wiederherstellungskennwörter ab diesem FallSie können die Standardkonfiguration ohne Optionen verwenden:
./build/bitcracker_rpgen
************* BitCracker Recovery Password wordlists generator *************
Running with this configuration:
### Create 100 wordlists
### Recovery Passwords per wordlist=5000000
### Allow duplicates=No
### Generate starting from=000000-000011-000022-000033-000044-000055-000066-000077
Creating wordlist "bitcracker_wlrp_0.txt" with 5000000 passwords
First password=000000-000011-000022-000033-000044-000055-000066-000077
Last password= 000000-000011-000022-000033-000044-000055-000902-217822
...
Beachten Sie, dass die Option -s
verwendet werden kann, um die Generation von Ihrem zuletzt generierten Wiederherstellungskennwort neu zu starten (anstatt jedes Mal von der anfänglichen neu zu starten). Die Option -d
ermöglicht die Möglichkeit, Duplikate im selben Wiederherstellungskennwort zu haben. Zum Beispiel: 000000-000011-000055-000055-000044-000055-000902-217822
Geben Sie für alle verfügbaren Optionen ./build/bitcracker_rpgen -h
ein.
Hinweis: Bitte beachten Sie, dass die Menge der möglichen Wiederherstellungskennwörter enorm ist:
recovery password = 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536
Nach unserer Untersuchung ist die Kennwortverteilung einheitlich und es gibt keine Möglichkeit, "wahrscheinlicher" Zahlen zu finden. Bisher fanden wir keine Regel, um die Anzahl der möglichen Kandidaten zu reduzieren. Dies bedeutet, dass der Angriff des Wiederherstellungskennworts ewig dauern kann (der Benutzer -Passwod -Angriff ist immer der bevorzugte). Bald werden wir das Tool bitcracker_rpgen
ändern, um das Wiederherstellungskennwort auf eine lässige Weise zu generieren, anstatt in geordneter Sequenz.
Ein Befehlszeilenbeispiel:
./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r
Wenn Optionen die gleichen sind wie im Fall des Benutzerkennworts, aber anstelle von -u
müssen Sie -r
angeben. Ein Ausgabebeispiel:
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
...
Reading hash file "hash_recv_pass.txt"
$bitlocker$2$16$432dd19f37dd413a88552225628c8ae5$1048576$12$a0da3fc75f6cd30106000000$60$3e57c68216ef3d2b8139fdb0ec74254bdf453e688401e89b41cae7c250739a8b36edd4fe86a597b5823cf3e0f41c98f623b528960a4bee00c42131ef
====================================
Attack
====================================
Type of attack: Recovery Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 8
Max Psw per kernel: 8192
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No
CUDA Kernel execution:
Effective passwords: 6014
Passwords Range:
390775-218680-136708-700645-433191-416240-153241-612216
.....
090134-625383-540826-613283-563497-710369-160182-661364
Time: 193.358937 sec
Passwords x second: 31.10 pw/sec
================================================
CUDA attack completed
Passwords evaluated: 6014
Password found: 111683-110022-683298-209352-468105-648483-571252-334455
================================================
Standardmäßig führt Bitcracker einen schnellen Angriff durch (für Benutzer- und Wiederherstellungskennwortmodi), die möglicherweise einige falsch positive positiv zurückgeben. In diesem Fall können Sie Ihren Angriff mit der Option -m
erneut ausführen, die die Mac -Überprüfung (langsamere Lösung) ermöglicht.
Um Bitcracker in Ihrem System vor dem Start des eigentlichen Angriffs zu testen, haben wir mehrere Bilder von verschlüsselten Speichergeräten bereitgestellt.
Sie können diese Bilder sowohl mit Benutzer- als auch mit Wiederherstellungskennwortmodi angreifen, indem Sie die im Dictionary
gespeicherten Wordlisten verwenden.
Hier berichten wir über die besten Bitcracker-Leistungen im Falle eines schnellen Angriffs (Standard) zum Benutzerkennwort (-U-Option).
GPU Acronim | GPU | Bogen | CC | # SM | Uhr | CUDA |
---|---|---|---|---|---|---|
GFT | Geforce Titan | Kepler | 3.5 | 14 | 835 | 7.0 |
Gtk80 | Tesla K80 | Kepler | 3.5 | 13 | 875 | 7.5 |
Gftx | Geforce Titan x | Maxwell | 5.2 | 24 | 1001 | 7.5 |
GTP100 | Tesla P100 | Pascal | 6.1 | 56 | 1328 | 8.0 |
GTV100 | Tesla V100 | Volta | 7.0 | 80 | 1290 | 9.0 |
AMDM | Radeon Malta | - - | - - | - - | - - | - - |
Leistung:
Version | GPU | -T | -B | Passwörter x Kernel | Passwörter/Sek | Hash/Sec |
---|---|---|---|---|---|---|
CUDA | GFT | 8 | 13 | 106.496 | 303 | 635 mh/s |
CUDA | Gtk80 | 8 | 14 | 114.688 | 370 | 775 mh/s |
CUDA | Gftx | 8 | 24 | 106.608 | 933 | 1,957 mh/s |
CUDA | GTP100 | 1 | 56 | 57.344 | 1.418 | 2,973 mh/s |
CUDA | GTV100 | 1 | 80 | 81.920 | 3.252 | 6,820 mh/s |
Opencl | AMDM | 32 | 64 | 524.288 | 241 | 505 mh/s |
Opencl | Gftx | 8 | 24 | 196.608 | 884 | 1,853 mh/s |
NB Jedes Passwort erfordert ca. 2.097.152 SHA-256
Wir haben Bitcracker als OpenCL-Bitlocker-Format in John the Ripper ( --format=bitlocker-opencl
) veröffentlicht. Die Hash -Dateien, die von bitcracker_hash
(siehe Abschnitt ) generiert werden, sind mit dem John -Format vollständig kompatibel.
Auf der GTV100 -Passwortquote beträgt ca. 3150p/s. Das JTR -Team entwickelte die CPU -Version dieses Angriffs ( --format=bitlocker
); Bei einem CPU Intel (R) Xeon (R) V4 2.20 GHz beträgt die Passwortrate ca. 78p/s.
Dies ist eine laufende Arbeit ...
Nov 2021: Code aktualisiert, um mit CUDA 11.x auf NVIDIA GPU -Ampere ausgeführt zu werden
Plase teilen und testen Sie unser Projekt: Wir brauchen Ihr Feedback!
Besonderer Dank geht an das John the Ripper -Team, Dislocker und Libbde -Projekte.
Dies ist ein Forschungsprojekt in Zusammenarbeit mit dem National Research Council of Italy, der im Rahmen der GPLV2 -Lizenz veröffentlicht wurde.
Copyright (C) 2013-2021 Elena vor (Elena Dot bei Google Mail Dot Com) und Massimo Bernaschi (Massimo dot Bernaschi bei Google Mail Dot com)
Wir werden einige zusätzliche Informationen über Bitcrackers Angriff in einem zukünftigen Papier bereitstellen.
Obwohl wir die GPLV2 -Lizenz verwenden, sind wir offen für Zusammenarbeit. Weitere Informationen, Kooperationen oder Fehlerberichte kontaktieren Sie uns oder eröffnen Sie ein Problem