Einleitung
In diesem Lab werden Sie sich mit den erweiterten Funktionen der Regel-Engine von John the Ripper befassen. John the Ripper ist ein leistungsstarkes Werkzeug zum Knacken von Passwörtern, und seine Regel-Engine ermöglicht hochgradig angepasste und effiziente Angriffe. Das Verständnis, wie man effektive Regeln erstellt, ist entscheidend, um sein Potenzial zu maximieren. Sie lernen die Regelverkettung, das Erstellen von Regeln für gängige Transformationen wie Leet Speak, das Entwickeln von Regeln für typische Passwortmuster, das Testen komplexer Regelwerke und die Optimierung der Regelleistung kennen. Am Ende dieses Labs werden Sie ein solides Verständnis dafür haben, wie Sie die Regel-Engine von John the Ripper für anspruchsvollere Passwort-Cracking-Szenarien nutzen können.
Regelverkettung verstehen
In diesem Schritt lernen Sie die Regelverkettung (rule chaining) in John the Ripper kennen. Regelverkettung ermöglicht es Ihnen, mehrere Regeln zu kombinieren, um komplexere Transformationen zu erstellen. Dies ist besonders nützlich, wenn Sie eine Abfolge von Änderungen auf einen Eintrag in einer Wortliste anwenden müssen.
Stellen Sie zunächst sicher, dass John the Ripper installiert ist. Falls nicht, können Sie es mit apt installieren.
sudo apt update
sudo apt install -y john
Als Nächstes erstellen wir eine einfache Wortlistendatei namens wordlist.txt in Ihrem Verzeichnis ~/project.
echo "password" > ~/project/wordlist.txt
echo "secret" >> ~/project/wordlist.txt
Nun erstellen wir eine Regeldatei namens chain_rules.rule in ~/project, die eine grundlegende Regelverkettung demonstriert. Diese Regel wird zuerst "123" an das Wort anhängen und dann den ersten Buchstaben großschreiben.
nano ~/project/chain_rules.rule
Fügen Sie den folgenden Inhalt in die Datei chain_rules.rule ein:
: A123 c
:(Doppelpunkt) kennzeichnet den Beginn einer Regel.A123hängt "123" an das Ende des Wortes an.cschreibt den ersten Buchstaben des Wortes groß.
Speichern Sie die Datei, indem Sie Strg+X, dann Y und dann Enter drücken.
Nun verwenden wir John the Ripper mit dieser Regeldatei. Wir verwenden die Option --stdout, um die transformierten Wörter anzuzeigen, ohne tatsächlich Passwörter zu knacken.
john --wordlist=~/project/wordlist.txt --rules=~/project/chain_rules.rule --stdout
Sie sollten eine Ausgabe ähnlich dieser sehen:
Password123
Secret123
Dies zeigt, wie Regeln verkettet werden: Zuerst wird A123 angewendet, dann wird c auf das Ergebnis angewendet.
Regeln für Leet Speak-Transformationen erstellen
In diesem Schritt erstellen Sie Regeln für Leet Speak-Transformationen. Leet Speak (oder "1337 Speak") ist eine gängige Praxis, bei der Buchstaben durch Zahlen oder Symbole ersetzt werden, die ihnen ähneln (z. B. 'a' wird zu '4', 'e' wird zu '3', 's' wird zu '5'). Dies ist eine häufige Technik, die bei Passwörtern verwendet wird.
Wir erstellen eine neue Regeldatei namens leet_rules.rule in Ihrem Verzeichnis ~/project. Diese Datei enthält Regeln zur Umwandlung gängiger Buchstaben in ihre Leet Speak-Entsprechungen.
nano ~/project/leet_rules.rule
Fügen Sie den folgenden Inhalt in die Datei leet_rules.rule ein:
: s/a/4 s/e/3 s/i/1 s/o/0 s/s/5
s/alt/neuist eine Ersetzungsregel (substitution rule). Sie ersetzt das erste Vorkommen vonaltdurchneu.- Wir verketten mehrere Ersetzungsregeln, um verschiedene Leet Speak-Transformationen anzuwenden.
Speichern Sie die Datei, indem Sie Strg+X, dann Y und dann Enter drücken.
Nun testen wir diese Regeln mit unserer wordlist.txt.
john --wordlist=~/project/wordlist.txt --rules=~/project/leet_rules.rule --stdout
Sie sollten eine Ausgabe ähnlich dieser sehen:
p4ssw0rd
s3cr3t
Dies zeigt, wie Sie Regeln erstellen können, um gängige Leet Speak-Variationen zu behandeln, was die Effektivität Ihrer Passwort-Cracking-Bemühungen gegen Benutzer, die diese Ersetzungen verwenden, erheblich verbessern kann.
Regeln für gängige Passwortmuster entwickeln
In diesem Schritt entwickeln Sie Regeln, die auf gängige Passwortmuster abzielen, wie z. B. das Anhängen von Jahreszahlen oder gängigen Zahlen oder das Großschreiben des ersten Buchstabens. Diese Muster werden häufig von Benutzern verwendet, um ihre Passwörter "sicherer" zu machen, ohne ihre Entropie tatsächlich zu erhöhen.
Erstellen wir eine neue Regeldatei namens pattern_rules.rule in Ihrem Verzeichnis ~/project. Diese Datei wird mehrere gängige Transformationen kombinieren.
nano ~/project/pattern_rules.rule
Fügen Sie den folgenden Inhalt in die Datei pattern_rules.rule ein:
: c A2023
: c A!
: c A@
cschreibt den ersten Buchstaben groß.A2023hängt die Jahreszahl "2023" an.A!hängt ein Ausrufezeichen an.A@hängt ein At-Symbol an.
Jede Zeile stellt eine separate Regel dar. John the Ripper wendet jede Regel unabhängig auf jedes Wort in der Wortliste an.
Speichern Sie die Datei, indem Sie Strg+X, dann Y und dann Enter drücken.
Nun testen wir diese Regeln mit unserer wordlist.txt.
john --wordlist=~/project/wordlist.txt --rules=~/project/pattern_rules.rule --stdout
Sie sollten eine Ausgabe ähnlich dieser sehen:
Password2023
Secret2023
Password!
Secret!
Password@
Secret@
Dies zeigt, wie Sie eine Reihe von Regeln erstellen können, um gängige Passwortmuster abzudecken und so Ihre Angriffsfläche erheblich über einfache Wörterbuchwörter hinaus zu erweitern.
Komplexe Regelwerke testen
In diesem Schritt kombinieren Sie die bisher erlernten Konzepte, um ein komplexeres Regelwerk zu testen. Dies beinhaltet die Erstellung einer Regeldatei, die sowohl Leet Speak-Transformationen als auch gängige Mustererweiterungen enthält, und demonstriert, wie verschiedene Regeltypen zusammen verwendet werden können.
Erstellen wir eine umfassende Regeldatei namens complex_rules.rule in Ihrem Verzeichnis ~/project. Diese Datei wird Leet Speak-Ersetzungen enthalten und dann gängige Zahlen oder Symbole anhängen.
nano ~/project/complex_rules.rule
Fügen Sie den folgenden Inhalt in die Datei complex_rules.rule ein:
: s/a/4 s/e/3 s/i/1 s/o/0 s/s/5 A123
: s/a/4 s/e/3 s/i/1 s/o/0 s/s/5 A!
- Die erste Regel wendet Leet Speak an und hängt dann "123" an.
- Die zweite Regel wendet Leet Speak an und hängt dann "!" an.
Speichern Sie die Datei, indem Sie Strg+X, dann Y und dann Enter drücken.
Nun testen wir diese komplexen Regeln mit unserer wordlist.txt.
john --wordlist=~/project/wordlist.txt --rules=~/project/complex_rules.rule --stdout
Sie sollten eine Ausgabe ähnlich dieser sehen:
p4ssw0rd123
s3cr3t123
p4ssw0rd!
s3cr3t!
Dies demonstriert die Leistungsfähigkeit der Kombination verschiedener Regeltypen zur Generierung einer breiten Palette potenzieller Passwortkandidaten, was für effektives Passwort-Cracking unerlässlich ist.
Regel-Performance optimieren
In diesem Schritt lernen Sie, wie Sie die Regel-Performance optimieren können. Während komplexe Regeln mächtig sind, können sie auch rechenintensiv sein. John the Ripper bietet Mechanismen zur Optimierung der Regelanwendung, hauptsächlich durch das Verständnis der Reihenfolge der Operationen und die Vermeidung redundanter Regeln.
Eine Möglichkeit zur Optimierung besteht darin, sicherzustellen, dass Ihre Regeln so spezifisch wie möglich sind und die Generierung unnötiger Kandidaten vermeiden. Wenn Sie beispielsweise wissen, dass ein Passwort immer mit einem Großbuchstaben beginnt, ist die Anwendung einer Regel, die jeden Buchstaben großschreibt, ineffizient.
Betrachten Sie die complex_rules.rule aus dem vorherigen Schritt. Jede Regel wendet alle Leet Speak-Ersetzungen an, bevor sie etwas anhängt. Wenn Sie viele solcher Regeln hätten, könnte die Wiederholung der Ersetzungen weniger effizient sein, als sie einmal anzuwenden und dann zu verzweigen. Für einfache Fälle ist das Verketten innerhalb einer einzelnen Regel jedoch oft effizient genug.
Für sehr große Regelwerke oder spezifische Szenarien erlaubt John the Ripper eine fortgeschrittenere Regel-Syntax und externe Regeldateien. Für dieses Labor konzentrieren wir uns auf ein konzeptionelles Verständnis der Optimierung.
Eine gängige Optimierungstechnik besteht darin, Ihre Wortliste zu filtern oder spezifische Muster mit separaten, kleineren Regelwerken anstelle eines einzigen massiven, allumfassenden Regelwerks anzusprechen.
Lassen Sie uns ein einfaches Optimierungskonzept demonstrieren, indem wir eine Regel erstellen, die nur angewendet wird, wenn das Wort kürzer als eine bestimmte Länge ist, unter Verwendung der l (length)-Regel. Dies kann die Anwendung komplexer Regeln auf Wörter verhindern, die bereits zu lang sind, um gängige Passwörter zu sein.
Erstellen Sie eine neue Regeldatei namens optimized_rules.rule in Ihrem Verzeichnis ~/project.
nano ~/project/optimized_rules.rule
Fügen Sie den folgenden Inhalt in die Datei optimized_rules.rule ein:
: l<10 s/e/3 A!
l<10bedeutet "wende diese Regel nur an, wenn die Wortlänge kleiner als 10 Zeichen ist".s/e/3ersetzt 'e' durch '3'.A!hängt ein Ausrufezeichen an.
Speichern Sie die Datei, indem Sie Strg+X, dann Y und dann Enter drücken.
Nun testen wir diese Regel mit unserer wordlist.txt.
john --wordlist=~/project/wordlist.txt --rules=~/project/optimized_rules.rule --stdout
Sie sollten eine Ausgabe ähnlich dieser sehen:
s3cr3t!
p4ssw0rd!
Sowohl "password" (8 Zeichen) als auch "secret" (6 Zeichen) sind kürzer als 10 Zeichen, daher wird die Regel angewendet. Wenn Sie ein Wort wie "superlongpassword" (17 Zeichen) hätten, würde diese Regel nicht darauf angewendet, wodurch die Berechnung gespart wird.
Das Verständnis, wie Regeln selektiv basierend auf Bedingungen wie der Länge angewendet werden, kann die Leistung Ihrer Cracking-Versuche erheblich verbessern, indem die Anzahl der unnötigerweise generierten Kandidaten reduziert wird.
Zusammenfassung
In diesem Labor haben Sie ein umfassendes Verständnis für die Erstellung fortgeschrittener Regeln für John the Ripper erlangt. Sie begannen mit der Untersuchung von Regel-Chaining (Regelverkettung), das sequentielle Transformationen ermöglicht. Anschließend lernten Sie, wie Sie spezifische Regeln für gängige Leet Speak-Transformationen erstellen und Regeln entwickeln, um verbreitete Passwortmuster anzusprechen. Darüber hinaus übten Sie das Testen komplexer Regelwerke durch die Kombination verschiedener Regeltypen. Schließlich wurden Sie mit Konzepten zur Optimierung der Regel-Performance vertraut gemacht, wie z. B. die Verwendung von bedingten Regeln zur Reduzierung unnötiger Berechnungen. Diese Fähigkeiten sind grundlegend, um John the Ripper effektiv in realen Szenarien der Passwortprüfung und des Passwort-Crackings einzusetzen.


