Passwort-Cracking in Kali mit John

Kali LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die Grundlagen des Passwort-Crackings mit Kali Linux kennen, wobei der Schwerpunkt auf dem leistungsstarken Tool John the Ripper liegt. Das Hauptziel besteht darin, zu verstehen, wie Linux-Passwort-Hashes geknackt werden – dies sind 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, schrittweise Anleitungen arbeiten Sie mit Beispiel-Hash-Dateien, erstellen und verwenden benutzerdefinierte Wortlisten, vergleichen Cracking-Tools wie John the Ripper und Hashcat und speichern Ihre Ergebnisse zur Analyse. Dieses Lab ist für Anfänger konzipiert und bietet eine klare, praktische Lernerfahrung in einer kontrollierten Umgebung.

Einrichten der Umgebung und Installieren der Tools

Im ersten Schritt bereiten wir die Kali Linux-Umgebung vor, indem wir die notwendigen Tools für das Passwort-Cracking installieren. Wie bereits erwähnt, läuft Ihre Terminalsitzung bereits innerhalb eines Kali Linux-Containers.

Wir verwenden zwei primäre Tools: John the Ripper, einen vielseitigen und weit verbreiteten Passwort-Cracker, und Hashcat, ein weiteres leistungsstarkes Tool, das für seine Geschwindigkeit und Flexibilität bekannt ist.

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 und Hashcat mit dem folgenden Befehl. Das Flag -y bestätigt die Installation automatisch.

apt install -y john hashcat

Der Installationsprozess 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]
...

Überprüfen Sie als Nächstes die Hashcat-Installation, indem Sie die Version abfragen.

hashcat --version

Die erwartete Ausgabe zeigt die Versionsnummer an, zum Beispiel:

v6.2.5

Nachdem beide Tools installiert und verifiziert wurden, 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 von John the Ripper verarbeitet werden können. 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 password und 123456 – 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 dem Knacken durch John the Ripper 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-Prozess 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 Prozess 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 arbeitet und verdeutlicht, wie schnell schwache Passwörter kompromittiert werden können.

Im nächsten Schritt untersuchen wir, wie man John benutzerdefinierte Wortlisten zur Verfügung stellt und verschiedene Parameter anpasst, 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 dieses Mal 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. Als Nächstes werden wir sehen, wie ein ähnlicher Angriff mit Hashcat durchgeführt wird.

Knacken von Hashes mit Hashcat zum Vergleich

Obwohl John the Ripper ein exzellentes Tool ist, ist es gute Praxis, mit Alternativen wie Hashcat vertraut zu sein. Hashcat ist für seine Geschwindigkeit bekannt, insbesondere auf Systemen mit GPUs. Hier führen wir denselben Wörterbuchangriff mit Hashcat durch.

Hashcat bevorzugt eine saubere Datei, die nur die Hash-Werte enthält. Verwenden Sie den Befehl awk, um das zweite Feld (den Hash) aus sample_hashes.txt zu extrahieren und in einer neuen Datei, clean_hashes.txt, zu speichern.

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

Überprüfen Sie den Inhalt der neuen Datei.

cat /root/clean_hashes.txt

Die Ausgabe sollte nur die Hash-Strings enthalten:

$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0
$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/

Führen Sie nun Hashcat aus. Sie müssen den Hash-Modus (-m 1800 für SHA-512 crypt) und den Angriffsmodus (-a 0 für einen direkten Wörterbuchangriff) angeben.

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 1800 (sha512crypt $6$, SHA512 (Unix))
Hash.Target......: /root/clean_hashes.txt
Time.Started.....: Mon Sep  1 06:33:21 2025 (0 secs)
Time.Estimated...: Mon Sep  1 06:33:21 2025 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (/root/custom_wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:      226 H/s (5.08ms) @ Accel:8 Loops:1024 Thr:1 Vec:8
Recovered........: 2/2 (100.00%) Digests (total), 1/2 (50.00%) Digests (new), 2/2 (100.00%) Salts
Progress.........: 6/12 (50.00%)
Rejected.........: 0/6 (0.00%)
Restore.Point....: 0/6 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:4096-5000
Candidate.Engine.: Device Generator
Candidates.#1....: password -> password123

Bevor Sie den Angriff ausführen, bestätigen Sie, dass Hashcat ein OpenCL-Backend erkennen kann:

hashcat -I

Wenn dieser Befehl meldet, dass keine OpenCL-Plattform verfügbar ist, installieren Sie das Intel OpenCL-Runtime-Paket und prüfen Sie erneut:

apt update
apt install -y intel-opencl-icd
hashcat -I

Wenn Hashcat immer noch CL_PLATFORM_NOT_FOUND_KHR ausgibt, installieren Sie die Portable OpenCL-Runtime und prüfen Sie erneut:

apt install -y pocl-opencl-icd
hashcat -I

Nachdem OpenCL erkannt wurde, führen Sie den Cracking-Befehl erneut aus. Wenn Hashcat in dieser containerisierten Umgebung eine Warnung ausgibt, fügen Sie --force hinzu.

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

Nachdem der Angriff abgeschlossen ist, zeigen Sie die geknackten Passwörter an, indem Sie den Befehl mit dem Flag --show ausführen.

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

Wenn der Angriff erfolgreich ist, zeigt Hashcat jeden Hash gefolgt vom geknackten Passwort an, getrennt durch einen Doppelpunkt:

$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:password
$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:123456

Dieser Schritt hat Sie mit Hashcat als leistungsstarke Alternative für das Passwort-Cracking vertraut gemacht. Im letzten Schritt lernen Sie, wie Sie Ihre Ergebnisse ordnungsgemäß dokumentieren.

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 wesentlicher Tools wie John the Ripper und Hashcat. 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 seinen Standardeinstellungen als auch mit einer benutzerdefinierten Wortliste zu verwenden, und Sie haben Hashcat als leistungsstarke Alternative erkundet. Schließlich lernten Sie den entscheidenden Schritt, Ihre Ergebnisse für die Dokumentation und Berichterstattung zu speichern. Diese Fähigkeiten bilden ein solides Fundament für das Penetration Testing und unterstreichen die Bedeutung der Implementierung starker Passwortrichtlinien zur Abwehr solcher Angriffe.