Grundlegende Modi von John the Ripper verstehen

Kali LinuxBeginner
Jetzt üben

Einleitung

John the Ripper (JtR) ist ein leistungsstarkes und weit verbreitetes Open-Source-Tool zur Überprüfung der Passwortsicherheit und zur Wiederherstellung von Passwörtern. Systemadministratoren können es verwenden, um die Stärke von Passwörtern auf ihren Systemen zu testen, und Sicherheitsexperten, um verlorene Passwörter wiederherzustellen. Das Verständnis seiner verschiedenen Betriebsmodi ist entscheidend für eine effektive Nutzung.

In diesem Lab erhalten Sie praktische Erfahrungen mit den grundlegenden Cracking-Modi von John the Ripper. Sie lernen, wie Sie seine Hilfeoptionen nutzen und sein Standardverhalten erkunden. Anschließend tauchen Sie in seine vier Hauptmodi ein: Single Crack, Wordlist, Incremental und External Mode, und lernen Zweck und grundlegende Verwendung jedes einzelnen kennen.

John the Ripper Hilfeoptionen erkunden

In diesem Schritt erkunden Sie zunächst die integrierte Hilfedokumentation für John the Ripper. Das Hilfemenü ist eine wesentliche Ressource, die eine schnelle Referenz für die Syntax des Tools, Befehlszeilenoptionen und verfügbare Modi bietet.

Um die Haupt-Hilfeseite anzuzeigen, führen Sie einfach den Befehl john mit dem Flag --help aus. Dies zeigt eine Zusammenfassung der gängigsten Optionen und ihrer Beschreibungen an.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

john --help

Sie sehen eine detaillierte Ausgabe, die verschiedene Optionen auflistet. Achten Sie auf die Flags, die verschiedene Cracking-Modi angeben, wie z. B. --single, --wordlist und --incremental.

John the Ripper 1.9.0-jumbo-1 [linux-gnu 64-bit x86_64 AVX2 AC]
Copyright (c) 1996-2019 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]

