John the Ripper zur Passwortprüfung verwenden

Kali LinuxBeginner
Jetzt üben

Einleitung

In diesem Labor erhalten Sie praktische Erfahrungen mit John the Ripper, einem weit verbreiteten Open-Source-Tool zur Überprüfung der Passwortsicherheit und zur Wiederherstellung von Passwörtern. Das Verständnis der Verwendung solcher Tools ist entscheidend für die Identifizierung von Schwachstellen in Passwortrichtlinien und die Stärkung der allgemeinen Systemsicherheit. Sie lernen die praktischen Schritte zum Sammeln von Passwort-Hashes, zur Verwendung von John the Ripper zur Identifizierung schwacher Passwörter, zur Erstellung von Berichten über geknackte Passwörter und zur Formulierung von Empfehlungen für verbesserte Passwortrichtlinien. Dieses Labor wird auch die Automatisierung des Passwort-Auditing-Prozesses behandeln und einen umfassenden Überblick über bewährte Verfahren für die Passwortsicherheit geben.

Sammeln von Passwort-Hashes für die Überprüfung

In diesem Schritt lernen Sie, wie Sie Passwort-Hashes sammeln, die für die Passwort-Überprüfung unerlässlich sind. Auf Linux-Systemen werden Passwort-Hashes typischerweise in der Datei /etc/shadow gespeichert. Der Zugriff auf diese Datei erfordert jedoch Root-Privilegien. Für dieses Labor haben wir eine Dummy-Shadow-Datei namens /etc/shadow_dummy erstellt, die Sie verwenden werden.

Zuerst untersuchen wir den Inhalt der Dummy-Shadow-Datei.

cat /etc/shadow_dummy

Sie sollten eine Ausgabe ähnlich dieser sehen, die Benutzernamen und ihre entsprechenden Passwort-Hashes anzeigt:

user1:5f4dcc3b5aa765d61d8327deb882cf99
user2:21232f297a57a5a743894a0e4a801fc3
user3:d41d8cd98f00b204e9800998ecf8427e
user4:e10adc3949ba59abbe56e057f20f883e
user5:a8b7c6d5e4f3g2h1i0j9k8l7m6n5o4p3

Als Nächstes kopieren Sie diese Dummy-Shadow-Datei in Ihr aktuelles Arbeitsverzeichnis (~/project), um sie für John the Ripper leicht zugänglich zu machen.

cp /etc/shadow_dummy ~/project/hashes.txt

Verifizieren Sie nun, dass die Datei hashes.txt erfolgreich in Ihr Verzeichnis ~/project kopiert wurde.

ls ~/project/hashes.txt

Die Ausgabe sollte die Anwesenheit der Datei bestätigen:

/home/labex/project/hashes.txt

Ausführen von John the Ripper zur Identifizierung schwacher Passwörter

In diesem Schritt verwenden Sie John the Ripper, um schwache Passwörter aus der vorbereiteten Datei hashes.txt zu identifizieren. John the Ripper kann verschiedene Knackmodi verwenden, einschließlich Wörterbuchangriffen. Wir werden einen Wörterbuchangriff mit einer vordefinierten Wortliste durchführen.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden, in dem sich Ihre Dateien hashes.txt und wordlist.txt befinden.

cd ~/project

Führen Sie nun John the Ripper mit der Datei hashes.txt und der Datei wordlist.txt aus. Die Option --wordlist gibt den Pfad zu Ihrer Wortliste an.

john --wordlist=wordlist.txt hashes.txt

John the Ripper beginnt mit der Verarbeitung der Hashes. Wenn Übereinstimmungen gefunden werden, werden die geknackten Passwörter angezeigt. Die Ausgabe könnte wie folgt aussehen:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (LM HASH, descrypt/BSDI crypt/other crypt(3) [DES/AES-NI])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
123456           (user2)
test             (user3)
admin            (user4)
4g 0:00:00:00 DONE (2023-10-27 08:30) 400% (ETA: 08:30) 0.000c/s 0p/s 4.000w/s 4.000P/s user1, user2, user3, user4
Session completed.

