NTLM-Hashes mit John the Ripper knacken

Kali LinuxBeginner
Jetzt üben

Einleitung

In diesem Lab erhalten Sie praktische Erfahrung im Knacken von NTLM (NT LAN Manager) Hashes mit John the Ripper, einem leistungsstarken Tool zum Knacken von Passwörtern. NTLM-Hashes werden häufig in Windows-Umgebungen zur Speicherung von Benutzerpasswörtern verwendet. Das Verständnis, wie diese Hashes geknackt werden können, ist entscheidend für das Verständnis von Schwachstellen bei der Passwortsicherheit und die Implementierung stärkerer Sicherheitsmaßnahmen.

Sie beginnen mit der Simulation der Extraktion von NTLM-Hashes und lernen dann, wie Sie diese für John the Ripper korrekt formatieren. Anschließend verwenden Sie zwei primäre Knackmethoden: Wörterbuchangriffe mit einer Wortliste und Brute-Force-Angriffe im inkrementellen Modus. Abschließend reflektieren Sie über die Sicherheitsauswirkungen von NTLM-Hashes und die Bedeutung starker Passwortrichtlinien. Dieses Lab bietet einen praxisorientierten Ansatz für ein grundlegendes Konzept in der Cybersicherheit.

NTLM-Hashes von einem System extrahieren

In diesem Schritt simulieren Sie die Extraktion von NTLM-Hashes. In einem realen Szenario können NTLM-Hashes aus verschiedenen Quellen extrahiert werden, wie z. B. der Security Account Manager (SAM) Datenbank auf Windows-Systemen, Active Directory oder Netzwerkverkehr. Für dieses Lab haben wir bereits eine Datei namens hashes.txt in Ihrem ~/project-Verzeichnis bereitgestellt, die Beispiel-NTLM-Hashes enthält.

Zuerst überprüfen wir die Anwesenheit der Datei hashes.txt und untersuchen ihren Inhalt. Diese Datei enthält mehrere Zeilen, die jeweils einen Benutzereintrag mit seinem NTLM-Hash darstellen. Das Format umfasst typischerweise Benutzername, Benutzer-ID, LM-Hash (oft leer oder Standard), NTLM-Hash und weitere Felder. Wir werden uns auf den NTLM-Hash-Teil konzentrieren.

Verwenden Sie den Befehl ls, um die Dateien in Ihrem aktuellen Verzeichnis aufzulisten, und dann den Befehl cat, um den Inhalt von hashes.txt anzuzeigen.

ls -l ~/project/hashes.txt
cat ~/project/hashes.txt

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die die Dateidetails und ihren Inhalt anzeigt:

-rw-r--r-- 1 labex labex 300 Mar 10 10:00 /home/labex/project/hashes.txt
user1:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
user2:501:aad3b435b51404eeaad3b435b51404ee:209c6174efb4b710:209c6174efb4b710:::
user3:502:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad065adec1000000:::
user4:503:aad3b435b51404eeaad3b435b51404ee:e52cac67419a9a224a30370a31323334:::
user5:504:aad3b435b51404eeaad3b435b51404ee:d41d8cd98f00b204e9800998ecf8427e:::

Der NTLM-Hash ist das vierte Feld in jeder Zeile, getrennt durch Doppelpunkte. Zum Beispiel ist für user1 der NTLM-Hash 31d6cfe0d16ae931b73c59d7e0c089c0.

NTLM-Hashes für John the Ripper formatieren

In diesem Schritt bereiten Sie die NTLM-Hashes für John the Ripper vor. Während John the Ripper oft verschiedene Hash-Formate automatisch verarbeiten kann, ist es gute Praxis, die erwartete Eingabe zu verstehen. Für NTLM-Hashes erwartet John the Ripper typischerweise das Format username:NTLM_hash.

Unsere Datei hashes.txt enthält zusätzliche Felder. Wir müssen nur den Benutzernamen und den NTLM-Hash extrahieren. Dazu können wir den Befehl cut verwenden. Der Befehl cut kann Abschnitte aus jeder Zeile von Dateien extrahieren. Wir verwenden : als Trennzeichen und wählen das erste und vierte Feld aus.

Führen Sie den folgenden Befehl aus, um die Hashes zu extrahieren und zu formatieren, und leiten Sie die Ausgabe dann in eine neue Datei namens ntlm_hashes.txt in Ihrem ~/project-Verzeichnis um.

cut -d ':' -f 1,4 ~/project/hashes.txt > ~/project/ntlm_hashes.txt
cat ~/project/ntlm_hashes.txt

Sie sollten die formatierten Hashes sehen, die für John the Ripper bereit sind:

