Kali Passwort-Cracking mit John

Kali LinuxKali LinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie die Grundlagen des Passwort-Crackings mit Kali Linux auf der LabEx VM, wobei der Schwerpunkt auf dem leistungsstarken Tool John the Ripper liegt. Das Hauptziel ist es, zu verstehen, wie man Linux-Passwort-Hashes knackt, also verschlüsselte Darstellungen von Passwörtern, die typischerweise in der Datei /etc/shadow gespeichert werden. Diese Fähigkeit ist im Penetration Testing unerlässlich, um schwache Passwörter zu identifizieren und die Systemsicherheit zu verbessern. Durch geführte, schrittweise Anweisungen arbeiten Sie mit Beispiel-Hash-Dateien, erstellen und verwenden benutzerdefinierte Wortlisten, vergleichen Cracking-Tools wie John the Ripper und Hashcat und speichern Ergebnisse zur Analyse. Dieses Lab wurde für Anfänger konzipiert und gewährleistet eine klare und praktische Lernerfahrung in einer kontrollierten Umgebung.

Einrichten der Umgebung und Installieren der Tools

In diesem ersten Schritt richten wir die Umgebung innerhalb des Kali Linux Containers ein und installieren die notwendigen Tools für das Passwort-Cracking. Wenn Sie das Terminal in der LabEx VM öffnen, werden Sie automatisch mit der Shell des Kali Linux Containers verbunden. Es ist nicht erforderlich, den Container manuell zu starten oder die Shell zu betreten; die Umgebung ist bereits für Sie konfiguriert.

Bevor wir fortfahren, wollen wir die Tools verstehen, die wir verwenden werden. John the Ripper ist ein weit verbreitetes Passwort-Cracking-Tool, das verschiedene Hash-Typen verarbeiten kann, einschließlich derer, die in Linux-Systemen verwendet werden. Hashcat ist ein weiteres leistungsstarkes Tool, das für seine Geschwindigkeit bekannt ist, insbesondere mit GPU-Unterstützung, obwohl wir es hier im Basismodus verwenden werden. Beide Tools sind für Penetration-Testing-Aufgaben wie das Knacken von Passwort-Hashes unerlässlich.

Lassen Sie uns nun die Paketliste aktualisieren und diese Tools installieren. Führen Sie die folgenden Befehle im Terminal des Kali Linux Containers aus, um sicherzustellen, dass das System auf dem neuesten Stand ist und um John the Ripper und Hashcat zu installieren. Drücken Sie nach jedem Befehl die Eingabetaste:

apt update
apt install -y john hashcat

Diese Befehle aktualisieren die Paketliste und installieren beide Tools, falls sie noch nicht vorhanden sind. Der Vorgang kann einige Minuten dauern, bitte warten Sie, bis er abgeschlossen ist. Sie sehen eine Ausgabe, die den Fortschritt der Installation anzeigt, die so aussehen könnte:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Setting up john (1.9.0-2) ...
Setting up hashcat (6.2.5-1) ...

Sobald die Installation abgeschlossen ist, überprüfen Sie, ob John the Ripper installiert ist, indem Sie seine Version überprüfen. Führen Sie diesen Befehl aus:

john --version

Sie sollten eine ähnliche Ausgabe sehen, die bestätigt, dass das Tool bereit ist:

John the Ripper 1.9.0-jumbo-1

Als Nächstes überprüfen Sie die Hashcat-Installation, indem Sie Folgendes ausführen:

hashcat --version

Die erwartete Ausgabe sieht in etwa so aus:

v6.2.5

Dieser Schritt stellt sicher, dass Ihre Kali Linux-Umgebung mit den erforderlichen Tools für das Passwort-Cracking bereit ist. Mit der Installation von John the Ripper und Hashcat sind Sie bereit, im nächsten Schritt mit der Erstellung von Beispieldaten für das Cracking fortzufahren.

Erstellen von Beispiel-Hash-Dateien für das Cracking

Nachdem Ihre Umgebung mit den notwendigen Tools eingerichtet wurde, bereiten wir Beispieldaten für die Arbeit vor. In diesem Schritt erstellen wir eine Beispieldatei, die Dummy-Linux-Passwort-Hashes enthält. Diese Hashes simulieren das Format, das in der Datei /etc/shadow auf Linux-Systemen gefunden wird, in der verschlüsselte Benutzerpasswörter gespeichert werden. Dies ist eine sichere Methode, um das Passwort-Cracking zu üben, ohne auf echte Systemdateien zuzugreifen.

