John the Ripper für Penetrationstest-Szenarien

Kali LinuxBeginner
Jetzt üben

Einleitung

Willkommen zu diesem Lab über die Verwendung von John the Ripper (JtR) in Penetration-Testing-Szenarien. John the Ripper ist ein leistungsstarkes und beliebtes Open-Source-Tool zum Knacken von Passwörtern. Für einen Penetration Tester ist es ein unverzichtbares Werkzeug zur Identifizierung und Ausnutzung schwacher Passwörter, die nach wie vor eine der häufigsten Sicherheitslücken darstellen.

In diesem Lab lernen Sie, wie Sie JtR in einen typischen Pentesting-Workflow integrieren. Sie beginnen damit, das Passwort eines Benutzers aus einer erfassten Shadow-Datei zu knacken, nutzen diese Informationen im Kontext einer Privilegieneskalation und wenden JtR dann an, um das Passwort einer geschützten Datei zu knacken. Abschließend lernen Sie die entscheidenden Schritte zur Dokumentation und Berichterstattung Ihrer Ergebnisse an die Stakeholder.

John the Ripper in einen Pentesting-Workflow integrieren

In diesem Schritt führen Sie die erste Phase eines Passwortangriffs durch: das Knacken von Hashes, die während der Aufklärung (Reconnaissance) gewonnen wurden. Ein gängiges Ziel für die lokale Privilegieneskalation ist die Datei /etc/shadow, die die Passwort-Hashes von Benutzern auf Linux-Systemen speichert. Wir haben dies bereits simuliert, indem wir eine Datei shadow.txt in Ihrem Verzeichnis ~/project bereitgestellt haben.

Zuerst führen wir John the Ripper mit einer benutzerdefinierten Wortliste gegen die Datei shadow.txt aus. Eine Wortliste ist einfach eine Textdatei, die potenzielle Passwörter enthält.

Führen Sie den folgenden Befehl aus, um den Knackvorgang zu starten:

john --wordlist=wordlist.txt shadow.txt

John lädt die Hashes und testet jedes Passwort aus wordlist.txt dagegen. Da das Passwort für weakuser in unserer Wortliste enthalten ist, wird es schnell geknackt.

