hashcat
📋 Fiche Outil : hashcat
ressources : https://hashcat.net/wiki/doku.php?id=example_hashes
Casser des hashs de mots de passe exfiltrés lors d’une intrusion. Hashcat effectue des milliards de comparaisons par seconde pour retrouver le mot de passe en clair correspondant à l’empreinte chiffrée.
hashcat -m <CODE_HASH> -a <MODE_ATTAQUE> <FICHIER_HASHS> [WORDLIST] [options]
Syntaxe
- Exemple de type de hash
hashcat -m 9600 -a 0 [fichierHASH] /usr/share/wordlists/rockyou.txt --force
Référence des Codes (-m)
Le choix du code est critique. Voici les plus fréquents en pentest :
| Type de Hash | Code -m | Contexte / Origine |
|---|---|---|
| NTLM | 1000 |
Windows (Dump SAM, NTDS.dit) – Le standard. |
| NetNTLMv2 | 5600 |
Windows (Capturé sur le réseau via Responder). |
| Kerberoasting | 13100 |
Active Directory (Ticket TGS via GetUserSPNs). |
| AS-REP Roasting | 18200 |
Active Directory (Sans pré-auth via GetNPUsers). |
| MD5 | 0 |
Anciens CMS, bases de données web obsolètes. |
| SHA-256 | 1400 |
Bases de données Linux/Web standards. |
| sha512crypt | 1800 |
Linux (Fichier /etc/shadow, $6$). |
| bcrypt | 3200 |
Web moderne ($2a$, $2y$). Très lent à casser. |
| WPA/WPA2 | 22000 |
Handshakes WiFi (Aircrack-ng/Bettercap). |
| Office 2013+ | 9600 |
Documents Excel/Word chiffrés. |
- Via l’aide :
hashcat -hh | grep -i "NomDuService"
- Via le Wiki : Chercher le début du hash (ex:
$krb5tgs$) sur hashcat.net/wiki & Hashes.com
- Outil tiers : Utiliser
hash-identifierounth(Name-That-Hash).
Paramètre (Flag)
| Option (Flag) | Description | Note / Exemple |
|---|---|---|
-m |
Hash Type. Le code numérique du type de hash. | Obligatoire. Voir tableau ci-dessus. |
-a |
Attack Mode. Le type d’attaque. | 0 = Dictionnaire (Wordlist).
|
-o |
Output. Fichier de sortie. | Écrit les mots de passe trouvés dans un fichier. |
--show |
Affiche les résultats _déjà_ trouvés. | Ne relance pas le calcul. |
-r |
Rules. Applique des règles de mutation. | Ex: best64.rule (transforme « pass » en « Pass123! »). |
-O |
Optimized. Active le kernel optimisé. | Plus rapide, mais limite la longueur des mots de passe. |
--status |
Affiche une barre de progression. | Mise à jour automatique durant le crack. |
--force |
Ignore les avertissements (ex: utilisation sur une VM). | Utile si Hashcat refuse de se lancer. |
Exemple
1. Attaque Dictionnaire (NTLM)
Cas classique après un dump de base SAM.
hashcat -m 1000 -a 0 hashs.txt /usr/share/wordlists/rockyou.txt
2. Attaque Kerberoasting (Active Directory)
Casse un ticket TGS récupéré.
hashcat -m 13100 -a 0 kerberoast.txt /usr/share/wordlists/rockyou.txt
3. Attaque avec Règles (Mutation)
Essaye la wordlist + des variations (majuscules, chiffres, caractères spéciaux).
hashcat -m 1000 hashs.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
4. Afficher les résultats
Voir ce qui a été cassé précédemment.
hashcat -m 1000 hashs.txt --show
Suivi & Recommandation
Le processus de cracking doit suivre une logique d’efficience (du plus rapide au plus lent).
Étape 1 : Préparation & Extraction
Récupérer le hash et le nettoyer. Hashcat n’accepte que le hash pur, sans nom d’utilisateur ni métadonnées (sauf exceptions comme NetNTLMv2).
- _Cas Document Office :_ Extraire le hash avec
office2john.pyavant de le donner à Hashcat.
python3 /usr/share/john/office2john.py fichier.xlsx > hash.txt
# Nettoyer hash.txt pour ne garder que la chaîne commençant par $office$...
Étape 2 : Identification
Déterminer le code -m exact. Une erreur ici rend le cracking impossible.
Étape 3 : Stratégie d’Attaque (Ordre d’exécution)
- Attaque Rapide (Wordlist simple)
– Utiliser rockyou.txt. Cela casse les mots de passe triviaux ou par défaut.
– _Temps estimé :_ Quelques secondes/minutes.
- Attaque Moyenne (Wordlist + Règles)
– Ajouter -r .../rules/best64.rule. Cela trouve les variations comme « Soleil2023! ».
– _Temps estimé :_ 10 à 30 minutes.
- Attaque Lourde (Masque / Bruteforce)
– Mode -a 3. À utiliser en dernier recours pour les mots de passe courts (7-8 caractères).
– _Temps estimé :_ Heures ou Jours.
Étape 4 : Post-Cracking
Une fois le mot de passe affiché (ex: Password123!), l’utiliser immédiatement pour tenter une connexion via nxc smb ou evil-winrm.
Hashcat (OLD)
Type de HASH
Faire une recherche pour connaître le type de HASH (ex : kerberos”)
sur Hashcat récupérer le code de hash en question
hashcat --h | grep -i “Kerberos”

A ce moment là, il faudra récuperer le bon code concernant notre hash
HASH PASS
lancer la commande pour hasher le mot de passe
hashcat -m CODE SELECTFICHIER /usr/share/wordlists/rockyou.txt --force
exemple :
hashcat -m 13100 kerberoast_hash.txt /usr/share/wordlists/rockyou.txt --force
Après le hash nous auront à ce moment deux possibilité :
- hacked : mot de passe trouvé
- Exhausted : mot de passe non trouvé