Einleitung
In diesem Lab werden Sie sich mit den leistungsstarken Fähigkeiten von John the Ripper, einem beliebten Open-Source-Tool zum Knacken von Passwörtern, befassen, insbesondere mit seinem "inkrementellen Modus". Der inkrementelle Modus ist eine hocheffiziente Methode zum Knacken von Passwörtern, indem systematisch Zeichenkombinationen basierend auf vordefinierten Zeichensätzen ausprobiert werden. Sie lernen, wie Sie einen einfachen Passwort-Hash zu Testzwecken generieren und dann den inkrementellen Modus mit verschiedenen Zeichensätzen (alle Zeichen, nur Ziffern und nur Buchstaben) anwenden, um dessen Effektivität und Leistung zu beobachten. Diese praktische Erfahrung vermittelt Ihnen ein fundiertes Verständnis dafür, wie Passwort-Cracking funktioniert und welche Faktoren seine Geschwindigkeit beeinflussen.
Generieren eines einfachen Hashes für Tests
In diesem Schritt generieren Sie einen einfachen Passwort-Hash, den John the Ripper zu knacken versuchen kann. Wir verwenden den Befehl mkpasswd, um einen Hash für ein bekanntes Passwort zu erstellen. Dies ermöglicht es uns, den Erfolg von John the Ripper später zu überprüfen.
Stellen Sie zunächst sicher, dass whois installiert ist, da mkpasswd Teil davon ist.
sudo apt update
sudo apt install -y whois
Generieren Sie als Nächstes einen Hash für das Passwort 12345. Wir verwenden der Einfachheit halber den MD5-Algorithmus.
mkpasswd -m md5 12345
Sie sehen eine Ausgabe ähnlich wie '$1$xxxxxxx$yyyyyyyyyyyyyyy'. Kopieren Sie diesen Hash.
Speichern wir diesen Hash nun in einer Datei namens hash.txt in Ihrem Verzeichnis ~/project. Ersetzen Sie YOUR_GENERATED_HASH durch den tatsächlichen Hash, den Sie kopiert haben.
echo "YOUR_GENERATED_HASH" > ~/project/hash.txt
Wenn Ihr Hash beispielsweise $1$abcdefgh$ijklmnopqrstuvwxyz lautete, wäre der Befehl:
echo "$1$abcdefgh$ijklmnopqrstuvwxyz" > ~/project/hash.txt
Überprüfen Sie abschließend den Inhalt der Datei hash.txt.
cat ~/project/hash.txt
Sie sollten Ihren generierten Hash angezeigt sehen.
John the Ripper im inkrementellen Modus ausführen (Alle Zeichen)
In diesem Schritt verwenden Sie John the Ripper im inkrementellen Modus, um den von Ihnen generierten Passwort-Hash zu knacken. Der inkrementelle Modus versucht systematisch Zeichenkombinationen basierend auf einem definierten Zeichensatz. Standardmäßig versucht der inkrementelle Modus von John (--incremental) alle druckbaren ASCII-Zeichen.
Stellen Sie zunächst sicher, dass John the Ripper installiert ist.
sudo apt update
sudo apt install -y john
Führen Sie nun John the Ripper mit dem inkrementellen Modus gegen Ihre Datei hash.txt aus.
john --incremental ~/project/hash.txt
John beginnt mit dem Versuch, das Passwort zu knacken. Da wir ein einfaches Passwort wie 12345 verwendet haben, sollte es relativ schnell geknackt werden. Sobald das Passwort geknackt ist, zeigt John das geknackte Passwort an.
Sie sollten eine Ausgabe ähnlich dieser sehen, die anzeigt, dass das Passwort geknackt wurde:
Using default input encoding: UTF-8
Loaded 1 password hash (MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
12345 (hash.txt)
1g 0:00:00:00 DONE (2023-10-26 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s 12345
Session completed.
Um die von John gefundenen geknackten Passwörter anzuzeigen, können Sie die Option --show verwenden:
john --show ~/project/hash.txt
Dieser Befehl zeigt das geknackte Passwort an, das mit dem Hash verknüpft ist.
12345 (hash.txt)
1 password hash cracked, 0 left
John the Ripper im inkrementellen Modus ausführen (Nur Ziffern)
In diesem Schritt konfigurieren Sie den inkrementellen Modus von John the Ripper so, dass er nur Ziffern (0-9) zum Knacken verwendet. Dies ist nützlich, wenn Sie vermuten, dass ein Passwort ausschließlich aus Zahlen besteht.
Zuerst müssen wir die Sitzung von John zurücksetzen, um sicherzustellen, dass er versucht, das Passwort erneut von Grund auf zu knacken.
john --session=john --restore=none
Lassen Sie uns nun John the Ripper mit einem benutzerdefinierten inkrementellen Modus ausführen, der nur Ziffern enthält. John verwendet für den inkrementellen Modus "Regeln" oder "Zeichensätze". Wir können einen benutzerdefinierten Zeichensatz mit der Option --incremental und einem spezifischen Modusnamen angeben oder eine benutzerdefinierte .chr-Datei definieren. Der Einfachheit halber verwenden wir einen integrierten Modus, falls verfügbar, oder simulieren ihn.
Eine gängige Methode, Zeichensätze einzuschränken, ist die Verwendung einer benutzerdefinierten .conf-Datei oder die Angabe eines vordefinierten Modus. Die Standarddatei john.conf von John definiert oft verschiedene inkrementelle Modi. Versuchen wir, einen Modus zu verwenden, der sich auf Ziffern konzentriert. Wenn ein spezifischer "Ziffern"-Modus nicht direkt verfügbar ist, können wir einen benutzerdefinierten erstellen.
Für dieses Labor gehen wir von einem grundlegenden inkrementellen Modus aus, der Ziffern priorisiert. Der Standard-Inkrementalmodus von John ist recht umfassend. Um gezielt Ziffern anzusprechen, würden wir normalerweise die Konfiguration von John ändern oder einen benutzerdefinierten Zeichensatz verwenden.
Um den Effekt eines "nur Ziffern"-Angriffs zu simulieren, löschen wir zunächst die Pot-Datei von John (wo er geknackte Passwörter speichert), um sicherzustellen, dass er das Passwort neu knackt.
rm -f ~/.john/john.pot
Führen Sie John nun erneut aus. Obwohl --incremental keine direkte Option für "nur Ziffern" hat, findet seine interne Logik 12345 schnell. Der entscheidende Punkt hier ist, dass, wenn das Passwort wirklich nur aus Ziffern bestanden hätte, ein speziell konfigurierter "nur Ziffern"-Inkrementalmodus erheblich schneller wäre als ein allgemeiner.
john --incremental ~/project/hash.txt
Sie werden beobachten, wie John das Passwort 12345 erneut knackt. Der Leistungsunterschied wäre spürbar, wenn das Passwort viel länger und tatsächlich nur aus Ziffern bestünde und John mit einem spezifischen "nur Ziffern"-Zeichensatz konfiguriert wäre.
John the Ripper im inkrementellen Modus ausführen (Nur Buchstaben)
In diesem Schritt untersuchen Sie, wie John the Ripper performt, wenn er so konfiguriert ist, dass er Passwörter nur mit alphabetischen Zeichen (Buchstaben) knackt. Dieses Szenario ist relevant, wenn Sie vermuten, dass ein Passwort ausschließlich aus Buchstaben besteht.
Zuerst löschen wir erneut die Pot-Datei von John, um einen neuen Knackversuch sicherzustellen.
rm -f ~/.john/john.pot
Lassen Sie uns nun einen neuen Hash für ein Passwort generieren, das nur aus Buchstaben besteht, zum Beispiel hello.
mkpasswd -m md5 hello > ~/project/hash_letters.txt
Überprüfen Sie den Inhalt der neuen Hash-Datei:
cat ~/project/hash_letters.txt
Führen Sie nun John the Ripper gegen hash_letters.txt aus. Ähnlich wie im Szenario "nur Ziffern" ist der Standard-Inkrementalmodus von John breit gefächert. Um ihn wirklich auf Buchstaben zu beschränken, würden Sie typischerweise eine benutzerdefinierte .chr-Datei oder einen spezifischen inkrementellen Modus verwenden, der in john.conf definiert ist. Für dieses Labor führen wir den allgemeinen inkrementellen Modus aus und verstehen konzeptionell, dass ein "nur Buchstaben"-Modus für solche Passwörter schneller wäre.
john --incremental ~/project/hash_letters.txt
John beginnt mit dem Knacken des Passworts hello. Sie werden beobachten, wie es geknackt wird.
Using default input encoding: UTF-8
Loaded 1 password hash (MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
hello (hash_letters.txt)
1g 0:00:00:00 DONE (2023-10-26 10:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s hello
Session completed.
Um das geknackte Passwort zu bestätigen:
john --show ~/project/hash_letters.txt
Sie sollten hello als das geknackte Passwort angezeigt sehen.
Leistung des inkrementellen Modus verstehen
In diesem Schritt reflektieren Sie die Leistungsauswirkungen der Verwendung unterschiedlicher Zeichensätze im inkrementellen Modus von John the Ripper. Obwohl unsere Beispiele kurze, einfache Passwörter verwendeten, skalieren die Prinzipien auf komplexere Szenarien.
Die Kernidee hinter dem inkrementellen Modus ist das systematische Ausprobieren aller möglichen Kombinationen von Zeichen innerhalb eines definierten Satzes und Längenbereichs. Die Größe des Zeichensatzes beeinflusst direkt die Anzahl der möglichen Kombinationen und damit die Zeit, die zum Knacken eines Passworts benötigt wird.
Betrachten Sie Folgendes:
- Alle Zeichen (z. B. alphanumerisch, Symbole): Dies ist der größte Zeichensatz. Obwohl er jedes Passwort knacken kann, ist er der langsamste, da John eine riesige Anzahl von Kombinationen ausprobieren muss. Dies haben Sie in Schritt 2 erlebt.
- Nur Ziffern (0-9): Dies ist ein wesentlich kleinerer Zeichensatz (10 Zeichen). Wenn Sie wissen, dass ein Passwort nur aus Ziffern besteht, wäre die Verwendung eines Modus nur für Ziffern erheblich schneller als die Verwendung eines Modus für "alle Zeichen", insbesondere bei längeren Passwörtern.
- Nur Buchstaben (a-z, A-Z): Dieser Zeichensatz (52 Zeichen) ist größer als nur Ziffern, aber kleiner als alle Zeichen. Wenn Sie vermuten, dass ein Passwort nur aus Buchstaben besteht, wäre die Verwendung eines Modus nur für Buchstaben effizienter als ein Modus für "alle Zeichen".
Wichtigste Erkenntnis: Je präziser Sie den Zeichensatz eines Zielpassworts definieren können, desto schneller kann John the Ripper (oder jedes andere Knackwerkzeug) es im inkrementellen Modus knacken. Deshalb ist die Informationsbeschaffung über potenzielle Passwortmerkmale (z. B. "es ist eine Telefonnummer", "es ist ein Name") in realen Passwortknack-Szenarien entscheidend.
Abschließend räumen wir die generierten Hash-Dateien auf.
rm -f ~/project/hash.txt ~/project/hash_letters.txt
Dieser Befehl entfernt die temporären Hash-Dateien, die während des Labs erstellt wurden.
Zusammenfassung
In diesem Labor haben Sie erfolgreich gelernt, wie Sie den inkrementellen Modus von John the Ripper zum Knacken von Passwörtern verwenden. Sie begannen mit der Generierung einfacher Passwort-Hashes zum Testen. Anschließend verwendeten Sie John the Ripper, um diese Hashes zu knacken, zuerst mit dem Standardmodus "alle Zeichen" und erkundeten dann konzeptionell, wie die Einschränkung des Zeichensatzes auf "nur Ziffern" oder "nur Buchstaben" die Knack-Leistung erheblich verbessern kann. Sie haben ein praktisches Verständnis dafür gewonnen, wie der inkrementelle Modus funktioniert und wie wichtig die Eingrenzung des Zeichenraums für effizientes Passwortknacken ist. Dieses Wissen ist grundlegend für das Verständnis der Passwortsicherheit und der Techniken, die zu deren Überprüfung verwendet werden.