user1:31d6cfe0d16ae931b73c59d7e0c089c0
user2:209c6174efb4b710
user3:8846f7eaee8fb117ad065adec1000000
user4:e52cac67419a9a224a30370a31323334
user5:d41d8cd98f00b204e9800998ecf8427e

Diese Datei ntlm_hashes.txt enthält nun nur den Benutzernamen und den entsprechenden NTLM-Hash, was das ideale Format für John the Ripper ist.

NTLM-Hashes mit einer Wortliste knacken

In diesem Schritt verwenden Sie John the Ripper, um die NTLM-Hashes mithilfe einer Wortliste (auch bekannt als Wörterbuchangriff) zu knacken. Eine Wortliste ist eine Datei, die eine Liste gängiger Passwörter, Wörterbuchwörter oder zuvor geleakter Passwörter enthält. Dies ist oft die effektivste Methode zum Knacken schwacher Passwörter.

Wir haben eine einfache Wortlistendatei namens wordlist.txt in Ihrem ~/project-Verzeichnis bereitgestellt. Lassen Sie uns zunächst ihren Inhalt überprüfen.

cat ~/project/wordlist.txt

Sie sollten den folgenden Inhalt sehen:

password
123456
qwerty
admin
test

Verwenden Sie nun John the Ripper mit der wordlist.txt, um die Hashes in ntlm_hashes.txt zu knacken. Der Befehl john --format=NT --wordlist=wordlist.txt ntlm_hashes.txt gibt das Hash-Format als NTLM (NT), die zu verwendende Wortliste und die Datei mit den Hashes an.

john --format=NT --wordlist=~/project/wordlist.txt ~/project/ntlm_hashes.txt

John the Ripper wird versuchen, die Hashes zu knacken. Möglicherweise sehen Sie eine Ausgabe ähnlich der folgenden, die angibt, welche Hashes geknackt wurden:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (NT [MD4 HASHES])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (user4)
test             (user2)
password         (user1)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% (ETA: 08:00) 3.750g/s 11.25p/s 11.25c/s 11.25C/s 123456...test
Session completed.

Nach dem Knackvorgang können Sie die geknackten Passwörter mit dem Befehl john --show anzeigen.

john --show ~/project/ntlm_hashes.txt

Die Ausgabe listet die geknackten Hashes und ihre entsprechenden Klartextpasswörter auf:

user1:password
user2:test
user4:123456

3 password hashes cracked, 2 left

Dies zeigt, dass das Passwort von user1 password, das von user2 test und das von user4 123456 war. Die anderen beiden Hashes (user3 und user5) wurden mit dieser Wortliste nicht geknackt, was darauf hindeutet, dass ihre Passwörter möglicherweise stärker sind oder nicht in unserer einfachen Wortliste enthalten waren.

NTLM-Hashes im inkrementellen Modus knacken

In diesem Schritt erkunden Sie den inkrementellen Modus von John the Ripper, der einen Brute-Force-Angriff durchführt. Im Gegensatz zu Wortlistenangriffen versucht der inkrementelle Modus systematisch Zeichenkombinationen, beginnend mit kurzen, einfachen Kombinationen und schrittweise zunehmender Komplexität. Diese Methode ist effektiv zum Knacken von Passwörtern, die nicht in einer Wortliste enthalten sind, kann aber bei langen oder komplexen Passwörtern sehr zeitaufwendig sein.

Der inkrementelle Modus von John the Ripper verwendet Zeichensätze und Regeln, um Passwörter zu generieren. Für NTLM-Hashes können wir das Format NT angeben und die Option --incremental verwenden. John the Ripper verfügt über integrierte inkrementelle Modi (z. B. alnum, digits, all). Wir verwenden den Standard-Inkrementalmodus, der verschiedene Zeichensätze ausprobiert.

Bevor Sie den inkrementellen Modus ausführen, ist es ratsam, die Sitzung von John the Ripper zurückzusetzen, um Konflikte mit zuvor geknackten Hashes zu vermeiden.

john --session=reset

Führen Sie nun John the Ripper im inkrementellen Modus gegen die Datei ntlm_hashes.txt aus. Dieser Vorgang kann einige Momente dauern, abhängig von der Komplexität der verbleibenden, nicht geknackten Hashes.

john --format=NT --incremental ~/project/ntlm_hashes.txt

Möglicherweise sehen Sie eine Ausgabe ähnlich der folgenden, während John the Ripper versucht, die verbleibenden Hashes zu knacken:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (NT [MD4 HASHES])
Remaining 2 password hashes to crack
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
(user5)
(user3)
2g 0:00:00:00 DONE (2023-10-27 08:05) 100.0% (ETA: 08:05) 2.500g/s 7.500p/s 7.500c/s 7.500C/s
Session completed.