In diesem Beispiel hat John the Ripper die Passwörter für user1, user2, user3 und user4 erfolgreich geknackt. Das Passwort für user5 wurde nicht geknackt, da es nicht in unserer einfachen Wortliste enthalten ist.

Um die bisher von John geknackten Passwörter anzuzeigen, können Sie die Option --show verwenden.

john --show hashes.txt

Die Ausgabe listet die geknackten Passwörter auf:

user1:password
user2:123456
user3:test
user4:admin

4 password hashes cracked, 1 left

Dieser Befehl ist nützlich, um die Ergebnisse Ihrer Knack-Sitzung zu überprüfen.

Berichte über geknackte Passwörter generieren

In diesem Schritt lernen Sie, wie Sie Berichte über die geknackten Passwörter generieren. John the Ripper speichert die geknackten Passwörter in einer Datei, typischerweise ~/.john/john.pot. Sie können die Option --show verwenden, um diese geknackten Passwörter anzuzeigen, was als grundlegender Bericht dient.

Um eine saubere Liste der geknackten Passwörter zu erhalten, können Sie die Ausgabe von john --show in eine Datei umleiten. Dies ist eine gängige Praxis zur Erstellung von Berichten, die weiter analysiert oder geteilt werden können.

Stellen Sie zunächst sicher, dass wir uns im Verzeichnis ~/project befinden.

cd ~/project

Leiten Sie nun die Ausgabe von john --show hashes.txt in eine neue Datei namens cracked_passwords.txt um.

john --show hashes.txt > cracked_passwords.txt

Dieser Befehl erzeugt keine Ausgabe auf dem Terminal, erstellt aber die Datei cracked_passwords.txt in Ihrem aktuellen Verzeichnis.

Zeigen Sie als Nächstes den Inhalt der Datei cracked_passwords.txt an, um zu bestätigen, dass der Bericht korrekt generiert wurde.

cat cracked_passwords.txt

Sie sollten die Liste der geknackten Passwörter sehen, ähnlich der folgenden:

user1:password
user2:123456
user3:test
user4:admin

4 password hashes cracked, 1 left

Diese Datei cracked_passwords.txt dient nun als Ihr Bericht, der die Benutzerkonten mit schwachen, geknackten Passwörtern detailliert auflistet. In einem realen Szenario würde dieser Bericht verwendet, um Benutzer zu identifizieren, die ihre Passwörter sofort ändern müssen.

Empfehlungen zur Verbesserung der Passwortrichtlinien

In diesem Schritt formulieren Sie Empfehlungen zur Verbesserung von Passwortrichtlinien, basierend auf den Ergebnissen der Passwortprüfung. Die Identifizierung schwacher Passwörter ist nur der erste Schritt; der nächste entscheidende Schritt ist die Implementierung von Maßnahmen, um solche Schwachstellen in Zukunft zu verhindern.

Basierend auf den geknackten Passwörtern (password, 123456, test, admin) ist klar, dass die aktuelle Passwortrichtlinie (oder deren Fehlen) sehr einfache und gängige Passwörter zulässt.

