Hashcat Wörterbuchangriffe

LinuxBeginner
Jetzt üben

Einführung

Hashcat ist ein leistungsstarkes und vielseitiges Werkzeug zur Passwortwiederherstellung, das in der Cybersicherheit weit verbreitet ist, um die Passwortstärke zu testen und verlorene Passwörter wiederherzustellen. Es unterstützt zahlreiche Hashing-Algorithmen und verschiedene Angriffsmodi.

In diesem Lab konzentrieren Sie sich auf eine der grundlegendsten Techniken zum Knacken von Passwörtern: den Wörterbuchangriff (Dictionary Attack). Sie lernen, wie Sie den "Straight"-Angriffsmodus (-a 0) von Hashcat verwenden, um einen einfachen MD5-Hash mithilfe einer benutzerdefinierten Wortliste zu knacken. Diese praktische Erfahrung wird eine solide Grundlage für das Verständnis der Funktionsweise des Passwortknackens bieten.

Das Konzept des Wörterbuchangriffs (-a 0) verstehen

In diesem Schritt lernen Sie den Wörterbuchangriff und dessen Implementierung in Hashcat kennen.

Ein Wörterbuchangriff ist eine Methode zum Knacken eines passwortgeschützten Systems, indem systematisch jedes Wort aus einer Liste, die als Wörterbuch oder Wortliste (Wordlist) bezeichnet wird, als Passwort eingegeben wird. Es ist eine einfache, aber effektive Technik, insbesondere gegen schwache oder gängige Passwörter.

Hashcat bezeichnet diese Methode als "Straight"-Angriff, dem der Angriffsmodus 0 zugeordnet ist. Sie geben den Angriffsmodus mit der Option -a an.

Verwenden wir den Befehl hashcat --help, um Beispiele für den Angriffsmodus 0 anzuzeigen. Wir können die Ausgabe an grep weiterleiten, um die spezifischen Zeilen zu finden.

hashcat --help | grep -- "-a 0"

Sie sehen die folgende Ausgabe, die Beispiele für Wörterbuchangriffe mit -a 0 zeigt:

  Wordlist         | $P$   | hashcat -a 0 -m 400 example400.hash example.dict
  Wordlist + Rules | MD5   | hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule

Dies bestätigt, dass Sie für die Durchführung eines Wörterbuchangriffs die Option -a 0 in Ihrem Hashcat-Befehl verwenden werden, wobei -a 0 den Straight (Wörterbuch)-Angriffsmodus darstellt.

Eine Ziel-Hash-Datei und eine einfache Wortliste vorbereiten

In diesem Schritt bereiten Sie die beiden wesentlichen Dateien vor, die für einen Wörterbuchangriff benötigt werden: eine Datei, die den Ziel-Hash enthält, und eine Wortlistendatei. Alle Operationen werden im Verzeichnis ~/project durchgeführt.

Zuerst erstellen wir eine Datei zur Speicherung unseres Ziel-Hashs. Wir verwenden den MD5-Hash des Strings "password123", welcher 482c811da5d5b4bc6d497ffa98491e38 lautet.

Verwenden Sie den echo-Befehl, um eine Datei namens my_hash.txt zu erstellen, die diesen Hash enthält.

echo "482c811da5d5b4bc6d497ffa98491e38" > my_hash.txt

Als Nächstes erstellen Sie eine einfache Wortlistendatei namens my_wordlist.txt. Eine reale Wortliste kann Millionen von Wörtern enthalten, aber für dieses Lab erstellen wir eine kleine, die das korrekte Passwort enthält.

echo "password" > my_wordlist.txt
echo "123456" >> my_wordlist.txt
echo "password123" >> my_wordlist.txt
echo "qwerty" >> my_wordlist.txt

Überprüfen Sie nun den Inhalt beider Dateien mit dem cat-Befehl.

Prüfen Sie zuerst die Hash-Datei:

cat my_hash.txt

Erwartete Ausgabe:

482c811da5d5b4bc6d497ffa98491e38

Prüfen Sie dann die Wortlistendatei:

cat my_wordlist.txt

Erwartete Ausgabe:

password
123456
password123
qwerty

Sie verfügen nun über einen Ziel-Hash und eine Wortliste, bereit für den Angriff.

Einen Wörterbuchangriff auf einen MD5-Hash starten

In diesem Schritt starten Sie den Wörterbuchangriff gegen den vorbereiteten MD5-Hash.

Dazu müssen Sie einen Hashcat-Befehl zusammenstellen, der den Angriffsmodus, den Hash-Typ, die Hash-Datei und die Wortlistendatei angibt.

Die Befehlsstruktur lautet wie folgt:
hashcat [Optionen] [hash_datei] [wortlistendatei]

Hier sind die Optionen, die wir verwenden werden:

  • -a 0: Gibt den Straight (Wörterbuch)-Angriffsmodus an.
  • -m 0: Gibt den Hash-Typ an. 0 entspricht MD5. Es ist entscheidend, den Hash-Typ korrekt zuzuordnen.
  • --force: Diese Option ist oft in virtualisierten Umgebungen oder bei der Ausführung auf einer CPU erforderlich, um bestimmte Warnungen zu umgehen und Hashcat zum Starten zu zwingen.

Führen Sie nun den Befehl aus, um den Angriff zu starten:

hashcat -a 0 -m 0 my_hash.txt my_wordlist.txt --force

