MD5-Hashes mit John the Ripper knacken

Kali LinuxBeginner
Jetzt üben

Einleitung

In diesem Lab erkunden Sie die Fähigkeiten von John the Ripper, einem weit verbreiteten Open-Source-Tool zum Knacken von Passwörtern. Sie konzentrieren sich auf das Knacken von MD5-Hashes, die häufig zur Speicherung von Passwortdarstellungen verwendet werden. Das Verständnis, wie Hashes geknackt werden, ist für Sicherheitsexperten entscheidend, um die Stärke von Passwörtern zu bewerten und Schwachstellen zu identifizieren. Sie lernen, MD5-Hashes zu generieren, sie für John the Ripper vorzubereiten und dann verschiedene Knacktechniken anzuwenden, darunter Wordlist-Angriffe und den inkrementellen Modus.

MD5-Hashes aus Passwörtern generieren

In diesem Schritt generieren Sie MD5-Hashes für einige Beispielpasswörter. Dies simuliert ein Szenario, in dem Sie Zugriff auf gehashte Passwörter haben und diese knacken müssen. Sie verwenden den Befehl echo, der an md5sum weitergeleitet wird, um diese Hashes zu erstellen.

Zuerst generieren wir einen MD5-Hash für das Passwort password123:

echo -n "password123" | md5sum

Sie sollten eine Ausgabe sehen, die dieser ähnelt:

202cb962ac59075b964b07152d234b70  -

Generieren Sie als Nächstes MD5-Hashes für einige weitere Passwörter: labex und secret.

echo -n "labex" | md5sum
echo -n "secret" | md5sum

Die Ausgaben werden sein:

202cb962ac59075b964b07152d234b70  -
a0b923820dcc509a86619210ed1572e4  -
5ebe2294ecd0e0f08eab7690d2a6ee69  -

Diese generierten Hashes werden in den folgenden Schritten zum Knacken verwendet.

Eine Hash-Datei für MD5 erstellen

In diesem Schritt erstellen Sie eine Datei, die die von Ihnen generierten MD5-Hashes enthält. John the Ripper erwartet typischerweise eine Datei als Eingabe, wobei jede Zeile einen zu knackenden Hash enthält. Sie erstellen eine Datei namens hashes.txt in Ihrem Verzeichnis ~/project und füllen diese mit den MD5-Hashes.

Zuerst erstellen wir die Datei hashes.txt und fügen die MD5-Hashes hinzu. Wir fügen nur den Hash-Teil hinzu, nicht das - oder den Dateinamen.

echo "202cb962ac59075b964b07152d234b70" > ~/project/hashes.txt
echo "a0b923820dcc509a86619210ed1572e4" >> ~/project/hashes.txt
echo "5ebe2294ecd0e0f08eab7690d2a6ee69" >> ~/project/hashes.txt

Überprüfen Sie nun den Inhalt der Datei hashes.txt mit dem Befehl cat:

cat ~/project/hashes.txt

Die Ausgabe sollte wie folgt aussehen:

202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69

Diese Datei dient als Eingabe für John the Ripper.

Hash-Typ für John the Ripper angeben

In diesem Schritt lernen Sie, wie Sie John the Ripper mitteilen, mit welchem Hash-Typ er es zu tun hat. John the Ripper unterstützt eine Vielzahl von Hash-Typen, und die Angabe des korrekten Typs ist entscheidend für erfolgreiches Knacken. Für MD5-Hashes verwenden Sie das Format raw-md5.

Um zu überprüfen, ob John the Ripper raw-md5 erkennt und um andere unterstützte Formate anzuzeigen, können Sie die Option --list=formats verwenden. Für dieses Lab werden wir jedoch direkt das Format raw-md5 verwenden.

Sie können John the Ripper mit einem einzelnen Hash testen und das Format mit der Option --format angeben. Dies wird ihn noch nicht knacken, aber es bestätigt, dass John das Format verarbeiten kann.

john --format=raw-md5 ~/project/hashes.txt --stdout

Dieser Befehl versucht, die Hashes in hashes.txt als raw-md5 zu verarbeiten und sie auf der Standardausgabe auszugeben. Sie werden noch keine geknackten Passwörter sehen, aber es bestätigt, dass das Format erkannt wird. Die Ausgabe sind die Hashes selbst, da John sie nur verarbeitet, ohne sie zu knacken.

202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69

Dieser Schritt stellt sicher, dass John the Ripper korrekt für die Verarbeitung von MD5-Hashes konfiguriert ist.

MD5-Hashes mit einer Wortliste knacken

In diesem Schritt verwenden Sie eine Wortliste, um die MD5-Hashes zu knacken. Ein Wortlisten-Angriff versucht, Passwörter zu knacken, indem jedes Wort aus einer vordefinierten Liste ausprobiert wird. Dies ist eine gängige und oft effektive Methode zum Knacken schwacher Passwörter.

Zuerst benötigen Sie eine Wortliste. Für dieses Lab erstellen Sie eine einfache Wortlistendatei namens wordlist.txt in Ihrem Verzeichnis ~/project, die gängige Passwörter enthält, einschließlich derer, die Sie zuvor gehasht haben.

echo "password123" > ~/project/wordlist.txt
echo "labex" >> ~/project/wordlist.txt
echo "secret" >> ~/project/wordlist.txt
echo "test" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt

