Kali Passwort-Cracking mit John

Kali LinuxBeginner
Jetzt üben

Einführung

In diesem Lab erlernen Sie die Grundlagen des Passwort-Crackings unter 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 können. Dabei handelt es sich um verschlüsselte Darstellungen von Passwörtern, die normalerweise in der Datei /etc/shadow gespeichert sind. Diese Fähigkeit ist im Bereich Penetration Testing unerlässlich, um schwache Passwörter zu identifizieren und die Systemsicherheit zu erhöhen.

Sobald 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 werden Sie mit Beispiel-Hash-Dateien arbeiten, eigene Wortlisten erstellen und verwenden, Cracking-Tools wie John the Ripper und Hashcat vergleichen und Ihre Ergebnisse für die Analyse speichern. 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

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

Wir werden zwei Hauptwerkzeuge verwenden: 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. Beide sind wesentliche Bestandteile im Werkzeugkasten eines jeden Penetration Testers.

Aktualisieren Sie zunächst die Paketliste, um sicherzustellen, dass Sie Zugriff auf die neuesten Softwareversionen haben.

apt update

Installieren Sie als Nächstes John the Ripper und Hashcat mit dem folgenden Befehl. Das Flag -y bestätigt die Installation automatisch.

apt install -y john hashcat

Der Installationsvorgang kann einige Minuten dauern. Sobald er abgeschlossen ist, können Sie überprüfen, ob John the Ripper korrekt installiert wurde, indem Sie das Programm ohne Optionen aufrufen.

john

Sie sollten die Hilfe- und Versionsinformationen sehen, was bestätigt, dass das Tool bereit ist. Die Ausgabe wird in etwa so aussehen:

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 anschließend die Hashcat-Installation, indem Sie die Version abfragen.

hashcat --version

Die erwartete Ausgabe zeigt die Versionsnummer an, zum Beispiel:

v6.2.5

Da nun beide Tools installiert und verifiziert sind, ist Ihre Umgebung 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 entsprechen, in der Passwortinformationen auf Linux-Systemen sicher gespeichert werden. Dies ermöglicht es Ihnen, das Knacken von Passwörtern auf sichere und kontrollierte Weise zu üben.

Alle Operationen 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, ein gängiger Standard für moderne Linux-Systeme. Das Format folgt der Struktur der Shadow-Datei: Benutzername:Passwort_Hash:letzte_Änderung:Min_Alter:Max_Alter:Warnung:Inaktiv:Ablauf:Reserviert.

Um zu bestätigen, dass die Datei korrekt erstellt wurde, lassen Sie sich den Inhalt mit dem Befehl cat anzeigen:

cat /root/sample_hashes.txt

Die Ausgabe sollte die beiden Benutzereinträge mit den echten Hash-Werten zeigen:

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 häufige Passwörter, die garantiert in Johns Standard-Wortliste enthalten sind.
  • Dies gewährleistet ein schnelles Knacken zu Demonstrationszwecken, normalerweise innerhalb von Sekunden.

Mit dieser vorbereiteten Beispieldatei haben Sie nun ein Ziel für Ihre Passwort-Cracking-Übungen. Im nächsten Schritt werden Sie John the Ripper verwenden, um zu versuchen, diese Hashes zu knacken.

Hashes mit dem Standardmodus von John the Ripper knacken

Nachdem die Beispiel-Hash-Datei bereitsteht, ist es an der Zeit, den Cracking-Vorgang mit John the Ripper zu starten. Standardmäßig verwendet John verschiedene 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 wird die Hashes laden und mit der Cracking-Sitzung beginnen. Sie sehen eine Ausgabe, die den Fortschritt anzeigt. Da wir echte Hashes mit sehr einfachen Passwörtern (password und 123456) erstellt haben, sollte John sie im Standard-Wortlisten-Modus schnell knacken können.

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 oder den Vorgang mit Ctrl-C abbrechen, wenn Sie die Ergebnisse vorzeitig prüfen möchten. Um bereits geknackte 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 verwendet haben, die fast sicher in Johns Standardliste enthalten sind, sollten diese Hashes sehr schnell geknackt werden – oft innerhalb von Sekunden. Dieser 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 werden wir untersuchen, wie man John benutzerdefinierte Wortlisten zur Verfügung stellt und verschiedene Parameter anpasst, um die Effizienz beim Knacken zu steigern.

Verwendung einer benutzerdefinierten Wortliste mit John the Ripper

Sich auf Standardeinstellungen zu verlassen, reicht oft nicht aus. Ein gezielter Angriff mit einer benutzerdefinierten Wortliste kann weitaus effektiver sein. Eine Wortliste ist schlicht eine Textdatei, die pro Zeile ein potenzielles Passwort enthält. In diesem Schritt erstellen Sie eine kleine, eigene 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 soeben hinzugefügten Passwörter anzeigen:

password
123456
admin123
test1234
qwerty
password123

Führen Sie John the Ripper nun 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 aus 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, wird John sie extrem schnell finden.

Nachdem der Vorgang abgeschlossen ist, prüfen Sie die Ergebnisse erneut.

john --show /root/sample_hashes.txt

Da unsere Wortliste die korrekten Passwörter enthält, sollte die Ausgabe nun die geknackten Zugangsdaten anzeigen:

user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::

2 password hashes cracked, 0 left

Dies demonstriert die Wirksamkeit gezielter Wortlisten-Angriffe. Indem wir die tatsächlichen Passwörter in unsere Liste aufgenommen haben, konnten wir die Hashes viel schneller knacken, als wenn wir uns nur auf die Standardliste verlassen hätten. Diese Technik ist grundlegend für gezielte Passwortangriffe. Als Nächstes werden wir sehen, wie man einen ähnlichen Angriff mit Hashcat durchführt.

Hashes mit Hashcat zum Vergleich knacken

Obwohl John the Ripper ein exzellentes Werkzeug ist, gehört es zur guten Praxis, auch Alternativen wie Hashcat zu kennen. Hashcat ist für seine enorme Geschwindigkeit bekannt, insbesondere auf Systemen mit Grafikprozessoren (GPUs). Hier werden wir denselben Wörterbuchangriff mit Hashcat durchführen.

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 namens 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/

Starten Sie nun Hashcat. 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

Hashcat beginnt mit der Cracking-Sitzung. Da unsere Wortliste die korrekten Passwörter enthält, wird Hashcat diese Hashes sehr schnell knacken. Sobald der Vorgang abgeschlossen ist, können Sie die geknackten Passwörter anzeigen, indem Sie denselben Befehl mit dem Flag --show ausführen.

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

Bei einem erfolgreichen Angriff zeigt Hashcat den 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 Techniken des Passwort-Crackings in einer Kali Linux-Umgebung gesammelt. Sie haben damit begonnen, Ihren Arbeitsbereich einzurichten und wichtige Tools wie John the Ripper und Hashcat zu installieren. Anschließend haben Sie gelernt, Zieldaten vorzubereiten, indem Sie eine Beispiel-Hash-Datei erstellt haben, die das Linux-Format /etc/shadow imitiert.

Sie haben geübt, John the Ripper sowohl mit Standardeinstellungen als auch mit einer benutzerdefinierten Wortliste zu verwenden, und haben Hashcat als leistungsstarke Alternative kennengelernt. Schließlich haben Sie den wichtigen Schritt gelernt, Ihre Ergebnisse für die Dokumentation und Berichterstattung zu sichern. Diese Fähigkeiten bilden eine solide Grundlage für Penetration Testing und unterstreichen die Bedeutung strenger Passwortrichtlinien zur Abwehr solcher Angriffe.