Einleitung
John the Ripper (JtR) ist ein leistungsstarkes und beliebtes Open-Source-Tool zur Passwortknackung. Während es für sich genommen sehr effektiv ist, wird sein wahres Potenzial erst durch die Integration in einen breiteren Workflow für Sicherheitstests mit anderen Tools freigesetzt. Die Automatisierung durch Skripte kann seine Effizienz weiter steigern und ermöglicht gestraffte und wiederholbare Aufgaben zur Passwortprüfung und -wiederherstellung.
In diesem Lab werden Sie untersuchen, wie John the Ripper mit anderen gängigen Sicherheitstools integriert werden kann. Wir werden die konzeptionellen Workflows für die Verwendung von JtR mit Hashcat, Metasploit und Aircrack-ng behandeln. Anschließend erhalten Sie praktische Erfahrung, indem Sie ein einfaches Bash-Skript schreiben, um eine JtR-Cracking-Sitzung zu automatisieren.
John the Ripper mit Hashcat verwenden (Konzeptionell)
In diesem Schritt werden wir die konzeptionelle Integration von John the Ripper und Hashcat besprechen. Beide sind führende Tools zur Passwortknackung, haben aber unterschiedliche Stärken. John the Ripper ist bekannt für seine CPU-basierte Knackungsleistung und seine Fähigkeit, viele Hash-Typen automatisch zu erkennen. Hashcat hingegen ist der weltweit schnellste Passwortknacker und zeichnet sich durch GPU-basierte Angriffe aus.
Obwohl sie oft als Alternativen betrachtet werden, können sie in einem Workflow gemeinsam eingesetzt werden. Sie könnten beispielsweise die Dienstprogramme von John the Ripper, wie unshadow, verwenden, um Passwort- und Shadow-Dateien von einem Linux-System zu extrahieren und zu kombinieren.
Beispiel-Workflow:
- Beschaffen Sie die Dateien
/etc/passwdund/etc/shadowvon einem Ziel-Linux-System. - Verwenden Sie das Dienstprogramm
unshadowvon JtR, um sie zu einer einzigen Datei zu kombinieren, die Benutzernamen und Hashes enthält:unshadow passwd shadow > hashes_for_cracking.txt. - Füttern Sie die resultierende Datei
hashes_for_cracking.txtin Hashcat, um dessen leistungsstarke GPU-Knackungsfähigkeiten zu nutzen.
Dieser Schritt ist rein konzeptionell, um Ihnen das Verständnis der potenziellen Synergien zu erleichtern. Hier sind keine Befehle auszuführen. Die wichtigste Erkenntnis ist, dass Dienstprogramme eines Tools verwendet werden können, um Daten für ein anderes vorzubereiten.
John the Ripper mit Metasploit integrieren (Konzeptionell)
In diesem Schritt werden wir die konzeptionelle Integration von John the Ripper mit dem Metasploit Framework untersuchen. Metasploit ist ein leistungsstarkes Framework für Penetrationstests, das zur Entdeckung, Ausnutzung und Validierung von Schwachstellen eingesetzt wird. Eine gängige Aufgabe nach der Ausnutzung (post-exploitation) ist das Auslesen von Passwort-Hashes von einem kompromittierten System. Hier wird JtR zu einem entscheidenden Teil des Workflows.
Beispiel-Workflow:
- Ein Angreifer erlangt über einen Metasploit-Exploit den ersten Zugriff auf ein System.
- Mithilfe eines Post-Exploitation-Moduls innerhalb einer Meterpreter-Sitzung, wie z. B.
run post/windows/gather/hashdump, liest der Angreifer die Passwort-Hashes aus (z. B. NTLM-Hashes aus einer Windows SAM-Datenbank). - Der Angreifer speichert diese Hashes in einer Datei auf seinem lokalen Rechner.
- John the Ripper wird dann offline verwendet, um diese Hashes zu knacken, wobei verschiedene Techniken wie Wörterbuchangriffe oder Brute-Force eingesetzt werden.
- Sobald ein Passwort geknackt ist, kann es zur Eskalation von Berechtigungen oder zur Pivotierung zu anderen Systemen im Netzwerk verwendet werden, möglicherweise unter Verwendung anderer Metasploit-Module wie
psexec.
Diese Integration demonstriert einen typischen Angriffszyklus, bei dem Metasploit für den Zugriff und JtR für das Offline-Knacken von Anmeldeinformationen verwendet wird. Dieser Schritt ist konzeptionell, und es müssen keine Befehle ausgeführt werden.
John the Ripper mit Aircrack-ng verwenden (Konzeptionell)
In diesem Schritt werden wir besprechen, wie John the Ripper mit der Aircrack-ng-Suite verwendet werden kann, um Wi-Fi-Passwörter zu knacken. Aircrack-ng ist eine Sammlung von Tools zur Überprüfung drahtloser Netzwerke. Ein wichtiger Teil einer WPA/WPA2-Prüfung ist die Erfassung des 4-Wege-Handshakes, der auftritt, wenn ein Client eine Verbindung zu einem Access Point herstellt. Dieser Handshake enthält einen Hash, der geknackt werden kann, um den Pre-Shared Key (PSK) des Netzwerks aufzudecken.
Beispiel-Workflow:
- Verwenden Sie Tools aus der Aircrack-ng-Suite, wie z. B.
airodump-ng, um den drahtlosen Datenverkehr zu überwachen und den WPA/WPA2-Handshake zu erfassen. Dies wird typischerweise als.cap-Datei gespeichert. - Die
.cap-Datei selbst ist kein Hash. Sie muss in ein Format konvertiert werden, das ein Passwortknacker verstehen kann. Für diese Konvertierung können Sieaircrack-ngoder andere Tools wiehcxpcaptoolverwenden. - Sie können beispielsweise
aircrack-ngmit der Option-Jverwenden, um eine Hashcat-kompatible Datei (.hccapx) zu erstellen, die auch John the Ripper verarbeiten kann. Der Befehl würde etwa so aussehen:aircrack-ng your_capture.cap -J output_hash_file. - Schließlich verwenden Sie John the Ripper, um die Hash-Datei mit einer Wörterliste zu knacken:
john --wordlist=passwords.txt output_hash_file.hccapx.
Dieser Workflow zeigt, wie ein spezialisiertes Tool für einen bestimmten Bereich (Wi-Fi) die Rohdaten für ein Allzweckwerkzeug wie JtR zur Verarbeitung bereitstellen kann. Dieser Schritt ist konzeptionell, und es sind keine Befehle erforderlich.
Skript für John the Ripper zur Automatisierung
In diesem Schritt gehen wir von der Theorie zur Praxis über. Der gebräuchlichste Weg, John the Ripper zu "integrieren", ist die Einbettung seiner Kommandozeilenschnittstelle in Skripte. Dies ermöglicht es Ihnen, wiederkehrende Aufgaben zu automatisieren und ihn in größere Toolchains zu integrieren. Wir erstellen ein einfaches Bash-Skript, um einen Wörterbuchangriff auszuführen, und zeigen dann die Ergebnisse an.
Erstellen wir zunächst das Automatisierungsskript. Verwenden Sie den nano-Editor, um eine neue Datei namens crack.sh in Ihrem aktuellen Verzeichnis, ~/project, zu erstellen.
nano crack.sh
Fügen Sie nun den folgenden Inhalt in die Datei ein. Dieses Skript nimmt eine Hash-Datei und eine Wörterliste als Eingabe, führt John aus und zeigt dann alle geknackten Passwörter an.
#!/bin/bash
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <hash_file> <wordlist_file>"
exit 1
fi
HASH_FILE=$1
WORDLIST=$2
echo "[-] Starting John the Ripper..."
john --wordlist="$WORDLIST" "$HASH_FILE" > /dev/null 2>&1
echo "[+] Cracking attempt finished."
echo "[+] Showing cracked passwords:"
john --show "$HASH_FILE"
Speichern Sie die Datei und beenden Sie nano, indem Sie Strg+X, dann Y und dann Enter drücken.
Als Nächstes müssen wir das Skript ausführbar machen.
chmod +x crack.sh
Erstellen wir nun eine einfache Wörterlistendatei für unseren Test. Das Setup-Skript für dieses Labor hat bereits eine Datei namens hashes.txt erstellt, die einen Beispiel-Hash enthält. Das Passwort für diesen Hash lautet password123.
echo "password123" > wordlist.txt
Führen Sie schließlich Ihr Automatisierungsskript aus. Geben Sie ihm die Datei hashes.txt und Ihre neue Datei wordlist.txt.
./crack.sh hashes.txt wordlist.txt
Sie sollten die folgende Ausgabe sehen, die anzeigt, dass das Skript John erfolgreich ausgeführt und das Passwort gefunden hat.
[-] Starting John the Ripper...
[+] Cracking attempt finished.
[+] Showing cracked passwords:
user1:password123
1 password hash cracked, 0 left
Sie haben nun erfolgreich ein einfaches Skript zur Automatisierung von John the Ripper erstellt!
John the Ripper API verstehen (falls zutreffend)
In diesem letzten Schritt werden wir das Konzept einer "John the Ripper API" klären. Wenn Entwickler von APIs (Application Programming Interfaces) sprechen, meinen sie oft eine REST-API für Webdienste oder eine gut dokumentierte Bibliothek für eine bestimmte Programmiersprache.
John the Ripper verfügt nicht über eine formelle, stabile öffentliche API in diesem Sinne. Seine primäre Schnittstelle ist die Kommandozeile (CLI), die leistungsfähig, flexibel und für die Interaktion und Skripterstellung konzipiert ist, wie Sie im vorherigen Schritt gezeigt haben.
Die Kernfunktionalität von JtR ist in einer Bibliothek enthalten, die manchmal als libjohn bezeichnet wird. Es ist technisch möglich, dass fortgeschrittene C-Programmierer diese Bibliothek verlinken, um benutzerdefinierte Anwendungen zu erstellen. Dies ist jedoch eine komplexe Aufgabe, kein typischer Anwendungsfall und wird nicht als öffentliche API unterstützt.
Daher bedeutet "Verwendung der JtR API" für die überwiegende Mehrheit der Benutzer und Integrationen:
- Aufrufen der JtR-Executable aus einem Skript (z. B. Bash, Python, Perl).
- Parsen der Kommandozeilenausgabe des Tools.
- Interaktion mit seinen Dateien, wie der Eingabe-Hash-Datei und der Datei
john.pot, in der geknackte Passwörter gespeichert werden.
Die wichtigste Erkenntnis ist, dass Integration und Automatisierung mit John the Ripper durch CLI-Skripte erreicht werden, nicht durch eine traditionelle Programmierbibliothek oder Web-API.
Zusammenfassung
In diesem Labor haben Sie untersucht, wie Sie die Fähigkeiten von John the Ripper durch die Integration mit anderen Tools und die Automatisierung seiner Ausführung erweitern können.
Sie haben die konzeptionellen Arbeitsabläufe für die Kombination von JtR mit anderen wichtigen Sicherheitstools kennengelernt:
- Verwendung der Dienstprogramme von JtR zur Vorbereitung von Hashes für das GPU-basierte Cracking von Hashcat.
- Verwendung von JtR zum Knacken von Hashes, die während der Post-Exploitation mit dem Metasploit Framework erhalten wurden.
- Verwendung von JtR zum Knacken von Wi-Fi-Handshakes, die von der Aircrack-ng-Suite erfasst wurden.
Anschließend haben Sie Theorie in die Praxis umgesetzt, indem Sie ein Bash-Skript geschrieben und ausgeführt haben, um eine Passwort-Cracking-Sitzung zu automatisieren, was die primäre Methode zur Integration von JtR in größere Arbeitsabläufe ist. Abschließend haben Sie klargestellt, dass die "API" von JtR seine leistungsstarke Kommandozeilenschnittstelle ist, die der Schlüssel zu seiner Flexibilität und seinem Integrationspotenzial ist.