Linux-Passwort-Hashes in /etc/shadow verwenden typischerweise Algorithmen wie SHA-512, was durch $6$ in der Hash-Zeichenkette angezeigt wird. Unser Ziel ist es, eine Datei mit Dummy-Hashes zu erstellen, die mit Cracking-Tools verwendet werden können. Wir arbeiten im Standardverzeichnis innerhalb des Kali Linux Containers, das /root oder Ihr aktuelles Arbeitsverzeichnis ist, wenn Sie den Container betreten.

Erstellen wir eine Datei namens sample_hashes.txt im Verzeichnis /root. Führen Sie den folgenden Befehl aus, um diese Datei zu erstellen und mit Dummy-Daten zu füllen. Drücken Sie nach der Eingabe des Befehls die Eingabetaste:

echo -e "user1:\$6\$randomsalt\$hashedpasswordstring:18234:0:99999:7:::\nuser2:\$6\$anothersalt\$anotherhashedpasswordstring:18234:0:99999:7:::" > /root/sample_hashes.txt

Dieser Befehl verwendet echo mit der Option -e, um Zeilenumbruchzeichen (\n) zu interpretieren, und schreibt zwei Dummy-Hash-Einträge in sample_hashes.txt. Um zu bestätigen, dass die Datei korrekt erstellt wurde, zeigen Sie ihren Inhalt an, indem Sie Folgendes ausführen:

cat /root/sample_hashes.txt

Sie sollten eine Ausgabe wie diese sehen, die die beiden Dummy-Benutzereinträge mit ihren Hash-Zeichenketten anzeigt:

user1:$6$randomsalt$hashedpasswordstring:18234:0:99999:7:::
user2:$6$anothersalt$anotherhashedpasswordstring:18234:0:99999:7:::

Diese Datei ahmt die Struktur der /etc/shadow-Einträge nach, wobei $6$ den SHA-512-Hashing-Algorithmus angibt. Mit diesen Beispieldaten, die bereit sind, haben Sie erfolgreich ein sicheres Ziel für das Üben des Passwort-Crackings eingerichtet. Im nächsten Schritt verwenden wir John the Ripper, um zu versuchen, diese Hashes mit seinen Standardeinstellungen zu knacken.

Hashes mit John the Ripper knacken

Nachdem die Beispiel-Hash-Datei fertig ist, wollen wir uns mit dem Passwort-Cracking mit John the Ripper beschäftigen. Dieses Tool wurde entwickelt, um die Passwortstärke zu testen, indem versucht wird, Hashes in Klartext-Passwörter umzukehren. In diesem Schritt verwenden wir John the Ripper mit seinen Standardeinstellungen, um die Hashes in der Datei sample_hashes.txt zu knacken. Dies ist eine grundlegende Fähigkeit im Penetration Testing zur Identifizierung schwacher Passwörter.

John the Ripper arbeitet, indem es Hashes mit einer Liste potenzieller Passwörter vergleicht, oft unter Verwendung von integrierten Wortlisten und Regeln, um gängige Muster zu erraten. Da unsere Dummy-Hashes zum Lernen vereinfacht wurden, kann das Tool sie mit den Standardeinstellungen knacken oder auch nicht, aber der Fokus liegt hier auf dem Verständnis des Prozesses.

Stellen Sie sicher, dass Sie sich in der Shell des Kali Linux Containers befinden, die Sie automatisch betreten, wenn Sie das Terminal öffnen. Wir arbeiten im Verzeichnis /root, in dem sich die Datei sample_hashes.txt befindet. Führen Sie den folgenden Befehl aus, um den Cracking-Prozess mit John the Ripper zu starten:

john /root/sample_hashes.txt

Dieser Befehl weist John the Ripper an, die Hashes aus sample_hashes.txt zu laden und zu versuchen, sie mit seiner Standard-Wortliste und seinen Regeln zu knacken. Der Vorgang kann einige Sekunden oder Minuten dauern. Während der Ausführung sehen Sie möglicherweise eine Ausgabe wie diese:

Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 OpenMP threads
Proceeding with single mode
Trying common passwords...

Überprüfen Sie nach Abschluss des Vorgangs, ob Passwörter geknackt wurden, indem Sie diesen Befehl ausführen:

john --show /root/sample_hashes.txt

Die Ausgabe zeigt alle geknackten Passwörter an, die möglicherweise so aussehen, wenn sie erfolgreich waren:

user1:password123
user2:simplepass
2 password hashes cracked, 0 left