Hashcat startet und zeigt einen Statusbildschirm an. Da unsere Wortliste sehr klein ist, wird der Vorgang fast augenblicklich abgeschlossen sein. Die Ausgabe wird in etwa wie folgt aussehen (einige Details wie die Startzeit variieren):

hashcat (v6.2.6) starting

... (some initial warnings and info) ...

Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38
Time.Started.....: Sun Nov 19 10:30:00 2023 (0 secs)
Time.Estimated...: Sun Nov 19 10:30:00 2023 (0 secs)
Guess.Base.......: File (my_wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#*.........:   133.7 kH/s (0.02ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#*...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#*....: password123 -> qwerty
Hardware.Mon.#*..: Temp: 45c

Started: ...
Stopped: ...

Die Zeile Status...........: Cracked zeigt an, dass das Passwort erfolgreich in Ihrer Wortliste gefunden wurde.

Ausgabestatus und Schlüsselwörter analysieren

In diesem Schritt werden wir die Ausgabe des vorherigen Schritts genauer untersuchen, um deren Bedeutung zu verstehen. Wenn Hashcat einen Hash erfolgreich knackt, speichert es das Ergebnis in einer Datei, der sogenannten "Potfile", und meldet den Erfolg auf dem Bildschirm.

Lassen Sie uns die wichtigsten Zeilen der Statusausgabe aufschlüsseln:

  • Status...........: Cracked: Dies ist der wichtigste Indikator. Er bestätigt, dass mindestens ein Hash erfolgreich geknackt wurde. Wenn dort Exhausted stünde, würde dies bedeuten, dass Hashcat jedes Wort in der Wortliste ohne Erfolg versucht hat.
  • Hash.Type........: MD5: Bestätigt den angezielten Hash-Algorithmus.
  • Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38: Zeigt den angegriffenen Hash an.
  • Guess.Base.......: File (my_wordlist.txt): Gibt an, dass die Quelle der Passwortkandidaten unsere Wortlistendatei ist.
  • Recovered........: 1/1 (100.00%) Digests: Zeigt an, dass von 1 bereitgestellten Hash 1 wiederhergestellt wurde.
  • Progress.........: 4/4 (100.00%): Zeigt an, dass alle 4 Wörter aus unserer Wortliste getestet wurden.

Nach einem erfolgreichen Knacken speichert Hashcat den geknackten Hash und das entsprechende Klartextpasswort automatisch in seiner Potfile. Der Standardpfad für diese Datei ist ~/.local/share/hashcat/hashcat.potfile. Dies verhindert, dass Sie in Zukunft Zeit damit verschwenden, denselben Hash erneut zu knacken.

Sie können überprüfen, ob die Potfile erstellt wurde, indem Sie deren Inhalt auflisten, aber im nächsten Schritt werden wir eine direktere Hashcat-Funktion verwenden.

Das geknackte Passwort mit der Option '--show' anzeigen

In diesem Schritt erfahren Sie, wie Sie das geknackte Passwort mithilfe einer praktischen Hashcat-Option anzeigen können.

Obwohl Sie direkt in die Potfile schauen könnten, bietet Hashcat die Option --show, um die geknackten Passwörter für die Hashes in einer angegebenen Datei anzuzeigen. Es gleicht Ihre Hash-Datei mit seiner Potfile ab und gibt alle gefundenen Übereinstimmungen aus.

Um diese Option zu verwenden, müssen Sie die ursprüngliche Hash-Datei angeben und den Hash-Typ spezifizieren, genau wie Sie es beim Angriff getan haben.

Führen Sie den folgenden Befehl aus:

hashcat -m 0 my_hash.txt --show

Hashcat gibt das Ergebnis sofort im Format hash:password aus.

482c811da5d5b4bc6d497ffa98491e38:password123

Diese Ausgabe zeigt deutlich den ursprünglichen MD5-Hash und sein entsprechendes Klartextpasswort, "password123".

Zum Vergleich können Sie auch den Rohinhalt der Potfile anzeigen. Dies zeigt dieselben Informationen an, aber --show ist oft übersichtlicher, wenn Sie bestimmte Hashes überprüfen möchten.

cat ~/.local/share/hashcat/hashcat.potfile

Erwartete Ausgabe:

482c811da5d5b4bc6d497ffa98491e38:password123

Die Verwendung von --show ist der Standardweg, um nach bereits geknackten Passwörtern in der Datenbank von Hashcat zu suchen.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen für die Durchführung eines Wörterbuchangriffs (Dictionary Attack) mit Hashcat gelernt. Sie haben erfolgreich einen MD5-Hash geknackt, indem Sie Kandidaten aus einer kleinen, eigens erstellten Wortliste getestet haben.

Sie haben praktische Erfahrung mit den folgenden Schlüsselkompetenzen gesammelt:

  • Verständnis des Konzepts eines Wörterbuchangriffs und des Straight-Angriffsmodus (-a 0) von Hashcat.
  • Vorbereitung einer Zieldatei mit Hashes und einer Wortlistendatei.
  • Starten eines Angriffs auf einen MD5-Hash durch Angabe des korrekten Angriffsmodus (-a 0) und des Hash-Typs (-m 0).
  • Analyse des Statusbildschirms zur Bestätigung eines erfolgreichen Knackens.
  • Anzeigen des geknackten Passworts mithilfe der Option --show.

Dieses Wissen bildet eine entscheidende Grundlage für die Erforschung fortgeschrittener Passwort-Cracking-Techniken und das Verständnis der Bedeutung der Verwendung starker, einzigartiger Passwörter.