Using default input encoding: UTF-8
Loaded 1 password hash (sha512, 512/512 AVX512BW 16x)
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (weakuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Sobald ein Passwort geknackt wurde, speichert John es in einer Datei namens john.pot im Verzeichnis ~/.john/. Um die geknackten Passwörter für eine bestimmte Hash-Datei anzuzeigen, können Sie die Option --show verwenden.

Führen Sie diesen Befehl aus, um das geknackte Passwort anzuzeigen:

john --show shadow.txt

Sie sehen den Benutzernamen und das geknackte Passwort.

weakuser:password123:19657:0:99999:7:::

1 password hash cracked, 0 left

Sie haben erfolgreich das Passwort des Benutzers geknackt, ein entscheidender erster Schritt bei vielen Penetrationstests.

John the Ripper zur lokalen Privilegieneskalation nutzen

In diesem Schritt lernen Sie, wie ein geknacktes Passwort zur Privilegieneskalation verwendet werden kann. Nachdem das Passwort für weakuser geknackt wurde, ist der nächste logische Schritt zu sehen, welchen Zugriff dieses Konto bietet. Wenn weakuser über sudo-Berechtigungen oder Zugriff auf sensible Dateien verfügt, können Sie mehr Kontrolle über das System erlangen.

Simulieren wir dies, indem wir versuchen, mit dem gerade geknackten Passwort (password123) zum Konto weakuser zu wechseln.

Verwenden Sie den Befehl su (substitute user), um zu weakuser zu wechseln:

su weakuser

Das System wird Sie nach einem Passwort fragen. Geben Sie password123 ein und drücken Sie Enter.

Password:

Wenn das Passwort korrekt ist, ändert sich Ihre Eingabeaufforderung (Command Prompt), was anzeigt, dass Sie nun als weakuser agieren.

weakuser@...:/home/labex/project$

Bei einem echten Penetrationstest würden Sie nun das System aus der Perspektive dieses Benutzers erkunden, zum Beispiel durch Ausführen von sudo -l, um nach sudo-Rechten zu suchen. Für dieses Lab reicht es aus, zu demonstrieren, dass Sie auf das Konto zugreifen können.

Geben Sie nun exit ein, um zu Ihrer ursprünglichen labex-Benutzerschale zurückzukehren.

exit

Diese Übung demonstriert die direkten Auswirkungen eines schwachen Passworts: Es kann zu unbefugtem Kontozugriff führen, was ein Sprungbrett für weitere Systemkompromittierungen darstellt.

John the Ripper in Netzwerk-Penetrationstests anwenden

In diesem Schritt sehen Sie, wie sich die Vielseitigkeit von John the Ripper über System-Passwort-Hashes hinaus erstreckt. Pentesters finden oft passwortgeschützte Dateien, wie z. B. ZIP-Archive, auf Dateifreigaben oder während der Post-Exploitation. JtR kann auch diese knacken.

Wir haben eine passwortgeschützte Datei namens protected.zip in Ihrem Verzeichnis ~/project bereitgestellt. Der Prozess umfasst zwei Phasen: erstens das Extrahieren eines knackbarren Hashes aus der Datei und zweitens die Verwendung von John zum Knacken dieses Hashes.

Viele JtR-bezogene Tools helfen beim Extrahieren von Hashes aus verschiedenen Dateitypen. Für ZIP-Dateien verwenden wir zip2john. Führen Sie den folgenden Befehl aus, um den Hash aus protected.zip zu extrahieren und in einer Datei namens zip_hash.txt zu speichern:

zip2john protected.zip > zip_hash.txt

Sie können den Inhalt von zip_hash.txt anzeigen, um zu sehen, wie der Hash aussieht.

cat zip_hash.txt

Führen Sie nun John the Ripper auf dieser neuen Hash-Datei aus. Diesmal geben wir keine Wortliste an und lassen John seine Standardmodi verwenden, die einen Single-Crack-Modus beinhalten, der gängige Passwortvariationen ausprobiert.

john zip_hash.txt

John sollte das Passwort sehr schnell knacken.

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP, 32/64)
Cost 1 (iteration count) is 1000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
supersecret      (protected.zip)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12345p/s 12345c/s 12345C/s supersecret
Session completed

Wie zuvor verwenden Sie die Option --show, um das geknackte Passwort für die ZIP-Datei anzuzeigen.

john --show zip_hash.txt
protected.zip:supersecret

1 password hash cracked, 0 left

Sie haben erfolgreich das Passwort für die ZIP-Datei wiederhergestellt und damit gezeigt, wie JtR auf verschiedene Datentypen angewendet werden kann, die während eines Penetrationstests gefunden werden.

Ergebnisse von John the Ripper-Angriffen dokumentieren

In diesem Schritt konzentrieren Sie sich auf einen kritischen, nicht-technischen Aspekt von Penetrationstests: die Dokumentation. Das bloße Finden von Schwachstellen reicht nicht aus; Sie müssen sie klar dokumentieren, damit sie behoben werden können. Ein guter Bericht beschreibt die Schwachstelle, ihre Auswirkungen und eine Empfehlung zur Behebung.

Sie werden nun einen einfachen Befundbericht in einer Markdown-Datei erstellen. Verwenden Sie den Texteditor nano, um eine Datei namens findings.md zu erstellen.

nano findings.md

Fügen Sie im nano-Editor den folgenden Text ein. Diese Vorlage dokumentiert die beiden bisher entdeckten Schwachstellen.

## Penetrationstest-Befunde - Schwache Passwörter

### Befund 1: Schwaches Benutzerkonto-Passwort