Wenn keine Passwörter geknackt werden, zeigt die Ausgabe an, dass keine Hashes aufgelöst wurden, was für Lernzwecke in Ordnung ist. Der Schlüssel ist zu verstehen, wie man den Cracking-Prozess initiiert und Ergebnisse anzeigt. Dieser Schritt führt Sie in die grundlegende Verwendung von John the Ripper ein. Im nächsten Schritt werden wir unsere Cracking-Bemühungen verbessern, indem wir eine benutzerdefinierte Wortliste verwenden.

Verwenden einer benutzerdefinierten Wortliste mit John the Ripper

Im vorherigen Schritt haben wir John the Ripper mit seinen Standardeinstellungen verwendet. Nun werden wir unseren Cracking-Erfolg verbessern, indem wir eine benutzerdefinierte Wortliste erstellen und verwenden. Eine Wortliste ist eine Datei, die potenzielle Passwörter enthält, die ein Cracking-Tool gegen Hashes testet. Benutzerdefinierte Wortlisten können so angepasst werden, dass sie gängige Passwörter oder spezifische Begriffe enthalten, die für ein Ziel relevant sind, wodurch sich die Erfolgschancen oft erhöhen.

Wir werden weiterhin in der Shell des Kali Linux Containers im Verzeichnis /root arbeiten. Erstellen wir eine Datei namens custom_wordlist.txt mit einer kleinen Liste potenzieller Passwörter zur Demonstration. Führen Sie den folgenden Befehl aus, um diese Datei zu erstellen:

echo -e "password123\nadmin123\nsimplepass\ntest1234\nqwerty" > /root/custom_wordlist.txt

Dieser Befehl schreibt fünf Beispielpasswörter in custom_wordlist.txt. Um zu bestätigen, dass die Datei korrekt erstellt wurde, zeigen Sie ihren Inhalt mit folgendem Befehl an:

cat /root/custom_wordlist.txt

Sie sollten die Liste der Passwörter wie folgt sehen:

password123
admin123
simplepass
test1234
qwerty

Nun wollen wir diese benutzerdefinierte Wortliste mit John the Ripper verwenden, um die Hashes in sample_hashes.txt zu knacken. Führen Sie den folgenden Befehl aus, um den Cracking-Prozess zu starten:

john --wordlist=/root/custom_wordlist.txt /root/sample_hashes.txt

Dieser Befehl gibt die benutzerdefinierte Wortliste mit der Option --wordlist an. Der Vorgang kann einige Sekunden dauern, und Sie sehen möglicherweise eine Ausgabe wie diese:

Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 OpenMP threads
Proceeding with wordlist mode

Überprüfen Sie nach Abschluss die Ergebnisse, indem Sie Folgendes ausführen:

john --show /root/sample_hashes.txt

Wenn Passwörter mit Einträgen in der Wortliste übereinstimmen, könnte die Ausgabe so aussehen:

user1:password123
user2:simplepass
2 password hashes cracked, 0 left

Wenn keine zusätzlichen Passwörter geknackt werden, deutet dies darauf hin, dass die Hashes nicht mit unserer kleinen Wortliste übereinstimmen, was für Lernzwecke akzeptabel ist. Dieser Schritt zeigt, wie man Cracking-Versuche mit benutzerdefinierten Daten verbessert. Als Nächstes werden wir diesen Ansatz vergleichen, indem wir Hashcat auf denselben Hashes verwenden.

Hashes mit Hashcat zum Vergleich knacken

Nachdem wir John the Ripper verwendet haben, wollen wir uns nun mit Hashcat beschäftigen, einem weiteren leistungsstarken Passwort-Cracking-Tool. Hashcat ist bekannt für seine Geschwindigkeit und die Unterstützung verschiedener Angriffsmodi, was es zu einer wertvollen Alternative im Penetration Testing macht. In diesem Schritt werden wir Hashcat verwenden, um zu versuchen, dieselben Hashes zu knacken, und seinen Ansatz mit dem von John the Ripper vergleichen. Wir werden uns auf einen einfachen Wörterbuchangriff mit unserer benutzerdefinierten Wortliste konzentrieren.

Zuerst müssen wir die Hash-Datei für Hashcat vorbereiten, da diese nur den Hash-Teil ohne Benutzernamen oder zusätzliche Felder benötigt. Wir extrahieren die Hashes aus sample_hashes.txt in eine neue Datei namens clean_hashes.txt. Führen Sie diesen Befehl in der Shell des Kali Linux Containers aus dem Verzeichnis /root aus:

awk -F':' '{print $2}' /root/sample_hashes.txt > /root/clean_hashes.txt

Bestätigen Sie den Inhalt der neuen Datei, indem Sie Folgendes ausführen:

cat /root/clean_hashes.txt

