Einleitung
In diesem Lab tauchen Sie in die Welt der Passwortsicherheit ein, indem Sie lernen, wie Sie John the Ripper, ein beliebtes Open-Source-Tool zum Knacken von Passwörtern, verwenden. Das Verständnis, wie Passwörter erraten oder geknackt werden können, ist entscheidend für die Entwicklung stärkerer Sicherheitspraktiken. Sie werden verschiedene Strategien zum Erraten von Passwörtern erkunden, von einfachem Brute-Force bis hin zu fortgeschritteneren Kombinator- und Hybrid-Angriffen. Am Ende dieses Labs werden Sie ein praktisches Verständnis dieser Techniken und deren Anwendung mit John the Ripper haben.
Gängige Techniken zum Erraten von Passwörtern verstehen
In diesem Schritt lernen Sie die grundlegenden Konzepte hinter Techniken zum Erraten von Passwörtern kennen, insbesondere Wörterbuchangriffe (dictionary attacks) und einfache Brute-Force-Angriffe. John the Ripper kann diese Methoden nutzen, um Passwörter zu knacken.
Zuerst verwenden wir John the Ripper, um einen einfachen MD5-Hash mit einem Wörterbuchangriff zu knacken. Wir haben bereits eine Datei passwords.txt mit einem gehashten Passwort und eine Datei wordlist.txt mit gängigen Passwörtern vorbereitet.
Öffnen Sie Ihr Terminal und navigieren Sie zum Verzeichnis ~/project.
cd ~/project
Führen Sie nun John the Ripper mit der Datei wordlist.txt aus:
john --format=raw-md5 --wordlist=wordlist.txt passwords.txt
Sie sollten eine Ausgabe sehen, die anzeigt, dass John versucht, das Passwort zu knacken. Wenn erfolgreich, wird das geknackte Passwort angezeigt.
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
password (user1)
1g 0:00:00:00 DONE (2023-10-27 08:00) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password
Um die geknackten Passwörter anzuzeigen, können Sie die Option --show verwenden:
john --show passwords.txt
user1:password
1 password hash cracked, 0 left
Dies demonstriert einen grundlegenden Wörterbuchangriff. John the Ripper hat erfolgreich "password" in der bereitgestellten Wortliste gefunden.
Brute-Force mit spezifischen Mustern implementieren
In diesem Schritt werden Sie Brute-Force-Angriffe mit dem inkrementellen Modus von John the Ripper untersuchen. Der inkrementelle Modus ermöglicht es John, Passwörter basierend auf Zeichensätzen (z. B. Kleinbuchstaben, Großbuchstaben, Ziffern, Symbole) und Länge zu generieren und somit effektiv einen Brute-Force-Angriff durchzuführen.
Zuerst erstellen wir einen neuen Passwort-Hash, der nicht in unserer einfachen Wortliste enthalten ist. Wir verwenden testuser:testpass (der MD5-Hash von testpass ist 5d41402abc4b2a76b9719d911017c592).
echo "testuser:5d41402abc4b2a76b9719d911017c592" > /home/labex/project/brute_passwords.txt
Nun verwenden wir John the Ripper im inkrementellen Modus. Der Einfachheit und Geschwindigkeit halber beschränken wir den Zeichensatz und die Passwortlänge. Wir verwenden den Modus digits, um ein Passwort zu knacken, das nur aus Ziffern besteht.
Nehmen wir an, wir haben ein Passwort, das 4 Ziffern lang ist, z. B. 1234. Der MD5-Hash für 1234 ist 81dc9bdb52d04dc20036dbd8313ed055.
echo "digituser:81dc9bdb52d04dc20036dbd8313ed055" > /home/labex/project/digit_passwords.txt
Führen Sie nun John the Ripper im inkrementellen Modus aus, der speziell auf Ziffern abzielt:
john --format=raw-md5 --incremental=digits digit_passwords.txt
Dieser Befehl versucht alle Kombinationen von Ziffern, bis er das Passwort findet. Dies kann je nach Passwortlänge einen Moment dauern.
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
1234 (digituser)
1g 0:00:00:00 DONE (2023-10-27 08:05) 100.0g/s 100.0p/s 100.0c/s 100.0C/s 1234
Nachdem es geknackt wurde, können Sie das Ergebnis anzeigen:
john --show digit_passwords.txt
digituser:1234
1 password hash cracked, 0 left
Dies zeigt, wie Brute-Force eingesetzt werden kann, wenn die Struktur des Passworts bekannt oder begrenzt ist.
Kombinator-Angriffe nutzen
In diesem Schritt lernen Sie Kombinator-Angriffe (combinator attacks) kennen, bei denen Wörter aus zwei verschiedenen Wortlisten kombiniert werden. Dies ist nützlich, wenn Passwörter durch Aneinanderreihung zweier gängiger Wörter gebildet werden.
Zuerst erstellen wir einen neuen Passwort-Hash für einen Kombinator-Angriff. Wir verwenden john_doe als Passwort (der MD5-Hash von john_doe ist 112233445566778899aabbccddeeff00).
echo "combo_user:112233445566778899aabbccddeeff00" > /home/labex/project/combo_passwords.txt
Wir haben bereits base_wordlist.txt mit "john" und "doe" vorbereitet. Nun erstellen wir eine zweite Wortliste, second_wordlist.txt:
echo "doe" > /home/labex/project/second_wordlist.txt
echo "smith" >> /home/labex/project/second_wordlist.txt
Verwenden Sie nun John the Ripper mit dem Modus Combinator. Dieser Modus nimmt zwei Wortlisten und kombiniert jedes Wort aus der ersten Liste mit jedem Wort aus der zweiten Liste.
john --format=raw-md5 --rules=Combinator --wordlist=base_wordlist.txt --stdout > /home/labex/project/combined_words.txt
john --format=raw-md5 --wordlist=combined_words.txt combo_passwords.txt
Der erste Befehl generiert Kombinationen und speichert sie in combined_words.txt. Der zweite Befehl verwendet dann diese generierte Wortliste, um das Passwort zu knacken.
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
john_doe (combo_user)
1g 0:00:00:00 DONE (2023-10-27 08:10) 100.0g/s 100.0p/s 100.0c/s 100.0C/s john_doe
Um das geknackte Passwort zu überprüfen:
john --show combo_passwords.txt
combo_user:john_doe
1 password hash cracked, 0 left
Dies zeigt, wie effektiv Kombinator-Angriffe sein können, wenn Passwörter aus einer Kombination bekannter Wörter bestehen.
Hybrid-Angriffe mit John the Ripper erkunden
In diesem Schritt lernen Sie Hybrid-Angriffe (hybrid attacks) kennen, die Wörterbuchwörter mit Brute-Force-Elementen (wie Zahlen oder Sonderzeichen) kombinieren. Dies ist eine sehr gängige und effektive Strategie zum Knacken von Passwörtern, die Variationen gängiger Wörter sind.
Erstellen wir einen neuen Passwort-Hash für einen Hybrid-Angriff. Wir verwenden password123 als Passwort (der MD5-Hash von password123 ist 28a112233445566778899aabbccddeeff).
echo "hybrid_user:28a112233445566778899aabbccddeeff" > /home/labex/project/hybrid_passwords.txt
Wir verwenden unsere bestehende wordlist.txt und wenden eine Regel an, die jedem Wort vier Ziffern anhängt. Wir haben bereits eine einfache Regeldatei rules.txt im Setup erstellt.
Führen Sie nun John the Ripper mit der wordlist.txt und der benutzerdefinierten Regeldatei aus:
john --format=raw-md5 --wordlist=wordlist.txt --rules=rules.txt hybrid_passwords.txt
Dieser Befehl nimmt jedes Wort aus wordlist.txt und wendet die in rules.txt definierten Regeln an (anhängen von vier Ziffern).
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
password123 (hybrid_user)
1g 0:00:00:00 DONE (2023-10-27 08:15) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Um das geknackte Passwort zu überprüfen:
john --show hybrid_passwords.txt
hybrid_user:password123
1 password hash cracked, 0 left
Dies demonstriert die Leistungsfähigkeit von Hybrid-Angriffen beim Knacken von Passwörtern, die Wörterbuchwörter mit vorhersehbaren Mustern kombinieren.
Eigene Guessing-Strategien entwickeln
In diesem Schritt lernen Sie, wie Sie eigene Guessing-Strategien entwickeln, indem Sie eigene Regeldateien (rule files) mit John the Ripper erstellen und verwenden. Dies ermöglicht hochgradig zielgerichtete Angriffe, die auf bekannten Passwortmustern oder Benutzergewohnheiten basieren.
Erstellen wir einen neuen Passwort-Hash für eine benutzerdefinierte Strategie. Wir verwenden LabEx@2023 als Passwort (der MD5-Hash von LabEx@2023 ist e0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5).
echo "custom_user:e0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5" > /home/labex/project/custom_passwords.txt
Nun erstellen wir eine benutzerdefinierte Regeldatei namens custom_rules.txt, die den ersten Buchstaben großschreibt, @ anhängt und dann vier Ziffern anhängt.
nano /home/labex/project/custom_rules.txt
Fügen Sie den folgenden Inhalt zur Datei custom_rules.txt hinzu:
:
c
$@
$[0-9]$[0-9]$[0-9]$[0-9]
:(leere Regel) - Dies ist ein Platzhalter, der oft verwendet wird, um einen Regel-Satz zu beginnen.c- Schreibt den ersten Buchstaben des Wortes groß.$@- Hängt das Symbol@an.$[0-9]$[0-9]$[0-9]$[0-9]- Hängt vier Ziffern an.
Speichern und beenden Sie nano (Strg+X, Y, Enter).
Verwenden wir nun eine Basis-Wortliste, die "labex" enthält:
echo "labex" > /home/labex/project/base_custom_wordlist.txt
Führen Sie John the Ripper mit Ihrer benutzerdefinierten Regeldatei aus:
john --format=raw-md5 --wordlist=base_custom_wordlist.txt --rules=custom_rules.txt custom_passwords.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
LabEx@2023 (custom_user)
1g 0:00:00:00 DONE (2023-10-27 08:20) 100.0g/s 100.0p/s 100.0c/s 100.0C/s LabEx@2023
Um das geknackte Passwort zu überprüfen:
john --show custom_passwords.txt
custom_user:LabEx@2023
1 password hash cracked, 0 left
Dies demonstriert die Flexibilität der Regel-Engine von John the Ripper, die es Ihnen ermöglicht, hochspezifische und effektive Passwort-Guessing-Strategien zu entwickeln.
Zusammenfassung
In diesem Labor haben Sie praktische Erfahrungen mit John the Ripper, einem leistungsstarken Werkzeug zum Knacken von Passwörtern, gesammelt. Sie haben verschiedene Passwort-Guessing-Strategien kennengelernt und implementiert, darunter:
- Wörterbuchangriffe (Dictionary Attacks): Verwendung von vorkompilierten Listen gängiger Passwörter.
- Brute-Force-Angriffe (Brute-Force Attacks): Systematisches Ausprobieren aller möglichen Zeichenkombinationen innerhalb eines definierten Satzes.
- Kombinationsangriffe (Combinator Attacks): Kombination von Wörtern aus mehreren Wortlisten, um neue Passwortkandidaten zu bilden.
- Hybrid-Angriffe (Hybrid Attacks): Vermischung von Wörterbuchwörtern mit Brute-Force-Elementen unter Verwendung von Regeln.
- Benutzerdefinierte Guessing-Strategien (Custom Guessing Strategies): Entwicklung eigener Regeln zur gezielten Ansprache spezifischer Passwortmuster.
Das Verständnis dieser Techniken ist sowohl für die offensive Sicherheit (Penetrationstests) als auch für die defensive Sicherheit (Erstellung starker Passwortrichtlinien und Schulung von Benutzern) von entscheidender Bedeutung. Indem Sie sehen, wie leicht gängige Passwortmuster geknackt werden können, können Sie die Bedeutung von komplexen, einzigartigen Passwörtern und Multi-Faktor-Authentifizierung besser einschätzen.