--single                   "single crack" mode
--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin
--rules                    enable word mangling rules for wordlist mode
--incremental[=MODE]       "incremental" mode [using section MODE]
--external=MODE            external mode or word filter
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             new session [called NAME]
--status[=NAME]            print status of a session [called NAME]
--show[=LEFT]              show cracked passwords [if =LEFT, then uncracked]
--test[=TIME]              run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..]  [don't] load this (these) user(s) only
--groups=[-]GID[,..]       load users of this (these) group(s) only
... (output truncated) ...

Dieser Befehl gibt Ihnen einen soliden Überblick darüber, was John the Ripper leisten kann. In den folgenden Schritten werden wir einige dieser Modi in der Praxis erkunden.

John the Ripper Standard-Cracking-Modi identifizieren

In diesem Schritt lernen Sie, wie John the Ripper standardmäßig arbeitet. Wenn Sie john auf eine Passwortdatei anwenden, ohne einen Modus anzugeben, wählt es nicht einfach eine Methode aus. Stattdessen durchläuft es intelligent seine effektivsten Modi in einer Standardreihenfolge: zuerst den "single"-Modus, dann den "wordlist"-Modus und schließlich den "incremental"-Modus. Dies bietet eine gute Balance zwischen Geschwindigkeit und Gründlichkeit.

Unser Setup-Skript hat bereits eine Datei namens mypasswd.txt in Ihrem aktuellen Verzeichnis (~/project) erstellt. Diese Datei enthält einen Benutzereintrag mit einem einfachen, gehashten Passwort.

Lassen Sie uns John the Ripper ohne Modus-Flags auf diese Datei anwenden, um sein Standardverhalten zu beobachten.

john mypasswd.txt

John startet den Cracking-Prozess. Sie sehen Statusaktualisierungen, während es arbeitet. Da das Passwort einfach ist, sollte es sehr schnell geknackt werden.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 12000p/s 12000c/s 12000C/s rolez..pimpin
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Wie Sie sehen können, hat John das Passwort (password) für den Benutzer testuser erfolgreich geknackt. Es schlägt auch hilfreich vor, die Option --show zu verwenden, um geknackte Passwörter später anzuzeigen.

Um das geknackte Passwort zu bestätigen, können Sie die Option --show verwenden:

john --show mypasswd.txt

Dies zeigt alle erfolgreich geknackten Passwörter für die angegebene Datei an.

testuser:password:1001:1001::/home/testuser:/bin/sh

1 password hash cracked, 0 left

Dies bestätigt, dass die Standardmodus-Sequenz erfolgreich war.

Unterscheiden zwischen Single Crack und Wordlist Mode

In diesem Schritt lernen Sie zwei der grundlegendsten Cracking-Modi kennen: "single crack" und "wordlist".

Zunächst ist es wichtig zu wissen, dass John the Ripper geknackte Passwörter in einer Datei namens john.pot speichert, die sich im Verzeichnis ~/.john/ befindet. Um eine Cracking-Sitzung für ein bereits geknacktes Passwort erneut auszuführen, müssen wir diese Datei zuerst entfernen. Lassen Sie uns das jetzt tun.

rm ~/.john/john.pot

Single Crack Mode

Der Single Crack Mode ist ein schneller und effizienter Modus, der Passwortkandidaten basierend auf Informationen über das Benutzerkonto selbst generiert, wie z. B. den Benutzernamen oder Daten aus dem GECOS-Feld. Er wendet gängige Mutationen (wie das Hinzufügen von Zahlen oder Symbolen) auf diese Kandidaten an.

Lassen Sie uns John explizit im Single Crack Mode mit dem Flag --single ausführen.

john --single mypasswd.txt

Die Ausgabe wird der Standardausführung ähneln, da dies der erste Modus ist, den John versucht. Er ist sehr effektiv gegen Passwörter, die Variationen des Benutzernamens sind.

Wordlist Mode

Der Wordlist Mode ist eine der beliebtesten Techniken zum Knacken von Passwörtern. Er verwendet eine vorkompilierte Liste von Wörtern (ein Wörterbuch oder eine Wortliste) und versucht jedes davon als Passwort. John wird mit einer Standard-Wortliste geliefert, die sich typischerweise unter /usr/share/john/password.lst befindet.

Lassen Sie uns zuerst die Pot-Datei erneut entfernen, um die Sitzung zurückzusetzen.

rm ~/.john/john.pot

Führen Sie nun John im Wordlist Mode aus und weisen Sie ihn mit dem Flag --wordlist explizit auf seine Standard-Wortliste hin.

john --wordlist=/usr/share/john/password.lst mypasswd.txt

Sie werden sehen, wie John die Wortliste lädt und versucht, den Hash zu knacken. Da "password" ein sehr gängiges Passwort ist, ist es in der Standardliste enthalten und wird fast sofort gefunden.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Dies zeigt, wie man John anweist, eine bestimmte Wörterbuchdatei für seinen Angriff zu verwenden.

Grundlagen des Incremental Mode verstehen

In diesem Schritt werden Sie den "incremental" Modus erkunden. Dieser Modus ist im Wesentlichen ein Brute-Force-Angriff. Er versucht systematisch alle möglichen Zeichenkombinationen bis zu einer bestimmten Länge. Obwohl er der umfassendste Modus ist, kann er auch extrem zeitaufwendig sein, selbst für Passwörter moderater Komplexität.

Das Verhalten des Incremental Mode wird in der Datei john.conf definiert, die Zeichensätze (z. B. Alnum für alphanumerisch, All für alle Zeichen) und Längenbeschränkungen festlegt.

Zuerst setzen wir die Cracking-Sitzung zurück, indem wir erneut die Datei john.pot entfernen.

rm ~/.john/john.pot

Lassen Sie uns nun John im Incremental Mode ausführen. Wir geben den Zeichensatz Digits an, der John anweist, alle möglichen numerischen Kombinationen auszuprobieren. Wir verwenden dafür das Flag --incremental.

john --incremental=Digits mypasswd.txt

Sie werden sehen, wie John beginnt, Kombinationen wie "0", "1", "2", "00", "01" usw. auszuprobieren. Da unser Passwort "password" (nur Buchstaben) ist, wird dieser Angriff nicht erfolgreich sein. Sie können Ctrl+C drücken, um ihn nach einigen Sekunden zu stoppen.

Lassen Sie uns nun einen passenderen Zeichensatz ausprobieren. Wir verwenden den Standard-Incremental-Modus, der typischerweise mit gängigen Zeichensätzen wie Kleinbuchstaben beginnt.

Setzen Sie die Sitzung noch einmal zurück:

rm ~/.john/john.pot

Führen Sie den Befehl aus, ohne einen Zeichensatz anzugeben:

john --incremental mypasswd.txt

Dieses Mal wird John seine vordefinierte Sequenz von Zeichensätzen verwenden. Da "password" aus Kleinbuchstaben besteht, wird der Zeichensatz Lower oder Alpha es schließlich finden.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:40) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Session completed

