Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
assless-chaps — MSCHAPv2-Challenge/Response schnell mit einer Datenbank von NT-Hashes knacken. | Kitploit
Tools/GitHubGitHub/sensepost/assless-chaps
Passwort-CrackingWi-Fi-PrüfungHash-AnalyseKryptographiePenetrationstests
GitHubsensepost/assless-chaps

assless-chaps

MSCHAPv2-Challenge/Response schnell mit einer Datenbank von NT-Hashes knacken.

Repository anzeigen
1411931vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

assless-chaps

Knacken von MSCHAPv2/NTLMv1 Challenge/Response schnell mit einer Datenbank von NT-Hashes

Einleitung

Assless CHAPs ist eine effiziente Methode, um den NT-Hash wiederherzustellen, der in einem MSCHAPv2/NTLMv1-Austausch verwendet wird, wenn du die Challenge und Response hast (z. B. von einem WiFi EAP WPE-Angriff).

Es erfordert eine Datenbank von NT-Hashes; Anleitungen zur Erstellung dieser aus vorhandenen Listen oder mit hashcat mit Wortlisten und Regeln findest du weiter unten. Ich habe eine Beispieldatenbank von SecLists beigefügt. Du musst sie entpacken (bunzip).

Technik

Ein MSCHAPv2-Austausch erfordert nicht, dass das Klartext-Passwort „geknackt“ wird, sondern wir benötigen lediglich den verwendeten NThash.

MSCHAPv2 teilt den NThash in drei Teile auf und verwendet jeden Teil als unterschiedlichen Schlüssel zur DES-Verschlüsselung derselben Challenge (abgeleitet von der Peer- und Authentifikator-Challenge). Der NTHash wird in zwei 7-Byte-Schlüssel und einen 2-Byte-Schlüssel aufgeteilt. Das bedeutet, dass der letzte Schlüssel mit NULLs aufgefüllt wird, um einen Schlüssel der erforderlichen Länge zu erhalten. Dieser kann aufgrund der Effizienz der DES-Operation und eines Schlüsselraums von 65.535 schnell brute-forced werden. Sobald wir diese zwei Bytes haben, können wir alle NThashes in unserer Datenbank nachschlagen, die auf diese zwei Bytes enden. Dies ergibt eine viel kleinere Menge möglicher Hashes zur Überprüfung.

Dies ist eine Form des Speicher-Zeit-Kompromisses, ähnlich einer Regenbogentabelle. Es ist auch eine Form des Hash Shuckings.

Präsentation

Dies wurde zum ersten Mal auf dem RF Hacking Village der Defcon 29 vorgestellt. Die Folien sind in diesem Repository enthalten.

Geschwindigkeit

Hier ist der Vergleich für drei Beispiel-Challenge/Response und drei verschiedene Wortlisten, eine kleine private, rockyou und die Have I Been Pwned-Liste. Diese wurden auf meinem Macbook Pro 2016 durchgeführt. Hashcat verwendet diesen Hash-Shucking-Kernel und die beiden integrierten GPUs sowie einen reinen statt optimierten Kernel (da letzterer noch nicht existiert). Hash3 ist nicht in den Listen enthalten, um die Leistung im ungünstigsten Fall zu simulieren. Ich habe die Zeit, die Hashcat benötigt, um den Wörterbuch-Cache beim ersten Durchlauf aufzubauen, nicht mit einbezogen.

Hash1

Kleine Hashliste:

hashcat 0.50s user 0.27s system 55% cpu 1.405 total (8597.8 kH/s)
assless 0.05s user 0.00s system 294% cpu 0.018 total

Rockyou-Hashliste:

hashcat 2.67s user 0.51s system 93% cpu 3.413 total
assless 0.05s user 0.01s system 281% cpu 0.021 total

HIBP-Hashliste:

hashcat 59.97s user 11.72s system 136% cpu 52.603 total (5620.6 kH/s)
assless 0.05s user 0.00s system 292% cpu 0.018 total

Hash 2

Kleine Hashliste:

hashcat 0.51s user 0.27s system 55% cpu 1.409 total (8704.7 kH/s)
assless 0.03s user 0.00s system 248% cpu 0.012 total

Rockyou-Hashliste:

hashcat 2.20s user 0.46s system 110% cpu 2.409 total (5798.4 kH/s)
assless 0.03s user 0.00s system 231% cpu 0.015 total

HIBP-Hashliste:

hashcat 65.37s user 12.74s system 135% cpu 57.712 total (5768.7 kH/s)
assless 0.03s user 0.00s system 249% cpu 0.013 total

Hash 3

