Einleitung
Hashcat ist ein leistungsstarkes und vielseitiges Werkzeug zur Passwortwiederherstellung. Wie bei jeder komplexen Software können Benutzer auf Fehler stoßen, die anfangs verwirrend sein können. Das Verständnis dieser häufigen Probleme ist der Schlüssel zur effektiven Nutzung von Hashcat.
In diesem Lab lernen Sie, einige der häufigsten Fehler, die bei Hashcat-Operationen auftreten, zu diagnostizieren und zu beheben. Wir werden Probleme im Zusammenhang mit dem Hash-Format, der Datei-Analyse und der Hardwareverwaltung behandeln. Am Ende dieses Labs werden Sie besser gerüstet sein, um Ihre eigenen Hashcat-Sitzungen zu beheben.
Untersuchung des Fehlers 'Token length exception'
In diesem Schritt untersuchen wir den Fehler Token length exception. Dieser Fehler tritt auf, wenn ein Hash in Ihrer Eingabedatei nicht die korrekte Länge für den angegebenen Hash-Modus (-m) aufweist. Ein Standard-MD5-Hash muss beispielsweise genau 32 hexadezimale Zeichen lang sein. Wenn Hashcat eine Zeile findet, die kürzer oder länger ist, meldet es diesen Fehler und stoppt.
Versuchen wir zunächst, Hashcat auf einer Datei auszuführen, die einen fehlerhaften Hash enthält. Zu diesem Zweck haben wir eine Datei namens hashes_token_length.txt vorbereitet. Wir werden den Hash-Modus 0 verwenden, der MD5 entspricht.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
hashcat -m 0 -a 0 hashes_token_length.txt wordlist.txt
Sie sehen eine Fehlermeldung, die der folgenden ähnelt:
hashcat (v6.2.x) starting
...
* Token length exception: 1/2 hashes
This error happens if the hashes you are trying to crack do not meet the length requirements of the selected hash-mode.
Please make sure you have specified the correct hash-mode and that all of your hashes are valid.
...
* Startup failed: Invalid hash-length
Die Meldung weist eindeutig auf eine "Token length exception" hin. Um dies zu beheben, müssen Sie den ungültigen Hash in Ihrer Datei identifizieren und entweder korrigieren oder entfernen. Eine einfache Möglichkeit, Zeilen mit falschen Längen zu finden, ist die Verwendung von Tools wie awk. Für einen MD5-Hash (32 Zeichen) können wir jede Zeile überprüfen, die nicht die Länge 32 hat.
Führen Sie diesen Befehl aus, um die Datei zu inspizieren:
awk 'length != 32' hashes_token_length.txt
Die Ausgabe zeigt die problematische Zeile:
5d41402abc4b2a76b9719d911017c59
Nachdem Sie den ungültigen Hash gefunden haben, können Sie eine korrigierte Datei erstellen. Erstellen wir eine neue Datei namens hashes_corrected.txt, die nur die gültigen Hashes enthält.
awk 'length == 32' hashes_token_length.txt > hashes_corrected.txt
Sie können Hashcat nun erfolgreich mit der korrigierten Datei ausführen:
hashcat -m 0 -a 0 hashes_corrected.txt wordlist.txt
Dieses Mal startet Hashcat ohne den Fehler.
Behebung des Fehlers 'No hashes loaded'
In diesem Schritt befassen wir uns mit dem Fehler No hashes loaded. Dies ist eines der häufigsten Probleme und bedeutet in der Regel, dass Hashcat keine der Zeilen in Ihrer Hash-Datei als gültigen Hash für den ausgewählten Hash-Modus parsen konnte. Dies kann auf einen falschen Hash-Modus, eine beschädigte Datei oder ein falsches Dateiformat zurückzuführen sein.
Wir haben eine Datei namens hashes_no_load.txt. Versuchen wir, sie mit dem Hash-Modus 10 (md5($pass.$salt)) zu knacken. Dieser Modus erwartet, dass Hash und Salt durch einen Doppelpunkt (:) getrennt sind, aber unsere Datei enthält nur rohe MD5-Hashes.
Führen Sie den folgenden Befehl aus:
hashcat -m 10 -a 0 hashes_no_load.txt wordlist.txt
Hashcat startet, beendet sich aber sofort mit einer Statusmeldung, die besagt, dass keine Hashes geladen wurden:
...
Hashes: 2 digests; 2 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1
Applicable optimizers:
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Iterated
* Not-Salted
* Raw-Hash
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature monitoring is disabled.
No hashes loaded.
Started: ...
Stopped: ...
Die entscheidende Zeile ist No hashes loaded. Dies bedeutet, dass es eine Diskrepanz zwischen dem Inhalt Ihrer Hash-Datei und dem von Ihnen angegebenen Hash-Modus gibt. Die Datei hashes_no_load.txt enthält einen rohen MD5-Hash, der dem Modus 0 entspricht.
Um dies zu beheben, müssen Sie den korrekten Hash-Modus angeben. Führen wir den Befehl erneut mit -m 0 aus.
hashcat -m 0 -a 0 hashes_no_load.txt wordlist.txt
Dieses Mal lädt Hashcat den gültigen Hash aus der Datei korrekt und startet die Knack-Sitzung. Die Zeile "not_a_hash" wird ignoriert, da sie für Modus 0 nicht wie ein gültiger Hash aussieht.
...
Hashes: 1 digests; 1 unique digests, 1 unique salts
...
Session..........: hashcat
Status...........: Running
...
Umgang mit Warnungen 'Device temperature abort'
In diesem Schritt besprechen wir, wie mit temperaturbezogenen Problemen umgegangen wird. Bei der Ausführung auf leistungsstarker Hardware wie GPUs kann Hashcat viel Wärme erzeugen. Um Ihre Hardware vor Schäden zu schützen, überwacht Hashcat die Gerätetemperaturen und pausiert oder bricht eine Sitzung automatisch ab, wenn diese zu hoch werden.
In der LabEx-virtuellen Umgebung haben wir keinen Zugriff auf eine physische GPU, daher können wir diesen Fehler nicht direkt auslösen. Es handelt sich jedoch um eine kritische Funktion, die für die reale Nutzung verstanden werden muss. Die Fehlermeldung würde etwa so aussehen: Device #1 temperature abort trigger reached.
Hashcat bietet Befehlszeilenoptionen zur Verwaltung dieses Verhaltens:
--gpu-temp-abort=X: Bricht die Sitzung ab, wenn eine GPU die Temperatur X in Celsius erreicht.--gpu-temp-retain=Y: Pausiert die Sitzung, wenn eine GPU die Temperatur Y in Celsius erreicht, und setzt sie fort, wenn sie abkühlt.
Sie können diese Flags verwenden, um benutzerdefinierte Temperaturgrenzen festzulegen, die zu Ihrer Hardware und Ihrem Kühlsystem passen. Um Hashcat beispielsweise anzuweisen, zu stoppen, wenn die Temperatur 90 °C überschreitet, würden Sie --gpu-temp-abort=90 zu Ihrem Befehl hinzufügen.
Führen wir einen Befehl mit diesem Flag aus, um zu sehen, wie er verwendet wird. Wir verwenden die Datei valid_hash.txt, die während der Einrichtung erstellt wurde.
hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --gpu-temp-abort=90
Der Befehl wird wie gewohnt ausgeführt, aber Hashcat ist nun mit Ihrer benutzerdefinierten Temperaturgrenze konfiguriert.
In einigen Fällen kann die Hardwareüberwachung fehlerhaft oder nicht unterstützt sein, was zu falschen Temperaturmessungen und unnötigen Abschaltungen führt. Wenn Sie sicher sind, dass Ihre Kühlung ausreichend ist und die Temperaturmessungen falsch sind, können Sie die Hardwareüberwachungsfunktion mit dem Flag --hwmon-disable vollständig deaktivieren.
hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --hwmon-disable
Verwenden Sie diese Option mit Vorsicht, da sie eine wichtige Sicherheitsfunktion deaktiviert.
Behebung des Fehlers 'Line-length exception' in Wortlisten oder Regeln
In diesem Schritt befassen wir uns mit dem Fehler Line-length exception. Dieser Fehler ähnelt der Token-Längen-Ausnahme aus Schritt 1, gilt jedoch für Ihre Eingabedateien wie Wortlisten oder Regeldateien anstelle der Hash-Datei. Hashcat verfügt über einen internen Puffer für Zeilen, die es aus diesen Dateien liest, und wenn eine Zeile dieses Limit (typischerweise 256 Bytes) überschreitet, wird dieser Fehler ausgelöst.
Dies kann bei beschädigten Wortlisten oder schlecht generierten Regeldateien vorkommen. Wir haben eine Datei namens wordlist_long_line.txt, die eine extrem lange Zeile enthält.
Versuchen wir, sie in einer Knack-Sitzung gegen unsere valid_hash.txt zu verwenden:
hashcat -m 0 -a 0 valid_hash.txt wordlist_long_line.txt
Sie erhalten eine Fehlermeldung, die auf die Wortlistendatei verweist:
...
ATTENTION!
The wordlist 'wordlist_long_line.txt' contains a line that is larger than 256 bytes.
The line is ignored.
To fix this, remove the line from the wordlist.
...
Obwohl Hashcat nach dieser Warnung möglicherweise fortfährt, ist es bewährte Praxis, Ihre Eingabedateien zu bereinigen. Sie können überlange Zeilen mit Tools wie awk finden und entfernen. Der folgende Befehl gibt alle Zeilen in der Datei aus, die länger als 256 Zeichen sind:
awk 'length > 256' wordlist_long_line.txt
Dies zeigt die beanstandete lange Zeile an. Um das Problem zu beheben, können Sie eine neue, bereinigte Wortliste erstellen, die alle Zeilen ausschließt, die länger als 256 Zeichen sind.
awk 'length <= 256' wordlist_long_line.txt > wordlist_corrected.txt
Nun können Sie Ihre Datei wordlist_corrected.txt verwenden, ohne auf den Fehler zu stoßen.
hashcat -m 0 -a 0 valid_hash.txt wordlist_corrected.txt
Die Sitzung wird nun ohne Warnungen bezüglich der Zeilenlänge sauber gestartet.
Verstehen und Beheben von 'Separator not found'-Fehlern
In diesem letzten Schritt befassen wir uns mit dem Fehler Separator not found. Dieser Fehler tritt auf, wenn Sie einen Hash-Modus verwenden, der ein bestimmtes Format mit einem Trennzeichen (normalerweise ein Doppelpunkt :) erwartet, die Zeilen in Ihrer Hash-Datei dieses jedoch nicht enthalten. Viele Hash-Formate, wie z. B. user:password oder hash:salt, basieren auf dieser Struktur.
Für dieses Beispiel verwenden wir den Hash-Modus 5500, der für NetNTLMv1 bestimmt ist. Dieses Format sieht typischerweise so aus: USER::DOMAIN:LM_HASH:NT_HASH:CHALLENGE. Die Doppelpunkte sind wesentliche Trennzeichen. Wir haben eine Datei namens hashes_no_separator.txt, die eine Hash-Zeichenkette enthält, aber die erforderlichen Trennzeichen fehlen.
Versuchen wir, Hashcat mit dieser Datei auszuführen:
hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt
Hashcat wird fehlschlagen und den Fehler Separator not found anzeigen. Es wird Ihnen auch ein Beispiel für das korrekte Format zeigen.
...
* Separator unmatched: 1/1 hashes
This error happens if the hashes you are trying to crack are not in the correct format.
Please read https://hashcat.net/wiki/doku.php?id=example_hashes to learn more about the correct format.
...
* Startup failed: Invalid hash-format
Die Fehlermeldung zeigt an, dass dem Hash das erforderliche Trennzeichen fehlt. Um dies zu beheben, müssen Sie die Hash-Datei bearbeiten, um das erwartete Format anzupassen. Nehmen wir an, der Benutzername ist labex, die Domäne ist corp und die Herausforderung ist 1122334455667788. Das korrekte Format wäre labex::corp:<the_hash>:1122334455667788.
Öffnen wir die Datei mit dem Editor nano und korrigieren sie.
nano hashes_no_separator.txt
Ändern Sie den Inhalt der Datei von:
U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935
In das Folgende, wobei Sie sicherstellen, dass Sie <the_hash> durch die ursprüngliche Hash-Zeichenkette ersetzen:
labex::corp:U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935:1122334455667788
Drücken Sie Strg+X, dann Y und Enter, um die Datei zu speichern und nano zu beenden.
Führen Sie nun den Hashcat-Befehl erneut aus:
hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt
Mit dem korrigierten Format akzeptiert Hashcat nun den Hash und startet die Knack-Sitzung ordnungsgemäß. Dies zeigt, wie wichtig es ist, sicherzustellen, dass Ihre Hash-Dateien für den von Ihnen verwendeten spezifischen Hash-Modus korrekt formatiert sind.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie fünf der häufigsten Fehler bei der Verwendung von Hashcat diagnostizieren und beheben.
Wir haben behandelt:
- Token length exception: Verursacht durch Hashes falscher Länge für den angegebenen Modus.
- No hashes loaded: Ergebnis einer Diskrepanz zwischen dem Format der Hash-Datei und dem ausgewählten Hash-Modus.
- Device temperature abort: Eine Sicherheitsfunktion der Hardware, die mit Temperaturregelungs-Flags verwaltet werden kann.
- Line-length exception: Ausgelöst durch überlange Zeilen in Wortlisten oder Regeldateien.
- Separator not found: Tritt auf, wenn ein Hash-Format ein Trennzeichen erfordert, das in der Hash-Datei fehlt.
Durch das Verständnis der Ursachen dieser Fehler und das Wissen, wie man sie behebt, können Sie Hashcat effizienter nutzen und häufige Fallstricke vermeiden. Die wichtigste Erkenntnis ist, Ihre Eingabedateien immer zu überprüfen und sicherzustellen, dass Sie die richtigen Optionen für Ihre spezifische Aufgabe verwenden.