Der Incremental Mode ist Ihr letztes Mittel, wenn andere, schnellere Modi fehlgeschlagen sind.

Informationen zur Funktionalität des External Mode

In diesem Schritt werden Sie mit dem "external" Modus vertraut gemacht. Dies ist der fortschrittlichste und flexibelste der Modi von John. Er ermöglicht es Ihnen, benutzerdefinierte Passwortgenerierungslogik mithilfe einer C-ähnlichen Skriptsprache direkt in der Konfigurationsdatei john.conf zu definieren. Dies ist leistungsstark für die Erstellung hochgradig gezielter Angriffe, die andere Modi nicht bewältigen können.

Obwohl das Schreiben von externen Skripten ein fortgeschrittenes Thema ist, können Sie die vordefinierten externen Modi, die mit John geliefert werden, einfach verwenden. Lassen Sie uns zuerst die verfügbaren externen Modi auflisten, die in /etc/john/john.conf definiert sind.

grep '^\[' /etc/john/john.conf | grep 'External:'

Dieser Befehl filtert die Konfigurationsdatei, um Ihnen die Namen der externen Modusabschnitte anzuzeigen.

[External:Compiler]
[External:Double]
[External:Hybrid]
[External:Keyboard]
[External:LanManager]
[External:Shift]
[External:Status]
[External:Wordlist]

Sie sehen mehrere integrierte externe Funktionen. Lassen Sie uns versuchen, den Wordlist externen Modus zu verwenden. Dieser Modus ahmt im Wesentlichen den Standard-Wordlist-Modus nach, ist aber als externes Skript implementiert, was ihn zu einem guten Beispiel macht.

Zuerst, wie immer, setzen wir die Sitzung zurück.

rm ~/.john/john.pot

Führen Sie nun John mit dem Flag --external aus und geben Sie den Wordlist Modus an.

john --external=Wordlist mypasswd.txt

Die Ausgabe wird der Ausgabe des Standard-Wordlist-Modus sehr ähnlich sehen, da die zugrunde liegende Logik dieselbe ist: Sie verwendet die Standard-Wortliste, um das Passwort zu finden.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:45) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Session completed

Der External Mode eröffnet nahezu grenzenlose Möglichkeiten zur Generierung von Passwortkandidaten und ist somit ein Werkzeug für erfahrene Benutzer, die benutzerdefinierte Cracking-Logik implementieren müssen.

Zusammenfassung

In diesem Lab haben Sie die grundlegenden Cracking-Modi von John the Ripper erfolgreich erkundet. Sie haben gelernt, wie Sie die Hilfeoptionen navigieren und sein Standardverhalten beobachtet, das zur Effizienz mehrere Modi intelligent kombiniert.

Sie haben praktische Erfahrungen gesammelt mit:

  • Single Crack Mode: Ein schneller Modus, der benutzerspezifische Informationen verwendet, um Passwörter zu erraten.
  • Wordlist Mode: Eine gängige Technik, die ein Wörterbuch von Wörtern verwendet.
  • Incremental Mode: Ein umfassender Brute-Force-Modus, der alle Zeichenkombinationen ausprobiert.
  • External Mode: Ein fortgeschrittener, skriptfähiger Modus zum Erstellen benutzerdefinierter Passwortgenerierungsregeln.

Das Verständnis dieser Kernmodi ist der erste Schritt zur Beherrschung von John the Ripper für Aufgaben der Passwortsicherheitsprüfung und -wiederherstellung. Sie sind nun mit dem grundlegenden Wissen ausgestattet, um für verschiedene Szenarien den richtigen Modus auszuwählen.