Nach Abschluss des Vorgangs überprüfen Sie die geknackten Passwörter erneut mit john --show.

john --show ~/project/ntlm_hashes.txt

Sie sollten nun sehen, dass alle Hashes geknackt wurden, einschließlich user3 und user5. Das Passwort für user3 ist admin und für user5 ist eine leere Zeichenkette (die als "" oder nichts nach dem Doppelpunkt dargestellt wird).

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

5 password hashes cracked, 0 left

Dies zeigt die Effektivität des inkrementellen Modus zum Knacken von Passwörtern, die möglicherweise nicht in einer Wortliste enthalten sind, insbesondere von kurzen oder einfachen.

Sicherheit von NTLM-Hashes verstehen

In diesem Schritt werden Sie die Sicherheitsimplikationen von NTLM-Hashes und die Bedeutung starker Passwortpraktiken reflektieren. Sie haben gesehen, wie relativ einfache Passwörter mit Wortlisten schnell geknackt werden können und wie selbst kurze, nicht im Wörterbuch enthaltene Passwörter mit Brute-Force-Methoden wie dem inkrementellen Modus gefunden werden können.

NTLM-Hashes sind aus mehreren Gründen anfällig:

  • Fehlendes Salting: Im Gegensatz zu modernen Hashing-Algorithmen (z. B. bcrypt, scrypt) verwenden NTLM-Hashes kein "Salt". Ein Salt ist zufällige Daten, die einem Passwort vor dem Hashing hinzugefügt werden, wodurch jeder Hash auch bei identischen Passwörtern eindeutig wird. Ohne Salting können Angreifer vorab berechnete Tabellen (Rainbow Tables) verwenden, um Hashes schnell zu knacken.
  • Schwacher Hashing-Algorithmus: NTLM verwendet MD4, einen relativ alten und kryptografisch schwachen Hashing-Algorithmus.
  • Groß-/Kleinschreibung (für LM-Hash, obwohl NTLM Groß-/Kleinschreibung beachtet): Während NTLM selbst Groß-/Kleinschreibung beachtet, war sein Vorgänger, der LM-Hash, dies nicht, was zu Verwirrung und manchmal schwächeren Passwortpraktiken führte.

Um die Risiken im Zusammenhang mit dem Knacken von NTLM-Hashes zu mindern, sollten Organisationen und Benutzer:

  • Starke Passwortrichtlinien erzwingen: Lange, komplexe Passwörter verlangen, die Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen kombinieren. Dies erschwert sowohl Wortlisten- als auch Brute-Force-Angriffe erheblich.
  • Multi-Faktor-Authentifizierung (MFA) implementieren: MFA fügt eine zusätzliche Sicherheitsebene über das Passwort hinaus hinzu und macht es für Angreifer deutlich schwieriger, unbefugten Zugriff zu erlangen, selbst wenn sie ein Passwort knacken.
  • Moderne Hashing-Algorithmen verwenden: Bevorzugen Sie für neue Systeme oder bei Migrationen moderne, gesalzene, adaptive Hashing-Algorithmen wie bcrypt, scrypt oder Argon2.
  • Regelmäßig prüfen und überwachen: Überwachen Sie kontinuierlich verdächtige Anmeldeversuche und prüfen Sie die Passwortstärke.

Durch das Verständnis der Schwachstellen von NTLM-Hashes und die Implementierung robuster Sicherheitsmaßnahmen können Sie die Sicherheit von Systemen und Benutzerkonten erheblich verbessern.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie Sie John the Ripper zum Knacken von NTLM-Hashes verwenden. Sie haben damit begonnen, die Struktur von NTLM-Hashes zu verstehen und sie dann für die optimale Verwendung mit John the Ripper formatiert. Anschließend haben Sie zwei gängige Passwortknacktechniken angewendet: Wortlistenangriffe und inkrementelle (Brute-Force-)Angriffe, um deren Effektivität gegen schwache und einfache Passwörter zu demonstrieren.

Sie haben auch Einblicke in die Sicherheitslücken von NTLM-Hashes gewonnen, wie z. B. das Fehlen von Salting und die Verwendung eines schwächeren Hashing-Algorithmus. Dieses Verständnis ist entscheidend, um die Bedeutung starker Passwortrichtlinien, Multi-Faktor-Authentifizierung und die Einführung moderner, robuster Hashing-Algorithmen zum Schutz sensibler Informationen zu würdigen. Diese praktische Erfahrung vermittelt ein grundlegendes Verständnis der Passwortsicherheit und gängiger Knackmethoden.