Introduction
Hashcat est un outil de récupération de mots de passe puissant et polyvalent, mais comme tout logiciel complexe, les utilisateurs peuvent rencontrer des erreurs qui peuvent être déroutantes au premier abord. Comprendre ces problèmes courants est essentiel pour utiliser Hashcat efficacement.
Dans ce laboratoire, vous apprendrez à diagnostiquer et à résoudre certains des erreurs les plus fréquentes qui surviennent lors des opérations Hashcat. Nous aborderons les problèmes liés au format du hash, à l'analyse des fichiers et à la gestion du matériel. À la fin de ce laboratoire, vous serez mieux équipé pour dépanner vos propres sessions Hashcat.
Investigation de l'erreur 'Token length exception'
Dans cette étape, nous allons explorer l'erreur Token length exception. Cette erreur se produit lorsqu'un hash dans votre fichier d'entrée n'a pas la longueur correcte pour le mode de hash spécifié (-m). Par exemple, un hash MD5 standard doit avoir exactement 32 caractères hexadécimaux. Si Hashcat trouve une ligne plus courte ou plus longue, il signalera cette erreur et s'arrêtera.
Tout d'abord, tentons d'exécuter Hashcat sur un fichier contenant un hash malformé. Nous avons préparé un fichier nommé hashes_token_length.txt à cet effet. Nous utiliserons le mode de hash 0, qui correspond à MD5.
Exécutez la commande suivante dans votre terminal :
hashcat -m 0 -a 0 hashes_token_length.txt wordlist.txt
Vous verrez un message d'erreur similaire à celui-ci :
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
Le message indique clairement une "Token length exception". Pour résoudre ce problème, vous devez identifier et corriger ou supprimer le hash invalide de votre fichier. Une façon simple de trouver les lignes avec des longueurs incorrectes est d'utiliser des outils comme awk. Pour un hash MD5 (32 caractères), nous pouvons vérifier toute ligne qui n'a pas une longueur de 32.
Exécutez cette commande pour inspecter le fichier :
awk 'length != 32' hashes_token_length.txt
La sortie affichera la ligne problématique :
5d41402abc4b2a76b9719d911017c59
Maintenant que vous avez trouvé le hash invalide, vous pouvez créer un fichier corrigé. Créons un nouveau fichier nommé hashes_corrected.txt contenant uniquement les hashes valides.
awk 'length == 32' hashes_token_length.txt > hashes_corrected.txt
Vous pouvez maintenant exécuter Hashcat avec succès en utilisant le fichier corrigé :
hashcat -m 0 -a 0 hashes_corrected.txt wordlist.txt
Cette fois, Hashcat démarrera sans l'erreur.
Résolution de l'erreur 'No hashes loaded'
Dans cette étape, nous allons aborder l'erreur No hashes loaded. C'est l'un des problèmes les plus courants et il signifie généralement que Hashcat n'a pas pu analyser aucune des lignes de votre fichier de hash comme des hashs valides pour le mode de hash sélectionné. Cela peut être dû à un mode de hash incorrect, à un fichier corrompu ou à un format de fichier incorrect.
Nous avons un fichier nommé hashes_no_load.txt. Essayons de le cracker en utilisant le mode de hash 10 (md5($pass.$salt)). Ce mode attend que le hash et le sel soient séparés par un deux-points (:), mais notre fichier ne contient que des hashs MD5 bruts.
Exécutez la commande suivante :
hashcat -m 10 -a 0 hashes_no_load.txt wordlist.txt
Hashcat démarrera mais se terminera immédiatement avec un message d'état indiquant qu'aucun hash n'a été chargé :
...
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: ...
La ligne clé est No hashes loaded. Cela vous indique qu'il y a une incompatibilité entre le contenu de votre fichier de hash et le mode de hash que vous avez spécifié. Le fichier hashes_no_load.txt contient un hash MD5 brut, qui correspond au mode 0.
Pour résoudre ce problème, vous devez fournir le bon mode de hash. Réexécutons la commande avec -m 0.
hashcat -m 0 -a 0 hashes_no_load.txt wordlist.txt
Cette fois, Hashcat chargera correctement le hash valide du fichier et démarrera la session de cracking. Il ignorera la ligne "not_a_hash" car elle ne ressemble pas à un hash valide pour le mode 0.
...
Hashes: 1 digests; 1 unique digests, 1 unique salts
...
Session..........: hashcat
Status...........: Running
...
Gestion des avertissements 'Device temperature abort'
Dans cette étape, nous allons discuter de la manière de gérer les problèmes liés à la température. Lors de l'exécution sur du matériel puissant comme les GPU, Hashcat peut générer beaucoup de chaleur. Pour protéger votre matériel contre les dommages, Hashcat surveille les températures des périphériques et mettra automatiquement en pause ou annulera une session si elles deviennent trop élevées.
Dans l'environnement virtuel LabEx, nous n'avons pas accès à un GPU physique, nous ne pouvons donc pas déclencher cette erreur directement. Cependant, il s'agit d'une fonctionnalité essentielle à comprendre pour une utilisation dans le monde réel. Le message d'erreur ressemblerait à quelque chose comme Device #1 temperature abort trigger reached.
Hashcat fournit des options en ligne de commande pour gérer ce comportement :
--gpu-temp-abort=X: Annule la session lorsque n'importe quel GPU atteint la température X en Celsius.--gpu-temp-retain=Y: Met en pause la session lorsque n'importe quel GPU atteint la température Y en Celsius, et reprend lorsqu'il refroidit.
Vous pouvez utiliser ces indicateurs pour définir des limites de température personnalisées qui conviennent à votre matériel et à votre système de refroidissement. Par exemple, pour indiquer à Hashcat de s'arrêter si la température dépasse 90°C, vous ajouteriez --gpu-temp-abort=90 à votre commande.
Exécutons une commande avec cet indicateur pour voir comment il est utilisé. Nous utiliserons le fichier valid_hash.txt créé lors de la configuration.
hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --gpu-temp-abort=90
La commande s'exécutera comme d'habitude, mais Hashcat est maintenant configuré avec votre limite de température personnalisée.
Dans certains cas, la surveillance matérielle peut être défectueuse ou non prise en charge, entraînant des lectures de température incorrectes et des arrêts inutiles. Si vous êtes certain que votre refroidissement est adéquat et que les lectures de température sont erronées, vous pouvez désactiver complètement la fonctionnalité de surveillance matérielle avec l'indicateur --hwmon-disable.
hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --hwmon-disable
Utilisez cette option avec prudence, car elle désactive une fonctionnalité de sécurité importante.
Correction de l'exception 'Line-length exception' dans les listes de mots ou les règles
Dans cette étape, nous allons traiter l'erreur Line-length exception. Cette erreur est similaire à l'exception de longueur de jeton de l'étape 1, mais elle s'applique à vos fichiers d'entrée, tels que les listes de mots ou les fichiers de règles, au lieu du fichier de hash. Hashcat dispose d'un tampon interne pour les lignes qu'il lit à partir de ces fichiers, et si une ligne dépasse cette limite (généralement 256 octets), cette erreur est déclenchée.
Cela peut se produire avec des listes de mots corrompues ou des fichiers de règles mal générés. Nous avons un fichier nommé wordlist_long_line.txt qui contient une ligne extrêmement longue.
Essayons de l'utiliser dans une session de cracking contre notre valid_hash.txt :
hashcat -m 0 -a 0 valid_hash.txt wordlist_long_line.txt
Vous recevrez un message d'erreur indiquant le fichier de liste de mots :
...
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.
...
Bien que Hashcat puisse continuer après cet avertissement, il est préférable de nettoyer vos fichiers d'entrée. Vous pouvez trouver et supprimer les lignes surdimensionnées à l'aide d'outils comme awk. La commande suivante affichera toutes les lignes du fichier qui sont plus longues que 256 caractères :
awk 'length > 256' wordlist_long_line.txt
Cela affichera la ligne incriminée et longue. Pour résoudre le problème, vous pouvez créer une nouvelle liste de mots propre qui exclut toutes les lignes de plus de 256 caractères.
awk 'length <= 256' wordlist_long_line.txt > wordlist_corrected.txt
Maintenant, vous pouvez utiliser votre fichier wordlist_corrected.txt sans rencontrer l'erreur.
hashcat -m 0 -a 0 valid_hash.txt wordlist_corrected.txt
La session démarrera maintenant proprement sans aucun avertissement concernant la longueur de ligne.
Comprendre et résoudre les erreurs 'Separator not found'
Dans cette dernière étape, nous allons aborder l'erreur Separator not found. Cette erreur se produit lorsque vous utilisez un mode de hash qui attend un format spécifique avec un caractère séparateur (généralement un deux-points :) mais que les lignes de votre fichier de hash ne le contiennent pas. De nombreux formats de hash, tels que user:password ou hash:salt, reposent sur cette structure.
Pour cet exemple, nous utiliserons le mode de hash 5500, qui est pour NetNTLMv1. Ce format ressemble typiquement à USER::DOMAIN:LM_HASH:NT_HASH:CHALLENGE. Les deux-points sont des séparateurs essentiels. Nous avons un fichier nommé hashes_no_separator.txt qui contient une chaîne de hash mais auquel il manque les séparateurs requis.
Essayons d'exécuter Hashcat avec ce fichier :
hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt
Hashcat échouera et affichera l'erreur Separator not found. Il vous montrera également un exemple du format correct.
...
* 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
Le message d'erreur indique que le hash est dépourvu du séparateur requis. Pour corriger cela, vous devez modifier le fichier de hash pour qu'il corresponde au format attendu. Supposons que le nom d'utilisateur soit labex, le domaine corp, et le défi 1122334455667788. Le format correct serait labex::corp:<the_hash>:1122334455667788.
Ouvrons le fichier avec l'éditeur nano et corrigeons-le.
nano hashes_no_separator.txt
Modifiez le contenu du fichier de :
U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935
Au suivant, en vous assurant de remplacer <the_hash> par la chaîne de hash d'origine :
labex::corp:U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935:1122334455667788
Appuyez sur Ctrl+X, puis Y, et Entrée pour enregistrer le fichier et quitter nano.
Exécutez maintenant à nouveau la commande Hashcat :
hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt
Avec le format corrigé, Hashcat acceptera maintenant le hash et démarrera correctement la session de cracking. Cela démontre l'importance de s'assurer que vos fichiers de hash sont correctement formatés pour le mode de hash spécifique que vous utilisez.
Résumé
Dans ce laboratoire, vous avez appris à diagnostiquer et à résoudre cinq des erreurs les plus courantes rencontrées lors de l'utilisation de Hashcat.
Nous avons abordé :
- Token length exception : Causée par des hashs de longueur incorrecte pour le mode spécifié.
- No hashes loaded : Résultat d'une incompatibilité entre le format du fichier de hash et le mode de hash sélectionné.
- Device temperature abort : Une fonction de sécurité matérielle qui peut être gérée avec des indicateurs de contrôle de température.
- Line-length exception : Déclenchée par des lignes surdimensionnées dans les listes de mots ou les fichiers de règles.
- Separator not found : Se produit lorsqu'un format de hash nécessite un séparateur qui est manquant dans le fichier de hash.
En comprenant les causes de ces erreurs et en sachant comment les corriger, vous pouvez utiliser Hashcat plus efficacement et éviter les pièges courants. Le point essentiel est de toujours valider vos fichiers d'entrée et de vous assurer que vous utilisez les bonnes options pour votre tâche spécifique.


