Einleitung
Ein Wörterbuchangriff (Dictionary Attack) ist eine Methode, um in ein passwortgeschütztes System einzudringen, indem systematisch jedes Wort aus einer Liste (einem Wörterbuch) als Passwort eingegeben wird. Dieser grundlegende Ansatz schlägt jedoch oft fehl, da Benutzer selten einfache Wörterbuchwörter als Passwörter verwenden. Sie fügen oft Zahlen, Symbole hinzu oder ändern die Groß-/Kleinschreibung, um Komplexitätsanforderungen zu erfüllen.
Hier werden "Mangling Rules" (Regeln zur Verfremdung) unglaublich mächtig. Mangling Rules sind eine Reihe von Anweisungen, die die Wörter in Ihrem Wörterbuch transformieren, bevor sie getestet werden. Eine Regel kann beispielsweise eine Zahl anhängen, den ersten Buchstaben großschreiben oder Buchstaben durch Symbole ersetzen (wie 'a' durch '@').
In diesem Lab werden Sie das beliebte Passwort-Cracking-Tool John the Ripper (JtR) verwenden, um dies in Aktion zu sehen. Sie werden zunächst einen Standard-Wörterbuchangriff versuchen und sehen, wie er fehlschlägt. Anschließend wenden Sie eine Reihe von Mangling Rules an, um den Angriff zu verbessern und ein komplexeres Passwort erfolgreich zu knacken.
Die Macht der Mangling Rules verstehen
In diesem Schritt führen Sie zunächst einen Standard-Wörterbuchangriff durch, um dessen Grenzen zu erkennen. Wir haben eine Datei namens shadow.txt vorbereitet, die das gehashte Passwort eines Benutzers enthält, sowie eine Datei wordlist.txt mit einem potenziellen Basiswort für das Passwort.
Lassen Sie uns John the Ripper mit unserer Wortliste gegen die Hash-Datei ausführen. Dieser Befehl weist john an, jedes Wort aus wordlist.txt als Passwort zu versuchen.
john --wordlist=wordlist.txt shadow.txt
Sie sehen eine ähnliche Ausgabe, die anzeigt, dass der Angriff läuft.
Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 DONE (2023-10-27 10:30) 0g/s 1845Kp/s 1845Kc/s 1845KC/s secdec..secret
Session completed
Beachten Sie die letzte Meldung: "Session completed". John the Ripper hat das Wort "secret" und seine üblichen Variationen ausprobiert, aber das Passwort nicht knacken können. Dies liegt daran, dass das tatsächliche Passwort komplexer ist als ein einfaches Wörterbuchwort. Dies verdeutlicht die Notwendigkeit einer fortschrittlicheren Technik.
Die integrierten Regeldateien im Verzeichnis /rules/ lokalisieren
In diesem Schritt werden wir untersuchen, wo John the Ripper seine leistungsstarken Mangling Rules speichert. Auf den meisten Linux-Systemen, einschließlich diesem, befinden sich die Regeln nicht in einem separaten /rules/-Verzeichnis, sondern sind in der Hauptkonfigurationsdatei john.conf definiert.
Listen wir den Inhalt des Verzeichnisses /etc/john/ auf, um diese Konfigurationsdatei zu finden.
ls -l /etc/john/
Sie sollten die Datei john.conf in der Ausgabe sehen.
total 148
-rw-r--r-- 1 root root 148233 Jan 20 2022 john.conf
Diese john.conf-Datei enthält zahlreiche vordefinierte Regelwerke (Rule Sets), wie z. B. KoreLogic, best64 und all. Diese Regelwerke sind Sammlungen einzelner Mangling-Anweisungen, die auf einen Wörterbuchangriff angewendet werden können. Im nächsten Schritt werden wir eines dieser Regelwerke genauer untersuchen.
Eine gängige Regeldatei wie best64.rule auswählen
In diesem Schritt untersuchen Sie einen spezifischen Regelsatz. Zu Ihrer Bequemlichkeit haben wir einen beliebten und effektiven Regelsatz, best64, aus john.conf extrahiert und ihn als best64.rule in Ihrem aktuellen Projektverzeichnis (~/project) gespeichert.
Lassen Sie uns die ersten 10 Zeilen dieser Datei untersuchen, um eine Vorstellung davon zu bekommen, wie Regeln aussehen. Verwenden Sie den Befehl head:
head -n 10 best64.rule
Sie sehen eine ähnliche Ausgabe:
#
## best64.rule, a selection of the best 64 rules from the over 14,000
## rules in all.rule.
#
## Rule syntax:
## http://www.openwall.com/john/doc/RULES.shtml
#
## The following rules are commented out because they are slow.
#
:
l
u
Die Zeilen, die mit # beginnen, sind Kommentare. Die zeichenweisen Zeilen wie :, l und u sind tatsächliche Regeln.
:ist eine No-Op-Regel, was bedeutet "versuche das Wort wie es ist".lkonvertiert das Wort in Kleinbuchstaben.ukonvertiert das Wort in Großbuchstaben.
Weiter unten in der Datei würden Sie komplexere Regeln wie c (erster Buchstabe großschreiben) und $1 (die Ziffer '1' anhängen) finden. Diese einfachen Transformationen erhöhen die Anzahl der Passwortkandidaten dramatisch.
Eine Regeldatei mit dem Flag -r auf einen Wörterbuchangriff anwenden
Jetzt ist es an der Zeit, die Leistungsfähigkeit von Mangling Rules zu entfesseln. In diesem Schritt führen Sie den Wörterbuchangriff erneut aus, aber diesmal weisen Sie John the Ripper an, die Datei best64.rule zu verwenden.
Dies können Sie tun, indem Sie das Flag -r (kurz für --rules) zum Befehl hinzufügen. Dies weist john an, jede Regel in der angegebenen Datei auf jedes Wort in wordlist.txt anzuwenden.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
john --wordlist=wordlist.txt -r=./best64.rule shadow.txt
Diesmal sollte der Angriff sehr schnell erfolgreich sein. Die Ausgabe wird anders aussehen.
Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Secret123 (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:35) 10.00g/s 61538p/s 61538c/s 61538C/s Secret12..Secret123
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Erfolg! Die Zeile Secret123 (testuser) zeigt an, dass das Passwort geknackt wurde. John the Ripper hat das richtige Passwort gefunden, indem er Regeln aus best64.rule auf das Wort "secret" angewendet hat.
Angriffsresultate mit und ohne Regeln vergleichen
In diesem letzten Schritt sehen Sie das geknackte Passwort offiziell und reflektieren über den Unterschied, den die Regeln gemacht haben.
Obwohl das Passwort in der Ausgabe des vorherigen Schritts angezeigt wurde, ist der Standardweg, alle geknackten Passwörter für eine gegebene Hash-Datei anzuzeigen, die Verwendung des Flags --show.
Führen Sie den folgenden Befehl aus:
john --show shadow.txt
Dieser Befehl zeigt alle Passwörter an, die John erfolgreich für die Datei shadow.txt geknackt hat.
testuser:Secret123:17119:0:99999:7:::
1 password hash cracked, 0 left
Die Ausgabe zeigt deutlich testuser:Secret123. Dies bestätigt das geknackte Passwort.
Beim Vergleichen der Ergebnisse ist die Schlussfolgerung klar:
- Ohne Regeln (Schritt 1): Der Angriff schlug fehl, da "secret" nicht das Passwort war.
- Mit Regeln (Schritt 4): Der Angriff war erfolgreich. John nahm das Wort "secret", wendete eine Regel zur Großschreibung an, um "Secret" zu erhalten, und dann eine Regel zum Anhängen einer Zahl, um "Secret123" zu erhalten, was eine Übereinstimmung war.
Dies zeigt, dass Mangling Rules nicht nur ein hilfreiches Feature sind; sie sind unerlässlich, um Wörterbuchangriffe gegen reale Passwortgewohnheiten effektiv zu machen.
Zusammenfassung
In diesem Lab haben Sie den praktischen Unterschied zwischen einem einfachen Wörterbuchangriff und einem regelbasierten Angriff erlebt.
Sie haben gelernt, wie Sie:
- Einen grundlegenden Wörterbuchangriff mit John the Ripper durchführen und dessen Einschränkungen erkennen.
- Das Konzept von Mangling Rules verstehen und deren Speicherort finden.
- Die Struktur einer Regeldatei untersuchen.
- Einen Regelsatz mit dem Flag
-rauf einen Wörterbuchangriff anwenden, um dessen Effektivität erheblich zu verbessern. - Die geknackten Passwörter anzeigen und den Erfolg des regelbasierten Angriffs bestätigen.
Durch die Umwandlung einfacher Wörterbuchwörter in Tausende von potenziellen Variationen sind Mangling Rules ein grundlegendes Werkzeug im Werkzeugkasten jedes Passwortprüfers oder Sicherheitsexperten.


