Einleitung
VeraCrypt ist ein beliebtes Open-Source-Tool zur Echtzeitverschlüsselung (on-the-fly encryption). Während es starke Sicherheit bietet, können Passwörter manchmal das schwächste Glied sein. Das Verständnis, wie die Stärke dieser Passwörter getestet wird, ist eine kritische Fähigkeit in der Sicherheitsprüfung und im Penetration Testing.
In diesem Lab übernehmen Sie die Rolle eines Sicherheitsanalysten. Sie erstellen zunächst ein verschlüsseltes VeraCrypt-Volume mit einem Passwort, das einem bekannten Muster folgt. Anschließend lernen Sie, wie Sie die notwendigen Hash-Daten aus diesem Volume extrahieren. Schließlich verwenden Sie Hashcat, ein leistungsstarkes Werkzeug zur Passwortwiederherstellung, um einen "Masken-Angriff" (mask attack) durchzuführen, um das Passwort zu knacken. Dieser Prozess vermittelt Ihnen praktische Erfahrungen mit grundlegenden Techniken, die in der digitalen Forensik und im ethischen Hacking eingesetzt werden.
Erstellen eines kleinen verschlüsselten VeraCrypt-Volumes
In diesem Schritt verwenden Sie die Kommandozeilenschnittstelle von VeraCrypt, um einen neuen, verschlüsselten Dateicontainer zu erstellen. Dieser Container dient als unser Ziel für die Passwortwiederherstellungsübung. Wir werden absichtlich eine einfache Passwortstruktur verwenden, um die Effektivität eines Masken-Angriffs in späteren Schritten zu demonstrieren.
Sie werden durch einen interaktiven Erstellungsprozess geführt. Bitte folgen Sie den Anweisungen sorgfältig.
Führen Sie zuerst den Befehl zum Erstellen eines neuen Volumes aus. Das Flag -t aktiviert den Textmodus, und -c steht für "create" (erstellen).
veracrypt -t -c
Das Programm wird Ihnen nun eine Reihe von Fragen stellen. Beantworten Sie diese wie folgt:
- Volume Type: Drücken Sie
Enter, um den StandardwertNormalauszuwählen. - Volume Location: Geben Sie
myvolume.hcein und drücken SieEnter. Dies erstellt die Volume-Datei in Ihrem aktuellen Verzeichnis (~/project). - Volume Size: Geben Sie
1M(für 1 Megabyte) ein und drücken SieEnter. Eine kleine Größe ist für dieses Lab ausreichend. - Encryption Algorithm: Drücken Sie
Enter, um den StandardwertAESauszuwählen. - Hash Algorithm: Drücken Sie
Enter, um den StandardwertSHA-512auszuwählen. - Filesystem: Drücken Sie
Enter, um den StandardwertFATauszuwählen. - Password: Dies ist ein kritischer Schritt. Geben Sie für dieses Lab das Passwort
LabEx2024ein und drücken SieEnter. - Re-enter Password: Geben Sie erneut
LabEx2024ein und drücken SieEnter. - PIM: Drücken Sie
Enter, um den Standardwert (kein PIM) zu verwenden. - Keyfiles: Drücken Sie
Enter, um die Verwendung von Keyfiles zu überspringen. - Entropy Collection: Das Tool wird Sie auffordern, mindestens 320 zufällige Zeichen einzugeben, um kryptografische Entropie zu generieren. Geben Sie einfach zufällige Zeichen auf Ihrer Tastatur ein, bis die Fortschrittsanzeige voll ist, und drücken Sie dann
Enter.
Nach dem letzten Schritt erstellt VeraCrypt die Datei. Sie können die Erstellung mit dem Befehl ls überprüfen.
ls -l myvolume.hc
Sie sollten eine Ausgabe ähnlich dieser sehen, die bestätigt, dass die Datei existiert und ihre Größe ungefähr 1 MB beträgt.
-rw-r--r-- 1 labex labex 1048576 Dez 01 12:34 myvolume.hc
Sie haben nun erfolgreich ein verschlüsseltes VeraCrypt-Volume erstellt.
Extrahieren der ersten 512 Bytes als Hash
In diesem Schritt extrahieren Sie den Passwort-Hash aus dem VeraCrypt-Volume, das Sie gerade erstellt haben. Bei Standard-VeraCrypt-Containern, die Hash-Algorithmen wie SHA-512 oder RIPEMD-160 verwenden, werden die notwendigen Daten zur Passwortüberprüfung in den ersten 512 Bytes der Volume-Datei gespeichert. Hashcat kann diese Daten direkt verwenden, um einen Cracking-Angriff durchzuführen.
Wir verwenden den Befehl dd, ein leistungsstarkes Dienstprogramm zum Kopieren und Konvertieren von Daten.
Verwenden Sie den folgenden Befehl, um die ersten 512 Bytes aus myvolume.hc zu lesen und in eine neue Datei namens veracrypt.hash zu schreiben.
if=myvolume.hc: Gibt die input file (Eingabedatei) an.of=veracrypt.hash: Gibt die output file (Ausgabedatei) an.bs=512: Setzt die block size (Blockgröße) auf 512 Bytes.count=1: Gibt an, dass nur 1 Block kopiert werden soll.
dd if=myvolume.hc of=veracrypt.hash bs=512 count=1
Der Befehl wird ausgeführt und zeigt eine Zusammenfassung der Operation an.
1+0 records in
1+0 records out
512 bytes copied, 0.00012345 s, 4.1 MB/s
Überprüfen Sie nun, ob die neue Hash-Datei erstellt wurde und genau 512 Bytes groß ist.
ls -l veracrypt.hash
Die Ausgabe sollte wie folgt aussehen:
-rw-r--r-- 1 labex labex 512 Dez 01 12:35 veracrypt.hash
Sie haben erfolgreich die Hash-Daten extrahiert, die Hashcat für den Angriff verwenden wird.
Identifizieren des richtigen Hashcat-Modus für VeraCrypt
In diesem Schritt lernen Sie, wie Sie den richtigen "Hash-Modus" für Hashcat finden. Hashcat unterstützt Hunderte von verschiedenen Hash-Typen, und Sie müssen ihm genau mitteilen, welchen Typ Sie knacken möchten. Jeder Typ wird durch eine eindeutige Nummer identifiziert.
Da wir unser Volume mit AES-Verschlüsselung und dem SHA-512-Hash-Algorithmus erstellt haben, müssen wir den entsprechenden Modus in Hashcat finden. Dies können Sie tun, indem Sie die Hilfeausgabe von Hashcat durchsuchen.
Verwenden Sie den folgenden Befehl, um die Hilfeinformationen von Hashcat anzuzeigen und nach Zeilen zu filtern, die "VeraCrypt" enthalten. Der Befehl grep -i führt eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch.
hashcat --help | grep -i veracrypt
Die Ausgabe listet alle Hash-Modi auf, die sich auf VeraCrypt beziehen.
...
13711 | VeraCrypt RIPEMD160 + XTS 512 bit | Operating System
13712 | VeraCrypt RIPEMD160 + XTS 1024 bit | Operating System
13713 | VeraCrypt RIPEMD160 + XTS 1536 bit | Operating System
13721 | VeraCrypt SHA512 + XTS 512 bit | Operating System
13722 | VeraCrypt SHA512 + XTS 1024 bit | Operating System
13723 | VeraCrypt SHA512 + XTS 1536 bit | Operating System
13731 | VeraCrypt SHA256 + XTS 512 bit | Operating System
13732 | VeraCrypt SHA256 + XTS 1024 bit | Operating System
13733 | VeraCrypt SHA256 + XTS 1536 bit | Operating System
13751 | VeraCrypt Whirlpool + XTS 512 bit | Operating System
13752 | VeraCrypt Whirlpool + XTS 1024 bit | Operating System
13753 | VeraCrypt Whirlpool + XTS 1536 bit | Operating System
...
Schauen Sie sich die Liste an. Basierend auf unseren Entscheidungen in Schritt 1 (SHA512) ist der richtige Modus für unser Volume 13721. Sie werden diese Modusnummer im letzten Schritt verwenden, um Hashcat mitzuteilen, wie die Datei veracrypt.hash interpretiert werden soll.
Erstellen eines Masken-Angriffs für eine bekannte Passwortstruktur
In diesem Schritt erstellen Sie eine "Maske" für einen Hashcat-Angriff. Ein Masken-Angriff ist unglaublich effizient, wenn Sie Kenntnisse über die Struktur des Passworts haben. Für unser Labor wissen wir, dass das Passwort LabEx2024 lautet. Nehmen wir an, wir kennen nur die Struktur: das Wort "LabEx", gefolgt von vier Ziffern (wie ein Jahr).
Hashcat verwendet spezielle Platzhalter oder "Zeichensätze" (charsets), um eine Maske zu definieren:
?l= ein Kleinbuchstabe (a...z)?u= ein Großbuchstabe (A...Z)?d= eine Ziffer (0...9)?s= ein Sonderzeichen (!,@,#, etc.)
Basierend auf unserer angenommenen Struktur ("LabEx" + vier Ziffern) wäre die Maske LabEx?d?d?d?d. Dies weist Hashcat an, alle Kombinationen auszuprobieren, die mit der literalen Zeichenkette "LabEx" beginnen und mit einer beliebigen vierstelligen Sequenz von 0000 bis 9999 enden.
Führen wir einen Testlauf durch, um zu sehen, welche Passwörter diese Maske generieren wird. Das Flag -a 3 gibt einen Masken-Angriff an, und --stdout weist Hashcat an, die generierten Kandidaten auf dem Bildschirm auszugeben, anstatt einen echten Angriff durchzuführen.
hashcat --stdout -a 3 LabEx?d?d?d?d
Dieser Befehl gibt schnell Tausende von potenziellen Passwörtern in Ihr Terminal aus, beginnend mit LabEx0000, LabEx0001 und so weiter, bis LabEx9999 erreicht ist. Sie können jederzeit Strg+C drücken, um die Ausgabe zu stoppen.
Dies bestätigt, dass unsere Maske korrekt konstruiert ist, um das Zielpasswort LabEx2024 einzuschließen.
Ausführen des Angriffs zur Wiederherstellung des Volume-Passworts
In diesem letzten Schritt kombinieren Sie alle Teile, um den Angriff zu starten und das VeraCrypt-Volume-Passwort wiederherzustellen. Sie haben die Hash-Datei (veracrypt.hash), den Hash-Modus (13721) und die Angriffsmaske (LabEx?d?d?d?d).
Stellen wir den endgültigen Hashcat-Befehl zusammen:
-m 13721: Legt den Hash-Modus für VeraCrypt (SHA512) fest.-a 3: Legt den Angriffsmodus auf Masken-Angriff fest.veracrypt.hash: Die Ziel-Hash-Datei.LabEx?d?d?d?d: Die zu verwendende Passwortmaske.
Führen Sie nun den Befehl in Ihrem Terminal aus:
hashcat -m 13721 -a 3 veracrypt.hash LabEx?d?d?d?d
Hashcat wird starten. Da der Passwortraum klein ist, sollte der Angriff sehr schnell abgeschlossen sein. Sie sehen Statusaktualisierungen und dann das Endergebnis.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: VeraCrypt SHA512 + XTS 512 bit
Hash.Target......: veracrypt.hash
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Mask.......: LabEx?d?d?d?d [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XXXXXX H/s (0.01ms) @ Accel:X Loops:X
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 10000/10000 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LabEx0000 -> LabEx9999
Hardware.Mon.#1..: Util: 99%
veracrypt.hash:LabEx2024
All hashes have been recovered.
...
Erfolg! Die Zeile veracrypt.hash:LabEx2024 zeigt, dass Hashcat das Passwort erfolgreich wiederhergestellt hat.
Hashcat speichert geknackte Passwörter automatisch in einer Datei namens hashcat.potfile. Sie können das wiederhergestellte Passwort jederzeit mit der Option --show anzeigen:
hashcat -m 13721 --show veracrypt.hash
Dies gibt einfach den geknackten Hash und das Passwort erneut aus.
veracrypt.hash:LabEx2024
Herzlichen Glückwunsch, Sie haben erfolgreich ein VeraCrypt-Volume-Passwort mit Hashcat geknackt!
Zusammenfassung
In diesem Labor haben Sie praktische Erfahrungen in der Analyse von Passwortsicherheit gesammelt, indem Sie ein VeraCrypt-verschlüsseltes Volume angegriffen haben.
Sie haben erfolgreich die wichtigsten Schritte eines Passwortwiederherstellungsprozesses durchgeführt:
- Erstellung eines verschlüsselten Containers mit den Kommandozeilen-Tools von VeraCrypt.
- Extrahierung der 512-Byte-Hash-Daten, die für einen Offline-Angriff benötigt werden.
- Verwendung des Hilfesystems von Hashcat zur Identifizierung des korrekten Hash-Modus für Ihr Ziel.
- Konstruktion und Test eines gezielten Masken-Angriffs basierend auf einer bekannten Passwortstruktur.
- Ausführung des Angriffs zur erfolgreichen Wiederherstellung des Passworts des Volumes.
Diese Fähigkeiten sind grundlegend in den Bereichen Ethical Hacking und digitale Forensik und zeigen, wie Passwortrichtlinien und -strukturen auf Schwachstellen getestet werden können. Das Verständnis dieser Angriffsvektoren ist der erste Schritt zum Aufbau stärkerer Abwehrmaßnahmen.