Sie sollten eine Ausgabe sehen, die nur die Hash-Strings anzeigt, wie diese:

$6$randomsalt$hashedpasswordstring
$6$anothersalt$anotherhashedpasswordstring

Verwenden Sie nun Hashcat, um diese Hashes mit der benutzerdefinierten Wortliste zu knacken. Für Linux SHA-512 Hashes ($6$) verwendet Hashcat den Modus 1800, und wir werden einen Wörterbuchangriff (Modus 0) durchführen. Führen Sie diesen Befehl aus:

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt

Der Vorgang kann einige Sekunden dauern, mit einer Ausgabe ähnlich dieser:

hashcat (v6.2.5) starting...
Dictionary cache built:
* Filename..: /root/custom_wordlist.txt
* Passwords.: 5
* Bytes.....: 50
* Keyspace..: 5
* Runtime...: 0 secs
Session..........: hashcat
Status...........: Running
Hash.Mode........: 1800 (sha512crypt $6$, SHA512 (Unix))

Zeigen Sie nach Abschluss die geknackten Passwörter an, indem Sie Folgendes ausführen:

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt --show

Wenn erfolgreich, könnte die Ausgabe so aussehen:

$6$randomsalt$hashedpasswordstring:password123
$6$anothersalt$anotherhashedpasswordstring:simplepass

Dieser Schritt zeigt, wie Hashcat als Alternative zu John the Ripper verwendet werden kann und unterschiedliche Stärken bietet. Im letzten Schritt speichern wir die Ergebnisse beider Tools zur Dokumentation.

Gespeicherte geknackte Passwörter zur Dokumentation

In diesem letzten Schritt speichern wir die geknackten Passwörter sowohl von John the Ripper als auch von Hashcat in separaten Dateien. Die Dokumentation der Ergebnisse ist ein kritischer Bestandteil des Penetration Testing, da Sie so die Ergebnisse überprüfen oder sicher melden können. Wir werden weiterhin in der Shell des Kali Linux Containers im Verzeichnis /root arbeiten.

Speichern Sie zunächst die Ergebnisse von John the Ripper, indem Sie die Ausgabe des Befehls john --show in eine Datei namens john_cracked.txt umleiten. Führen Sie diesen Befehl aus:

john --show /root/sample_hashes.txt > /root/john_cracked.txt

Überprüfen Sie den Dateiinhalt, indem Sie Folgendes ausführen:

cat /root/john_cracked.txt

Sie sollten eine Ausgabe wie diese sehen, wenn Passwörter geknackt wurden:

user1:password123
user2:simplepass
2 password hashes cracked, 0 left

Speichern Sie als Nächstes die Ergebnisse von Hashcat, indem Sie dessen Ausgabe in eine Datei namens hashcat_cracked.txt umleiten. Führen Sie diesen Befehl aus:

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt --show > /root/hashcat_cracked.txt

Überprüfen Sie den Dateiinhalt, indem Sie Folgendes ausführen:

cat /root/hashcat_cracked.txt

Die Ausgabe sollte so aussehen, wenn Passwörter geknackt wurden:

$6$randomsalt$hashedpasswordstring:password123
$6$anothersalt$anotherhashedpasswordstring:simplepass

Wenn in den vorherigen Schritten keine Passwörter geknackt wurden, zeigen die Dateien möglicherweise keine Ergebnisse oder nur Zusammenfassungszeilen an, was für Lernzwecke in Ordnung ist. Dieser Schritt schließt den Prozess der Dokumentation Ihrer Ergebnisse ab und stellt sicher, dass Sie später auf die geknackten Passwörter verweisen können. Sie haben nun den vollständigen Workflow des Passwort-Crackings gelernt, von der Einrichtung bis zum Speichern der Ergebnisse.

Zusammenfassung

In diesem Lab haben Sie die wesentlichen Fähigkeiten des Passwort-Crackings mit Kali Linux auf der LabEx VM erlernt. Sie begannen mit der Einrichtung der Umgebung und der Installation von Tools wie John the Ripper und Hashcat in einem Kali Linux Container. Durch eine schrittweise Anleitung haben Sie Beispiel-Hash-Dateien erstellt, Linux-Passwort-Hashes mit John the Ripper unter Verwendung sowohl der Standard- als auch der benutzerdefinierten Wortlisten geknackt, die Ergebnisse mit Hashcat verglichen und die geknackten Passwörter zur Dokumentation gespeichert. Diese praktischen Übungen bieten eine solide Grundlage für das Verständnis von Penetration-Testing-Techniken und der Bedeutung starker Passwortrichtlinien zur Sicherung von Systemen.