Hashes aus einer John the Ripper Potfile knacken

DockerBeginner
Jetzt üben

Einleitung

John the Ripper (JtR) ist ein beliebtes Werkzeug zum Knacken von Passwörtern. Wenn es ein Passwort erfolgreich knackt, speichert es das Ergebnis in einer Datei namens john.pot, die oft als "Potfile" bezeichnet wird. Dies verhindert, dass JtR in Zukunft Zeit damit verschwendet, denselben Hash erneut zu knacken.

In diesem Lab arbeiten Sie in einem Szenario, in dem ein Versuch zum Knacken von Passwörtern bereits teilweise von John the Ripper abgeschlossen wurde. Ihre Aufgabe ist es, die Hashes zu identifizieren, die nicht geknackt wurden, und dann ein anderes leistungsstarkes Werkzeug, Hashcat, zu verwenden, um zu versuchen, die verbleibenden zu knacken. Dieser Workflow ist üblich bei Penetrationstests und Sicherheitsaudits, bei denen mehrere Werkzeuge eingesetzt werden, um die Ergebnisse zu maximieren.

Sie lernen:

  • Das JtR Potfile zu lokalisieren und zu verstehen.
  • Kommandozeilenwerkzeuge zum Extrahieren und Vergleichen von Hash-Listen zu verwenden.
  • Hashcat für einen Wörterbuchangriff auf die verbleibenden Hashes zu verwenden.

Lokalisieren einer vorhandenen John the Ripper Potfile

In diesem Schritt lokalisieren und inspizieren Sie die Datei john.pot. Diese Datei wird automatisch von John the Ripper erstellt, um die Hashes, die es erfolgreich geknackt hat, zusammen mit ihren Klartext-Passwörtern zu speichern. Der Standardpfad für diese Datei befindet sich in einem versteckten Verzeichnis namens .john im Home-Verzeichnis des Benutzers.

Unsere Laborumgebung wurde mit einer john.pot-Datei aus einer simulierten vorherigen Knack-Sitzung vorkonfiguriert. Lassen Sie uns deren Inhalt anzeigen.

Verwenden Sie den Befehl cat, um den Inhalt der Potfile anzuzeigen. Ihre gesamte Arbeit wird im Standardverzeichnis ~/project ausgeführt, aber die Potfile befindet sich in /home/labex/.john/.

cat ~/.john/john.pot

Sie sollten die folgende Ausgabe sehen, die die Hashes und die entsprechenden Passwörter anzeigt, die JtR bereits gefunden hat.

$1$abc$gqNud23o1vjR/pYd9gH7k/:password123
$1$def$H9g2s3kLd/fG1hJkLpQ9r/:labex
$1$ghi$aB4c5dE6fG7hI8jK9lM0n/:secret

Das Format einer JtR Potfile verstehen

In diesem Schritt analysieren wir die Struktur der Datei john.pot. Das Verständnis dieses Formats ist entscheidend für die Verarbeitung seiner Daten.

Wie Sie im vorherigen Schritt gesehen haben, hat jede Zeile in der Potfile ein bestimmtes Format:

HASH:KLARTEXT_PASSWORT

Lassen Sie uns die erste Zeile aus unserer Datei aufschlüsseln:

$1$abc$gqNud23o1vjR/pYd9gH7k/:password123

  • $1$abc$gqNud23o1vjR/pYd9gH7k/: Dies ist der vollständige Hash-String, der geknackt wurde. Dieses Format (beginnend mit $1$) zeigt an, dass es sich um einen MD5-crypt-Hash handelt, der häufig in älteren Linux-Systemen verwendet wird.
  • :: Ein Doppelpunkt wird als Trennzeichen verwendet, das den Hash vom Passwort trennt.
  • password123: Dies ist das Klartext-Passwort, das dem Hash entspricht.

Unser Ziel ist es herauszufinden, welche Hashes aus unserer ursprünglichen Liste (all_hashes.txt) nicht in dieser Potfile vorhanden sind. Dazu müssen wir zunächst nur den Hash-Teil aus jeder Zeile in john.pot isolieren. Dies werden wir im nächsten Schritt tun. Dieser aktuelle Schritt dient dem konzeptionellen Verständnis, daher gibt es keine auszuführenden Befehle.

Hashes aus der JtR Potfile extrahieren

In diesem Schritt extrahieren Sie nur die Hash-Werte aus der Datei john.pot. Wir können den Befehl cut verwenden, ein Standard-Linux-Dienstprogramm zum Herausschneiden von Abschnitten aus jeder Zeile einer Datei.

Wir weisen cut an, den Doppelpunkt (:) als Trennzeichen zu verwenden und das erste Feld (-f1) zu extrahieren. Die Ausgabe leiten wir in eine neue Datei namens cracked_hashes.txt in Ihrem aktuellen Verzeichnis (~/project) um.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

cut -d: -f1 ~/.john/john.pot > cracked_hashes.txt

Überprüfen Sie nun, ob die Datei korrekt erstellt wurde, indem Sie deren Inhalt anzeigen:

cat cracked_hashes.txt

Die Ausgabe sollte nur die Hash-Strings enthalten:

$1$abc$gqNud23o1vjR/pYd9gH7k/
$1$def$H9g2s3kLd/fG1hJkLpQ9r/
$1$ghi$aB4c5dE6fG7hI8jK9lM0n/

Die Hashes für einen Hashcat-Angriff neu formatieren

In diesem Schritt identifizieren Sie die Hashes, die JtR nicht knacken konnte. Sie haben eine Datei mit allen ursprünglichen Hashes (all_hashes.txt) und eine Datei mit den bereits geknackten Hashes (cracked_hashes.txt). Durch den Vergleich dieser beiden Dateien können Sie eine neue Liste erstellen, die nur die nicht geknackten Hashes enthält.

Wir werden den Befehl grep verwenden, um dies zu erreichen. Die von uns verwendeten Flags sind:

  • -v: Kehrt die Übereinstimmung um und wählt nicht übereinstimmende Zeilen aus.
  • -F: Behandelt Muster als feste Zeichenketten, nicht als reguläre Ausdrücke.
  • -f file: Holt Muster aus der angegebenen Datei.

Dieser Befehl liest die Muster aus cracked_hashes.txt und entfernt alle übereinstimmenden Zeilen aus all_hashes.txt, wobei das Ergebnis in uncracked_hashes.txt gespeichert wird.

grep -v -F -f cracked_hashes.txt all_hashes.txt > uncracked_hashes.txt

Überprüfen Sie nun den Inhalt Ihrer neuen Datei. Sie sollte die drei Hashes enthalten, die nicht in der Potfile waren.

cat uncracked_hashes.txt

Sie sollten die folgende Ausgabe sehen:

user4:$1$jkl$oP1qR2sT3uV4wX5yZ6a7b/
user5:$1$mno$c8d9e0f1g2h3i4j5k6l7m/
user6:$1$pqr$n9o8p7q6r5s4t3u2v1w0x/

Diese Datei ist nun bereit für die Verwendung mit Hashcat.

Hashcat zum Knacken von JtR-verpassten Hashes verwenden

In diesem letzten Schritt verwenden Sie Hashcat, um die verbleibenden Hashes anzugreifen. Hashcat ist ein sehr schneller und vielseitiger Passwort-Cracker, der GPUs für massive Leistungssteigerungen nutzen kann.

Die grundlegende Syntax für einen Wörterbuchangriff mit Hashcat lautet hashcat -m <mode> <hash_file> <wordlist_file>.

  • -m 500: Dies gibt den Hash-Typ an. 500 entspricht MD5-crypt, dem Hash-Typ, mit dem wir arbeiten.
  • --force: Diese Option ist in virtualisierten oder containerisierten Umgebungen wie diesem Labor oft erforderlich, um Warnungen zu umgehen und Hashcat zum Ausführen zu zwingen.

Führen Sie nun Hashcat gegen die Datei uncracked_hashes.txt mit der bereitgestellten wordlist.txt aus.

hashcat -m 500 --force uncracked_hashes.txt wordlist.txt

Hashcat wird gestartet. Sie sehen Statusinformationen, während es läuft. Da unsere Wortliste klein ist und die richtigen Passwörter enthält, wird der Prozess sehr schnell sein.

...
Session..........: hashcat
Status...........: Running
Hash.Name........: md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)
Hash.Target......: uncracked_hashes.txt
...
Approaching final keyspace - workload adjusted.

Session..........: hashcat
Status...........: Cracked
...

Sobald Hashcat fertig ist, speichert es die geknackten Passwörter in seiner eigenen Potfile. Um die neu geknackten Passwörter anzuzeigen, können Sie die Option --show verwenden.

hashcat -m 500 --force --show uncracked_hashes.txt

Die Ausgabe zeigt die Hashes und ihre neu entdeckten Klartext-Passwörter an.

$1$jkl$oP1qR2sT3uV4wX5yZ6a7b/:dragon
$1$mno$c8d9e0f1g2h3i4j5k6l7m/:qwerty
$1$pqr$n9o8p7q6r5s4t3u2v1w0x/:sunshine

Herzlichen Glückwunsch, Sie haben erfolgreich die Ausgabe eines Cracking-Tools verwendet, um die Eingabe eines anderen zu steuern!

Zusammenfassung

In diesem Labor haben Sie einen praktischen Workflow erlernt, um die Stärken verschiedener Passwort-Cracking-Tools zu kombinieren. Sie begannen mit einer bereits vorhandenen John the Ripper Potfile, die die Ergebnisse einer früheren Cracking-Sitzung darstellt.

Sie haben erfolgreich:

  • Den Inhalt einer john.pot-Datei gefunden und interpretiert.
  • Den cut-Befehl verwendet, um spezifische Datenfelder zu extrahieren.
  • Den grep-Befehl verwendet, um zwei Listen zu vergleichen und die nicht geknackten Hashes zu isolieren.
  • Einen Hashcat-Wörterbuchangriff auf die verbleibenden Hashes gestartet und diese erfolgreich geknackt.

Dieser Prozess der Identifizierung verbleibender Arbeit und der Weitergabe an ein anderes Werkzeug ist eine äußerst effiziente Strategie bei realen Sicherheitsbewertungen, die es Ihnen ermöglicht, mehr abzudecken und Ihre Erfolgschancen zu erhöhen.