Einführung
In diesem Lab erlernen Sie die Grundlagen des Passwort-Crackings mit Kali Linux, wobei der Schwerpunkt auf dem leistungsstarken Tool John the Ripper liegt. Das Hauptziel besteht darin, zu verstehen, wie Linux-Passwort-Hashes geknackt werden – dabei handelt es sich um verschlüsselte Darstellungen von Passwörtern, die normalerweise in der Datei /etc/shadow gespeichert sind. Diese Fähigkeit ist beim Penetration Testing unerlässlich, um schwache Passwörter zu identifizieren und die Systemsicherheit zu verbessern.
Wenn Sie das Terminal öffnen, befinden Sie sich automatisch in einer Kali-Linux-Container-Shell. Alle Befehle in diesem Lab sollten innerhalb dieser Umgebung ausgeführt werden. Durch geführte Schritt-für-Schritt-Anleitungen arbeiten Sie mit Beispiel-Hash-Dateien, erstellen und verwenden benutzerdefinierte Wortlisten und speichern Ihre Ergebnisse zur späteren Überprüfung. Dieses Lab ist für Anfänger konzipiert und konzentriert sich auf den Arbeitsablauf mit John the Ripper, der in der bereitgestellten Container-Umgebung zuverlässig funktioniert.
Einrichten der Umgebung und Installieren der Tools
Im ersten Schritt bereiten wir die Kali-Linux-Umgebung vor, indem wir das Hauptwerkzeug für dieses Lab installieren. Wie bereits erwähnt, läuft Ihre Terminalsitzung bereits innerhalb eines Kali-Linux-Containers.
Wir verwenden John the Ripper, einen vielseitigen und weit verbreiteten Passwort-Cracker, der in dem bereitgestellten LabEx-Container zuverlässig funktioniert.
Aktualisieren Sie zunächst die Paketliste, um sicherzustellen, dass Sie Zugriff auf die neuesten Softwareversionen haben.
apt update
Installieren Sie anschließend John the Ripper mit dem folgenden Befehl. Das Flag -y bestätigt die Installation automatisch.
apt install -y john
Der Installationsvorgang kann einige Minuten dauern. Sobald er abgeschlossen ist, können Sie überprüfen, ob John the Ripper korrekt installiert wurde, indem Sie es ohne Optionen ausführen.
john
Sie sollten die Hilfe- und Versionsinformationen sehen, was bestätigt, dass das Tool einsatzbereit ist. Die Ausgabe sieht in etwa so aus:
John the Ripper 1.9.0-jumbo-1+bleeding-aec1328d6c 2021-11-02 10:45:52 +0100 OMP [linux-gnu 64-bit x86_64 AVX512BW AC]
Copyright (c) 1996-2021 by Solar Designer and others
Homepage: https://www.openwall.com/john/
Usage: john [OPTIONS] [PASSWORD-FILES]
...
Nachdem John the Ripper installiert und verifiziert wurde, ist Ihre Umgebung nun für die Passwort-Cracking-Übungen in den folgenden Schritten vorbereitet.
Erstellen einer Beispiel-Hash-Datei
Nachdem die Tools installiert sind, benötigen wir Daten, mit denen wir arbeiten können. In diesem Schritt erstellen Sie eine Datei, die echte Linux-Passwort-Hashes enthält, die John the Ripper verarbeiten kann. Diese Hashes sind so formatiert, dass sie denen in der Datei /etc/shadow ähneln, in der Benutzerpasswortinformationen auf Linux-Systemen sicher gespeichert werden. Dies ermöglicht es Ihnen, das Knacken auf sichere und kontrollierte Weise zu üben.
Alle Vorgänge werden im Verzeichnis /root des Kali-Containers durchgeführt. Wir erstellen die Hash-Datei direkt mit vorab generierten echten Hashes für einfache, gängige Passwörter, die schnell geknackt werden können.
Erstellen Sie die Beispiel-Hash-Datei direkt mit dem folgenden Befehl:
cd /root
echo -e "user1:\$6\$randomsalt\$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::\nuser2:\$6\$anothersalt\$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::" > sample_hashes.txt
Alternativ können Sie die Datei manuell erstellen, indem Sie den Inhalt kopieren und einfügen:
cd /root
cat > sample_hashes.txt << 'EOF'
user1:$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::
user2:$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::
EOF
Das Präfix $6$ in jeder Zeile zeigt an, dass es sich bei dem Hash um einen SHA-512-Crypt-Hash handelt, einen gängigen Standard für moderne Linux-Systeme. Das Format folgt der Struktur der Shadow-Datei: username:hashed_password:last_change:min_age:max_age:warning:inactive:expire:reserved.
Um zu bestätigen, dass die Datei korrekt erstellt wurde, zeigen Sie ihren Inhalt mit dem Befehl cat an:
cat /root/sample_hashes.txt
Die Ausgabe sollte die beiden Benutzereinträge mit echten Hash-Werten anzeigen:
user1:$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::
user2:$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::
Wichtige Hinweise:
- Dies sind echte, korrekt formatierte SHA-512-Hashes, die John the Ripper verarbeiten kann.
- Die Passwörter lauten
passwordund123456– sehr einfache und gängige Passwörter, die garantiert in der Standard-Wortliste von John enthalten sind. - Dies gewährleistet ein schnelles Knacken zu Demonstrationszwecken, normalerweise innerhalb von Sekunden.
Mit dieser Beispiel-Datendatei haben Sie nun ein Ziel für Ihre Passwort-Cracking-Übung. Im nächsten Schritt verwenden Sie John the Ripper, um zu versuchen, diese Hashes zu knacken.
Knacken von Hashes mit dem Standardmodus von John the Ripper
Nachdem die Beispiel-Hash-Datei bereitsteht, ist es an der Zeit, mit John the Ripper mit dem Knacken zu beginnen. Standardmäßig verwendet John mehrere Modi, darunter einen "Single Crack"-Modus, der den Benutzernamen und andere Informationen verwendet, um Passwörter zu erraten, gefolgt von einem Wortlisten-Modus mit seiner integrierten Passwortliste. Dies ist ein hervorragender Ausgangspunkt, um schwache, gängige Passwörter zu identifizieren.
Führen Sie den folgenden Befehl aus, um den Cracking-Vorgang für Ihre Datei sample_hashes.txt zu starten.
john /root/sample_hashes.txt
John lädt die Hashes und beginnt mit der Cracking-Sitzung. Sie sehen eine Ausgabe, die den Fortschritt anzeigt. Da wir echte Hashes mit sehr einfachen, gängigen Passwörtern (password und 123456) erstellt haben, sollte John in der Lage sein, diese schnell im Standard-Wortlistenmodus zu knacken.
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512BW 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
...
Sie können John eine Weile laufen lassen, um das Knacken zu versuchen, oder den Vorgang mit Ctrl-C abbrechen, wenn Sie die Ergebnisse vorzeitig überprüfen möchten. Um alle geknackten Passwörter anzuzeigen, verwenden Sie die Option --show.
john --show /root/sample_hashes.txt
Wenn die Passwörter erfolgreich geknackt wurden, sollte die Ausgabe wie folgt aussehen:
user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::
2 password hashes cracked, 0 left
Da wir sehr einfache Passwörter (password und 123456) verwendet haben, die mit ziemlicher Sicherheit in Johns Standard-Wortliste enthalten sind, sollten diese Hashes sehr schnell geknackt werden – oft innerhalb von Sekunden. Der Erfolg zeigt, dass John the Ripper korrekt mit unserer echten Hash-Datei funktioniert und verdeutlicht, wie schnell schwache Passwörter kompromittiert werden können.
Im nächsten Schritt erfahren Sie, wie Sie John benutzerdefinierte Wortlisten zur Verfügung stellen und verschiedene Parameter anpassen, um die Cracking-Effizienz zu verbessern.
Verwendung einer benutzerdefinierten Wortliste mit John the Ripper
Sich auf die Standardeinstellungen zu verlassen, reicht oft nicht aus. Ein gezielter Angriff mit einer benutzerdefinierten Wortliste kann weitaus effektiver sein. Eine Wortliste ist einfach eine Textdatei, die pro Zeile ein potenzielles Passwort enthält. In diesem Schritt erstellen Sie eine kleine, benutzerdefinierte Wortliste und verwenden diese mit John the Ripper.
Erstellen Sie eine Datei namens custom_wordlist.txt im Verzeichnis /root mit einigen gängigen Passwörtern, einschließlich derer, von denen wir wissen, dass sie in unserer Hash-Datei enthalten sind.
echo -e "password\n123456\nadmin123\ntest1234\nqwerty\npassword123" > /root/custom_wordlist.txt
Überprüfen Sie den Inhalt Ihrer neuen Wortliste.
cat /root/custom_wordlist.txt
Die Ausgabe sollte die sechs Passwörter anzeigen, die Sie gerade hinzugefügt haben:
password
123456
admin123
test1234
qwerty
password123
Führen Sie nun John the Ripper erneut aus, aber geben Sie diesmal Ihre benutzerdefinierte Wortliste mit der Option --wordlist an.
john --wordlist=/root/custom_wordlist.txt /root/sample_hashes.txt
Dieser Befehl weist John an, jedes Passwort in custom_wordlist.txt gegen die Hashes in sample_hashes.txt zu testen. Da unsere Wortliste die tatsächlichen Passwörter (password und 123456) enthält, die den Hashes in unserer Datei entsprechen, sollte John sie sehr schnell knacken.
Überprüfen Sie nach Abschluss des Vorgangs die Ergebnisse erneut.
john --show /root/sample_hashes.txt
Da unsere Wortliste die korrekten Passwörter enthält, sollte die Ausgabe nun die geknackten Anmeldedaten anzeigen:
user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::
2 password hashes cracked, 0 left
Dies demonstriert die Effektivität gezielter Wortlistenangriffe. Durch die Aufnahme der tatsächlichen Passwörter in unsere benutzerdefinierte Wortliste konnten wir die Hashes viel schneller knacken, als wenn wir uns nur auf die Standard-Wortliste von John verlassen hätten. Diese Technik ist grundlegend für gezielte Passwortangriffe. Im letzten Schritt speichern Sie die geknackten Anmeldedaten zur späteren Überprüfung in einer Berichtsdatei.
Speichern der geknackten Passwörter
In diesem Schritt speichern Sie die geknackten Anmeldedaten aus Ihrer John the Ripper-Sitzung in einer Berichtsdatei. Dies ist eine praktische Gewohnheit bei der Passwortprüfung, da Sie so die wiederhergestellten Konten später überprüfen können, ohne den Cracking-Vorgang erneut ausführen zu müssen.
Verwenden Sie john --show, um die wiederhergestellten Passwörter anzuzeigen, und leiten Sie diese Ausgabe dann in /root/cracked_passwords.txt um.
john --show /root/sample_hashes.txt > /root/cracked_passwords.txt
Zeigen Sie den gespeicherten Bericht an, um zu bestätigen, dass er die geknackten Anmeldedaten enthält.
cat /root/cracked_passwords.txt
Die Ausgabe sollte in etwa so aussehen:
user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::
2 password hashes cracked, 0 left
Wenn die Datei noch keine geknackten Passwörter enthält, führen Sie den Befehl john --wordlist=/root/custom_wordlist.txt /root/sample_hashes.txt aus dem vorherigen Schritt erneut aus und speichern Sie die Ergebnisse dann erneut.
Durch das Speichern der geknackten Passwörter in einer Datei schließen Sie den Arbeitsablauf von der Hash-Vorbereitung bis zu den dokumentierten Ergebnissen ab. Dies gibt Ihnen einen wiederverwendbaren Datensatz, den Sie während einer kontrollierten Sicherheitsüberprüfung einsehen oder weitergeben können.
Zusammenfassung
In diesem Lab haben Sie praktische Erfahrungen mit grundlegenden Passwort-Cracking-Techniken in einer Kali-Linux-Umgebung gesammelt. Sie begannen mit der Einrichtung Ihres Arbeitsbereichs und der Installation von John the Ripper. Anschließend lernten Sie, Zieldaten vorzubereiten, indem Sie eine Beispiel-Hash-Datei erstellten, die das /etc/shadow-Format von Linux nachahmt.
Sie haben geübt, John the Ripper sowohl mit den Standardeinstellungen als auch mit einer benutzerdefinierten Wortliste zu verwenden, und die wiederhergestellten Anmeldedaten zur späteren Überprüfung in einer Berichtsdatei gespeichert. Diese Fähigkeiten bilden eine solide Grundlage für Penetration Testing und unterstreichen die Bedeutung der Implementierung starker Passwortrichtlinien zur Abwehr solcher Angriffe.