Hier sind einige wichtige Empfehlungen zur Verbesserung von Passwortrichtlinien:

  1. Mindestlänge: Erzwingen Sie eine Mindestpasswortlänge, typischerweise 12 Zeichen oder mehr. Längere Passwörter sind exponentiell schwerer zu knacken.
  2. Komplexitätsanforderungen: Verpflichten Sie die Verwendung einer Mischung aus Zeichentypen:
    • Großbuchstaben (A-Z)
    • Kleinbuchstaben (a-z)
    • Zahlen (0-9)
    • Sonderzeichen (!@#$%^&*()_+-=[]{}|;:'",.<>/?`~)
  3. Vermeidung gängiger Passwörter: Implementieren Sie eine Sperrliste für häufig verwendete oder leicht zu erratende Passwörter (wie die in unserer wordlist.txt gefundenen). Viele Systeme können neue Passwörter gegen solche Sperrlisten prüfen.
  4. Keine persönlichen Informationen: Weisen Sie Benutzer an, keine persönlichen Informationen (Namen, Geburtstage, Tiernamen) zu verwenden, die leicht erraten oder online gefunden werden können.
  5. Regelmäßige Änderungen (mit Vorsicht): Obwohl historisch empfohlen, können häufige obligatorische Passwortänderungen dazu führen, dass Benutzer einfachere, vorhersagbarere Passwörter wählen. Ein besserer Ansatz ist die Erzwingung starker Passwörter und nur dann eine Änderung zu verlangen, wenn ein Verstoß vermutet wird.
  6. Multi-Faktor-Authentifizierung (MFA): Implementieren Sie für kritische Systeme MFA. Selbst wenn ein Passwort kompromittiert wird, bietet MFA eine zusätzliche Sicherheitsebene.
  7. Passwort-Manager: Ermutigen Sie Benutzer zur Nutzung von Passwort-Managern oder stellen Sie diese zur Verfügung. Diese Tools können starke, eindeutige Passwörter für verschiedene Dienste generieren und speichern.

Um Ihr Verständnis zu demonstrieren, überlegen Sie, wie Sie diese Empfehlungen kommunizieren würden. Sie könnten zum Beispiel eine einfache Richtlinienerklärung entwerfen.

Erstellen wir eine Datei namens password_policy_recommendations.txt in Ihrem Verzeichnis ~/project und fügen Sie einige wichtige Empfehlungen hinzu.

cd ~/project
echo "--- Password Policy Recommendations ---" | tee password_policy_recommendations.txt > /dev/null
echo "1. Minimum length: 12 characters" | tee -a password_policy_recommendations.txt > /dev/null
echo "2. Complexity: Mix of uppercase, lowercase, numbers, special characters" | tee -a password_policy_recommendations.txt > /dev/null
echo "3. Avoid common passwords and personal information" | tee -a password_policy_recommendations.txt > /dev/null
echo "4. Implement Multi-Factor Authentication (MFA) for critical systems" | tee -a password_policy_recommendations.txt > /dev/null

Zeigen Sie nun den Inhalt der Datei password_policy_recommendations.txt an.

cat password_policy_recommendations.txt

Die Ausgabe sollte Ihre Empfehlungen anzeigen:

--- Password Policy Recommendations ---
1. Minimum length: 12 characters
2. Complexity: Mix of uppercase, lowercase, numbers, special characters
3. Avoid common passwords and personal information
4. Implement Multi-Factor Authentication (MFA) for critical systems

Diese Datei stellt einen grundlegenden Bericht Ihrer Empfehlungen dar.

Automatisierung des Passwort-Audit-Prozesses

In diesem Schritt erfahren Sie, wie Sie Teile des Passwort-Audit-Prozesses automatisieren können. Obwohl John the Ripper ein manuelles Werkzeug ist, kann seine Ausführung skriptgesteuert werden, um periodisch zu laufen, wodurch der Audit-Prozess effizienter und proaktiver wird. Automatisierung hilft bei der kontinuierlichen Überwachung der Passwortstärke und der Identifizierung neuer Schwachstellen, sobald sie auftreten.

Eine einfache Möglichkeit zur Automatisierung besteht darin, ein Shell-Skript zu erstellen, das die von Ihnen gelernten Schritte ausführt: Hashes sammeln, John the Ripper ausführen und einen Bericht generieren.

Erstellen wir ein einfaches Shell-Skript namens audit_script.sh in Ihrem Verzeichnis ~/project.

cd ~/project
nano audit_script.sh

Fügen Sie im nano-Editor den folgenden Inhalt hinzu:

#!/bin/bash

## Define paths
HASH_FILE="/etc/shadow_dummy" ## In a real scenario, this would be /etc/shadow
WORDLIST_FILE="wordlist.txt"
OUTPUT_DIR="~/project/audit_results"
CRACKED_REPORT="$OUTPUT_DIR/cracked_passwords_$(date +%Y%m%d_%H%M%S).txt"

## Create output directory if it doesn't exist
mkdir -p "$OUTPUT_DIR"

echo "--- Starting Password Audit ---"

## Step 1: Copy hashes
cp "$HASH_FILE" "$OUTPUT_DIR/hashes.txt"
echo "Hashes copied to $OUTPUT_DIR/hashes.txt"

## Step 2: Run John the Ripper
echo "Running John the Ripper..."
john --wordlist="$WORDLIST_FILE" "$OUTPUT_DIR/hashes.txt"

## Step 3: Generate report
echo "Generating cracked password report..."
john --show "$OUTPUT_DIR/hashes.txt" > "$CRACKED_REPORT"

echo "Audit complete. Report saved to $CRACKED_REPORT"
echo "--- Audit Finished ---"

Drücken Sie Strg+X, dann Y und dann Enter, um zu speichern und nano zu beenden.

Machen Sie das Skript anschließend ausführbar:

chmod +x audit_script.sh

Führen Sie nun das Skript aus, um es in Aktion zu sehen:

./audit_script.sh

Sie sehen eine Ausgabe, die den manuellen Schritten ähnelt und anzeigt, dass der Audit-Prozess läuft und ein Bericht generiert wird.

--- Starting Password Audit ---
Hashes copied to /home/labex/project/audit_results/hashes.txt
Running John the Ripper...
Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (LM HASH, descrypt/BSDI crypt/other crypt(3) [DES/AES-NI])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
123456           (user2)
test             (user3)
admin            (user4)
4g 0:00:00:00 DONE (2023-10-27 08:35) 400% (ETA: 08:35) 0.000c/s 0p/s 4.000w/s 4.000P/s user1, user2, user3, user4
Session completed.
Generating cracked password report...
Audit complete. Report saved to /home/labex/project/audit_results/cracked_passwords_YYYYMMDD_HHMMSS.txt
--- Audit Finished ---

Überprüfen Sie abschließend, ob das Verzeichnis audit_results und eine Berichtsdatei darin erstellt wurden.

ls ~/project/audit_results/

Sie sollten hashes.txt und eine Datei cracked_passwords_YYYYMMDD_HHMMSS.txt sehen (wobei YYYYMMDD_HHMMSS der aktuelle Zeitstempel ist).

cracked_passwords_20231027_083500.txt  hashes.txt

Dieses Skript kann auf einem echten Linux-System mit Tools wie cron periodisch ausgeführt werden, um ein kontinuierliches Passwort-Auditing zu ermöglichen.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie Sie John the Ripper für die Passwortprüfung verwenden. Sie haben damit begonnen, Passwort-Hashes aus einer Dummy-Shadow-Datei zu sammeln, dann John the Ripper mit einer Wortliste verwendet, um schwache Passwörter zu identifizieren. Sie haben einen Bericht über die geknackten Passwörter erstellt und wichtige Empfehlungen zur Verbesserung von Passwortrichtlinien formuliert, wie z. B. die Durchsetzung von Mindestlänge, Komplexität und die Vermeidung gängiger Passwörter. Schließlich haben Sie ein einfaches Shell-Skript erstellt, um den Passwort-Audit-Prozess zu automatisieren, und gezeigt, wie diese Aufgaben in eine kontinuierliche Sicherheitsüberwachungsstrategie integriert werden können. Diese praktische Erfahrung vermittelt ein grundlegendes Verständnis der Passwortsicherheitsprüfung, eine kritische Fähigkeit für jeden Systemadministrator oder Sicherheitsexperten.