Verwenden Sie nun John the Ripper mit der Option wordlist, um die Hashes zu knacken:

john --format=raw-md5 --wordlist=~/project/wordlist.txt ~/project/hashes.txt

John the Ripper verarbeitet die Datei hashes.txt und versucht jedes Wort aus wordlist.txt gegen die MD5-Hashes. Wenn eine Übereinstimmung gefunden wird, wird das geknackte Passwort angezeigt.

Die Ausgabe sollte die geknackten Passwörter anzeigen:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (202cb962ac59075b964b07152d234b70)
labex            (a0b923820dcc509a86619210ed1572e4)
secret           (5ebe2294ecd0e0f08eab7690d2a6ee69)
3g 0:00:00:00 DONE (2023-10-27 10:30) 100.0% (ETA: 00:00:00) 3.000g/s 15.00p/s 15.00c/s 15.00C/s password123 labex secret
Session completed.

Sie können auch john --show verwenden, um die geknackten Passwörter aus der John the Ripper Pot-Datei anzuzeigen:

john --show ~/project/hashes.txt

Ausgabe:

202cb962ac59075b964b07152d234b70:password123
a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret

3 password hashes cracked, 0 left

Dies zeigt die Effektivität von Wortlisten-Angriffen gegen gängige oder leicht zu erratende Passwörter.

MD5-Hashes mit Inkrementalmodus knacken

In diesem Schritt verwenden Sie den Inkrementalmodus von John the Ripper, um MD5-Hashes zu knacken. Der Inkrementalmodus ist ein leistungsstarker Brute-Force-Angriff, der Zeichenkombinationen basierend auf einem Zeichensatz (z. B. Kleinbuchstaben, Zahlen, Symbole) ausprobiert. Er ist nützlich, wenn ein Wortlisten-Angriff fehlschlägt, da er nicht auf bereits vorhandenen Wörtern basiert.

Zuerst löschen wir die Pot-Datei von John, um sicherzustellen, dass wir für diesen Knackversuch frisch beginnen. Dies ist wichtig, da John geknackte Passwörter speichert und wir den Knackprozess erneut sehen möchten.

john --session=my_session --restore=NONE

Versuchen wir nun, die Hashes im Inkrementalmodus zu knacken. Zu Demonstrationszwecken verwenden wir einen sehr kleinen Zeichensatz und eine kurze maximale Länge, um die Knackzeit überschaubar zu halten. In einem realen Szenario kann der Inkrementalmodus je nach Komplexität und Länge des Passworts sehr lange dauern.

john --format=raw-md5 --incremental=alnum --max-len=8 ~/project/hashes.txt

Hier:

  • --incremental=alnum: Weist John an, alphanumerische Zeichen (a-z, A-Z, 0-9) zu verwenden. John verfügt über vordefinierte Inkrementalmodi wie alnum, alpha, digits usw.
  • --max-len=8: Begrenzt die maximale Passwortlänge auf 8 Zeichen. Dies ist entscheidend, um die Knackzeit für dieses Lab kurz zu halten.

John the Ripper beginnt mit der Generierung und dem Testen von Kombinationen. Da unsere Passwörter (password123, labex, secret) innerhalb des alnum-Zeichensatzes und der max-len=8-Grenze liegen (für labex und secret), sollte John sie schließlich knacken. password123 ist 11 Zeichen lang und wird daher mit max-len=8 nicht geknackt.

Die Ausgabe zeigt die geknackten Passwörter, sobald John sie findet:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
labex            (a0b923820dcc509a86619210ed1572e4)
secret           (5ebe2294ecd0e0f08eab7690d2a6ee69)
2g 0:00:00:00 DONE (2023-10-27 10:35) 100.0% (ETA: 00:00:00) 2.000g/s 10.00p/s 10.00c/s 10.00C/s labex secret
Session completed.

Sie können erneut john --show verwenden, um die geknackten Passwörter anzuzeigen:

john --show ~/project/hashes.txt

Ausgabe:

a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret

2 password hashes cracked, 1 left

Beachten Sie, dass password123 diesmal nicht geknackt wurde, da seine Länge (11 Zeichen) das Limit von --max-len=8 überschritten hat. Dies unterstreicht die Bedeutung der Festlegung geeigneter Parameter für inkrementelle Angriffe.

Zusammenfassung

In diesem Lab haben Sie erfolgreich John the Ripper verwendet, um MD5-Hashes zu knacken. Sie haben damit begonnen, MD5-Hashes aus Beispielpasswörtern zu generieren und dann eine Hash-Datei für John the Ripper erstellt, die dieser verarbeiten sollte. Sie haben gelernt, wie der Hash-Typ (raw-md5) spezifiziert wird, und dann zwei verschiedene Knacktechniken angewendet: Wortlisten-Angriff und Inkrementalmodus.

Sie haben beobachtet, dass Wortlisten-Angriffe gegen gängige Passwörter, die in Wörterbüchern gefunden werden, effektiv sind, während der Inkrementalmodus einen Brute-Force-Ansatz für komplexere oder unbekannte Passwörter bietet, wenn auch mit potenziell viel längeren Knackzeiten. Dieses Lab vermittelt ein grundlegendes Verständnis von Passwortknacktechniken mit John the Ripper, was eine wertvolle Fähigkeit für Cybersicherheitsexperten ist.