Hash 3 existiert in keiner der Hashlisten, um die Leistung im ungünstigsten Fall zu simulieren.

Kleine Hashliste:

hashcat 0.67s user 0.34s system 66% cpu 1.526 total (7550.1 kH/s)
assless 0.02s user 0.00s system 211% cpu 0.012 total

Rockyou-Hashliste:

hashcat 2.71s user 0.52s system 94% cpu 3.415 total (5685.4 kH/s)
assless 0.02s user 0.01s system 181% cpu 0.014 total

HIBP-Hashliste:

hashcat 125.19s user 27.62s system 139% cpu 1:49.75 total (5634.9 kH/s)
assless 0.06s user 0.03s system 115% cpu 0.075 total

Installation

Die Rust-Version erfordert SQLite 3.6.8 oder neuer.

Die Python-Version erfordert python3, sqlite3 und pycryptodome.

Das Dienstprogramm zur Datenbankerstellung erfordert python3 und das sqlite3 CLI.

Kompilieren

Dies gilt nur für die Rust-Version. Du benötigst cargo.

Nach der Installation von cargo wechsle einfach in das assless-chaps-rs-Verzeichnis und baue es mit: cargo build --release

Das resultierende Binary befindet sich im Verzeichnis target/release/.

Verwendung

Assless benötigt die Challenge, Response und eine Datenbank von NThashes. Optional kann die Python-Version die gebündelte optimierte Zwei-Byte-Nachschlagdatei verwenden. Die einfachste Verwendung sieht so aus:

./assless-chaps <Challenge> <Response> <hashes.db>

Zum Beispiel:

./assless-chaps 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db

Die Ausgabe sollte wie folgt aussehen:

[-] Two byte lookup file not provided, will brute force instead.
[+] Found in 22636 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

Der endgültige vollständige Hash 8846f7eaee8fb117ad06bdd830b7586c ist der NT-Hash für password.

Zwei-Byte-Nachschlage - nur Python

Ich habe einige Zeit damit verbracht, eine Liste aller 65.535 möglichen Zwei-Byte-Werte zu erstellen, sortiert nach der häufigsten Verwendung in einem großen Korpus von Passwörtern. Diese Datei ist als twobytes enthalten. Du kannst sie einfach als viertes Argument an assless übergeben.

Dies spart normalerweise ein paar Runden DES, macht aber keinen großen Geschwindigkeitsunterschied. Vielleicht, wenn du viele Hashes verarbeitest.

python3 assless-chaps.py 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db twobytes

[+] Found in 65533 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

Erstellen eines eigenen Hash-Wörterbuchs

Die Datei mksqlitedb.py hilft dabei, eine CSV-Hashdatei in die Datenbank umzuwandeln.

python3 mksqlitedb.py <database name> <csv file>

Die CSV-Datei erfordert drei Spalten:

  • Die letzten zwei Bytes des Hashes (die letzten vier ASCII-Zeichen)
  • Die ersten 7 Bytes (die ersten 14 ASCII-Zeichen)
  • Die zweiten 7 Bytes (die 15.-29. ASCII-Zeichen)

Zum Beispiel wird der Hash 8846f7eaee8fb117ad06bdd830b7586c zu:

586c,8846f7eaee8fb1,17ad06bdd830b7

Ein Beispiel für eine Regexp-Transformation dafür wäre: echo 8846f7eaee8fb117ad06bdd830b7586c | sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\)$/\3,\1,\2/"

Du kannst entweder eine vorhandene Liste von Hashes nehmen (wie die Have I Been Pwned-Listen) oder deine eigenen mit hashcat und deinen bevorzugten Wortlisten/Regel-Kombinationen erstellen.

Verwendung von Have I Been Pwned

Die HIBP-Passwortlisten sind bereits als NT-Hashes herunterladbar; man muss lediglich die Anzahl aus der Datei entfernen und sie in das CSV-Format konvertieren, um sie in die Datenbank zu importieren.

Dies kann mit dem standardmäßigen Unix-Dienstprogramm sed wie folgt erledigt werden:

sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\):.*/\3,\1,\2/" pwned-passwords-ntlm-ordered-by-hash.txt > hibp.csv

Danach kann es mit mksqlitedb.py hibp.db hibp.csv importiert werden.

Konvertieren einer Wortliste in eine Hashliste

Um eine reine Wortliste in eine Hashliste von nthashes zu konvertieren, kannst du nthasher verwenden, das große Wortlisten schnell verarbeiten kann. Die resultierenden Hashes müssen wie oben beschrieben in das erforderliche CSV-Format umgewandelt werden.

Tool herunterladen