- **Schwachstelle:** Schwaches Passwort für den Benutzer `weakuser`.
- **Passwort:** `password123`
- **Auswirkung:** Potenzial für lokale Privilegieneskalation und unbefugten Systemzugriff.
- **Empfehlung:** Erzwingen Sie eine starke Passwortrichtlinie, die Komplexität und Länge vorschreibt. Setzen Sie das Passwort für `weakuser` zurück.

### Befund 2: Schwaches Passwort auf geschütztem Archiv

- **Schwachstelle:** Schwaches Passwort für das Archiv `protected.zip`.
- **Passwort:** `supersecret`
- **Auswirkung:** Sensible Daten im Archiv sind für jeden, der die Datei findet, zugänglich.
- **Empfehlung:** Verwenden Sie starke, komplexe Passwörter für alle verschlüsselten Dateien und Archive.

Nachdem Sie den Text eingefügt haben, speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und schließlich Enter drücken.

Sie haben nun eine klare und prägnante Aufzeichnung Ihrer Ergebnisse erstellt, was ein wesentlicher Bestandteil jedes professionellen Penetrationstests ist.

Schwache Passwörter an Stakeholder melden

In diesem letzten Schritt üben Sie die Erstellung einer übergeordneten Zusammenfassung, die für Stakeholder wie Systemadministratoren oder das Management geeignet ist. Während das detaillierte Befunddokument für technische Teams bestimmt ist, kommuniziert ein zusammenfassender Bericht das Risiko und die Notwendigkeit von Maßnahmen auf direktere Weise.

Sie erstellen eine einfache Textdatei namens report_summary.txt, die eine E-Mail oder eine Berichtsübersicht simuliert.

Verwenden Sie den nano-Editor, um die Datei zu erstellen:

nano report_summary.txt

Fügen Sie im nano-Editor die folgende Zusammenfassung ein. Dieser Text kommuniziert das Problem und die erforderliche Aktion klar und prägnant.

An: Systemadministrator
Von: Penetration Tester
Betreff: Kritische Schwachstelle: Schwache Passwörter entdeckt

Dieser Bericht fasst kritische Passwortschwachstellen zusammen, die während des letzten Penetrationstests entdeckt wurden.

1. Der Benutzer 'weakuser' hat ein knackbarres Passwort ('password123'), was ein Risiko der Privilegieneskalation birgt.
2. Eine geschützte Datei 'protected.zip' verwendet ein schwaches Passwort ('supersecret'), wodurch ihr Inhalt offengelegt wird.

Es sind sofortige Maßnahmen erforderlich, um eine stärkere Passwortrichtlinie durchzusetzen und die identifizierten schwachen Passwörter zurückzusetzen.

Speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und Enter drücken.

Damit ist der Penetrationstest-Workflow für dieses Szenario abgeschlossen. Sie haben nicht nur Schwachstellen identifiziert und ausgenutzt, sondern diese auch dokumentiert und einen Bericht erstellt, um sicherzustellen, dass sie behoben werden. Dies schließt den Zyklus von der Entdeckung bis zur Behebung ab.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben erfolgreich einen realistischen Penetrationstest-Workflow mit John the Ripper durchlaufen.

In diesem Lab haben Sie gelernt, wie Sie:

  • John the Ripper in einen Pentesting-Prozess integrieren, indem Sie Hashes aus einer shadow-Datei knacken.
  • Ein geknacktes Passwort verwenden, um einen lokalen Privilegieneskalationsversuch zu simulieren.
  • JtR auf verschiedene Datentypen anwenden, indem Sie das Passwort eines geschützten ZIP-Archivs knacken.
  • Die kritische Bedeutung der klaren und strukturierten Dokumentation Ihrer Ergebnisse verstehen.
  • Einen zusammenfassenden Bericht erstellen, um Schwachstellen effektiv an Stakeholder zu kommunizieren.

Diese Fähigkeiten sind grundlegend für jeden Cybersicherheitsexperten, der sich mit ethischem Hacking und Sicherheitsaudits beschäftigt.