Tutoriel de cassage de hash : Craquer des mots de passe avec Hashcat et John (2026)

Tutorial
12 min de lecture

Vous venez d'extraire le fichier /etc/shadow d'une cible Linux ou de récupérer des hashes NTLM d'un contrôleur de domaine lors d'un test d'intrusion. Les hashes sont dans un fichier texte, et le temps de votre mission est compté. Le cassage de hash, c'est comme ça que vous transformez ces chaînes en identifiants en clair qui prouvent un impact réel à votre client. C'est aussi l'une des parties les plus satisfaisantes de tout pentest. Pratiquez chaque technique en conditions réelles dans le cours Password Cracking de HackerDNA au fil de votre lecture. Pour une vue d'ensemble, consultez notre guide complet du test d'intrusion.

Ce tutoriel couvre l'identification des hashes, le cassage avec Hashcat 6.2.6 et John the Ripper 1.9.0-jumbo-1, les modes d'attaque (dictionnaire, règles, masque), le choix des wordlists et les benchmarks GPU sur du matériel actuel. Chaque commande est prête à copier-coller. Pas de remplissage, pas de théorie sans pratique.

TL;DR : Le cassage de hash récupère des mots de passe en clair à partir de leurs représentations hachées en utilisant des attaques par dictionnaire, force brute ou règles. Hashcat est l'option la plus rapide pour les machines équipées de GPU, tandis que John the Ripper fonctionne bien sur CPU et excelle en détection de format. Commencez avec rockyou.txt et des règles basiques avant de tenter des attaques plus ciblées.

Qu'est-ce que le cassage de hash ?

Le cassage de hash est le processus de récupération de mots de passe en clair à partir de leurs valeurs de hachage cryptographiques, en utilisant des techniques comme les attaques par dictionnaire, la force brute et les mutations par règles. Lors de tests d'intrusion, les identifiants cassés révèlent la réutilisation de mots de passe, permettent le mouvement latéral et exposent les politiques de mots de passe faibles.

Le hachage est une fonction à sens unique. Vous ne pouvez pas inverser un hash SHA-256 mathématiquement. Mais vous pouvez hacher des millions de mots de passe candidats et comparer le résultat à votre hash cible. Quand il y a correspondance, vous avez le texte en clair. Le cassage de hash se résume à ça : un jeu de comparaison massif où la vitesse fait la différence.

Les types de hash les plus courants que vous rencontrerez :

  • MD5 - 32 caractères hexadécimaux. Encore courant dans les bases de données compromises et les anciennes applications PHP, bien que cryptographiquement cassé depuis 2004.
  • SHA-1 - 40 caractères hex. Obsolète pour les certificats mais encore présent dans les systèmes legacy et certains dumps de bases de données.
  • SHA-256 - 64 caractères hex. Plus solide, mais un SHA-256 sans sel reste crackable à grande vitesse.
  • bcrypt - Commence par le préfixe $2b$. La référence pour le stockage de mots de passe. Le facteur de coût le rend volontairement lent à casser.
  • NTLM - 32 caractères hex, utilisé dans les environnements Windows Active Directory. Rapide à casser car il n'y a pas de salage.

En pratique, le type de hash détermine toute votre approche. Un MD5 sans sel se casse en quelques secondes sur un GPU moderne. Un hash bcrypt avec un facteur de coût de 12 peut prendre des semaines pour un seul mot de passe. Savoir à quoi vous avez affaire avant de commencer vous fait gagner des heures de calcul inutile.

💻
Pratiquez maintenant : Crack SHA1 Hash - identifiez et cassez des hashes SHA-1 dans un lab accessible depuis votre navigateur. Aucune installation requise.

Comment identifier les types de hash

Avant de lancer un outil de cassage, vous devez savoir quel algorithme a produit le hash. Exécuter Hashcat avec le mauvais numéro de mode fait perdre du temps et ne donne aucun résultat.

La méthode la plus rapide est l'identification par longueur. Comptez les caractères :

  • 32 caractères hex : probablement MD5 ou NTLM
  • 40 caractères hex : probablement SHA-1
  • 64 caractères hex : probablement SHA-256

Pour l'identification automatisée, Kali Linux inclut deux outils. hashid est le plus fiable :

$ hashid 5f4dcc3b5aa765d61d8327deb882cf99
Analyzing '5f4dcc3b5aa765d61d8327deb882cf99'
[+] MD2
[+] MD5
[+] MD4
[+] NTLM

Il renvoie plusieurs possibilités classées par probabilité. MD5 et NTLM produisent tous deux des chaînes hex de 32 caractères, donc le contexte compte. Si vous avez extrait le hash d'un fichier SAM Windows ou d'un NTDS.dit, c'est du NTLM. S'il provient d'une base MySQL, c'est probablement du MD5.

Les hashes des fichiers shadow Unix sont plus faciles à identifier car ils incluent un préfixe :

  • $1$ - MD5crypt (ancien, encore présent sur des systèmes vieillissants)
  • $5$ - SHA-256crypt
  • $6$ - SHA-512crypt (par défaut sur la plupart des distributions Linux modernes)
  • $2b$ - bcrypt

Une fois l'algorithme identifié, associez-le à un numéro de mode Hashcat. Ceux que vous utiliserez le plus souvent :

  • -m 0 - MD5
  • -m 100 - SHA-1
  • -m 1000 - NTLM
  • -m 1800 - SHA-512crypt (fichiers shadow Linux)
  • -m 3200 - bcrypt

Cassage de hash avec Hashcat

Hashcat 6.2.6 est l'outil vers lequel vous vous tournez quand la vitesse compte. Il tourne sur GPU, prend en charge plus de 350 modes de hash et dispose du meilleur moteur de règles disponible. Si vous avez un GPU dédié, Hashcat devrait être votre outil de cassage principal.

Attaque par dictionnaire

Une attaque par dictionnaire simple est toujours votre premier réflexe. Vous comparez chaque mot d'une wordlist à vos hashes cibles :

hashcat -m 0 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt

Les options se décomposent simplement. -m 0 définit le mode de hash sur MD5. -a 0 sélectionne le mode straight, c'est-à-dire dictionnaire uniquement sans mutation. hashes.txt contient vos hashes cibles, un par ligne. Le dernier argument est votre wordlist.

Contre un lot de hashes MD5 sans sel, l'opération se termine en moins d'une minute sur n'importe quel GPU moderne. Vous casserez typiquement 20 à 40 % des hashes d'un dump avec juste rockyou.txt et sans règles. Les mots de passe faibles comme "password123" et "summer2024" tombent immédiatement.

Hashcat sauvegarde les résultats dans un potfile (~/.local/share/hashcat/hashcat.potfile par défaut). Si vous relancez les mêmes hashes, il ignore ceux déjà cassés. Vous pouvez consulter les résultats à tout moment avec hashcat --show -m 0 hashes.txt. C'est utile quand vous voulez générer un rapport final sans relancer l'attaque complète.

Attaques par règles

Les règles, c'est là que Hashcat prend vraiment l'avantage. Chaque règle transforme chaque mot de votre wordlist : changement de casse, ajout de chiffres, substitution de lettres en équivalents leet speak, inversion de chaînes. Une seule entrée comme "password" devient "Password", "password1", "p@ssword", "PASSWORD123" et des centaines d'autres variantes.

hashcat -m 0 -a 0 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

L'option -r charge un fichier de règles. Hashcat en fournit plusieurs, mais deux couvrent la grande majorité des patterns de mots de passe réels.

N'écrivez pas de règles personnalisées tant que vous n'avez pas épuisé best64.rule et dive.rule. Ces deux fichiers couvrent environ 80 % des mutations de mots de passe que les utilisateurs créent réellement. Les règles personnalisées ont du sens pour des attaques ciblées contre la politique de mots de passe d'une organisation spécifique, mais la plupart des pentesters n'en ont jamais besoin.

Attaques par masque

Quand vous connaissez la politique de mots de passe, les attaques par masque vous permettent de cibler un pattern spécifique :

hashcat -m 0 -a 3 hashes.txt ?u?l?l?l?l?d?d?d

Ce masque essaie toutes les combinaisons correspondant au pattern : une majuscule, quatre minuscules, trois chiffres. Cela couvre des mots de passe comme "Admin001" ou "Sales789".

Les caractères de substitution :

  • ?l - minuscules (a-z)
  • ?u - majuscules (A-Z)
  • ?d - chiffre (0-9)
  • ?s - caractères spéciaux
  • ?a - tous les précédents

Les attaques par masque sont plus efficaces quand vous avez des informations sur la politique de mots de passe de la cible. Si l'entreprise exige "minimum 8 caractères, au moins une majuscule et un chiffre", vous pouvez construire un masque qui correspond exactement à cette politique et ignorer des milliards de candidats impossibles.

Sur une RTX 4090, Hashcat casse du MD5 à environ 164 milliards de hashes par seconde. Le NTLM tourne à environ 100 milliards. Le bcrypt avec un facteur de coût de 10 chute à environ 184 000 hashes par seconde. Ces chiffres expliquent pourquoi le choix de l'algorithme de hachage est si important côté défensif. La différence entre MD5 et bcrypt n'est pas incrémentale. C'est six ordres de grandeur.

Cassage de hash avec John the Ripper

John the Ripper 1.9.0-jumbo-1 adopte une approche différente. Il est adapté au CPU, détecte automatiquement les types de hash et brille dans les situations où Hashcat semble lourd à utiliser.

L'utilisation de base ne pourrait pas être plus simple :

john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt

John détecte le format de hash automatiquement. Pas de numéro de mode à chercher. Si la détection automatique choisit le mauvais format, vous pouvez le forcer avec --format=Raw-MD5 ou le format qui correspond à votre hash. Une fois terminé, consultez les résultats :

john --show hashes.txt

Là où John mérite vraiment sa place sur la machine de chaque pentester, c'est la famille de scripts *2john. Ils extraient des hashes crackables à partir de fichiers chiffrés :

pdf2john document.pdf > pdf_hash.txt
zip2john archive.zip > zip_hash.txt
ssh2john id_rsa > ssh_hash.txt
keepass2john database.kdbx > kp_hash.txt

Hashcat ne fait pas ça nativement. Vous auriez besoin d'outils séparés pour extraire le hash d'abord, puis le fournir à Hashcat. John gère tout dans un seul workflow.

Lors d'une mission récente, un client stockait des bases KeePass sur un partage réseau sans contrôle d'accès supplémentaire. L'exécution de keepass2john suivie d'une attaque par dictionnaire a permis de casser deux mots de passe maîtres en moins de dix minutes. Ces bases contenaient des identifiants d'administrateur de domaine. Sans les scripts d'extraction de John, cette chaîne d'attaque aurait nécessité un outil différent pour chaque type de fichier.

John est le meilleur choix quand vous avez un mélange de formats de hash ou devez casser des hashes provenant de fichiers chiffrés. Pour la vitesse brute sur GPU avec un seul type de hash, Hashcat gagne à tous les coups. La plupart des pentesters expérimentés gardent les deux installés et utilisent celui qui correspond au besoin. Il n'y a aucune raison de choisir un camp.

Choisir la bonne wordlist et stratégie d'attaque

Si vous avez lu notre guide des wordlists Gobuster, vous savez que la qualité d'une wordlist compte plus que sa taille. Une wordlist de 50 Go remplie de chaînes aléatoires casse moins de mots de passe qu'une liste organisée de 500 Mo contenant de vrais mots de passe issus de fuites.

Les wordlists essentielles :

  • rockyou.txt - 14 millions de mots de passe issus de la fuite RockYou de 2009. Fourni avec Kali. C'est votre point de départ par défaut pour chaque mission.
  • Répertoire Passwords de SecLists - le dépôt SecLists sur GitHub contient des dizaines de wordlists spécialisées triées par source, langue et pattern.
  • CeWL - génère des wordlists spécifiques à la cible en scrapant le site web d'une entreprise. Récupère les noms de produits, noms d'employés et le jargon que les wordlists génériques ratent.

Pour une approche structurée, travaillez les attaques dans cet ordre :

  1. Attaque par dictionnaire avec rockyou.txt
  2. Dictionnaire + règles (best64.rule d'abord, puis dive.rule)
  3. Attaque par masque si la politique de mots de passe est connue
  4. Attaque par combinaison pour les mots de passe de type passphrase
  5. Wordlist ciblée générée par CeWL + règles

En pratique, les étapes 1 et 2 cassent environ 70 à 80 % des hashes lors d'une mission typique. Si vous êtes toujours bloqué après les attaques par règles, les mots de passe restants sont généralement assez forts pour que la force brute ne soit pas réaliste dans un délai raisonnable. À ce stade, passez à d'autres vecteurs d'attaque. Passer trois jours à tenter de forcer un mot de passe aléatoire de 16 caractères, c'est du temps que vous pourriez consacrer à trouver un chemin différent vers le même objectif.

Considérations légales et éthiques

Rappel critique : Ne cassez que les hashes pour lesquels vous disposez d'une autorisation écrite explicite. L'accès non autorisé à des systèmes informatiques est une infraction pénale en vertu de lois comme le CFAA (États-Unis), le Computer Misuse Act (Royaume-Uni) et des législations similaires dans le monde entier.

Les missions de test d'intrusion autorisées et les compétitions CTF sont les seuls contextes appropriés pour casser des hashes de mots de passe. Votre document de périmètre de mission doit mentionner explicitement le cassage de mots de passe comme activité approuvée. Si ce n'est pas le cas, obtenez une confirmation écrite avant de continuer.

Pour pratiquer en toute sécurité, utilisez des environnements conçus à cet effet : les labs HackerDNA, les machines VulnHub, Hack The Box ou les plateformes CTF. Ces systèmes existent spécifiquement pour apprendre les techniques offensives et ne présentent aucun risque juridique. Monter un lab local avec VirtualBox ou Docker fonctionne aussi très bien pour expérimenter avec différents types de hash et modes d'attaque.

Si vous découvrez des mots de passe cassés lors d'un test autorisé, traitez-les avec précaution. Signalez-les par les canaux appropriés définis dans votre accord de mission. Ne conservez jamais de copies des identifiants cassés après la fin de la mission, et ne les utilisez jamais en dehors du périmètre convenu. Votre client vous a fait confiance avec l'accès à ses données les plus sensibles. Prenez cette confiance au sérieux.

Les données de mots de passe provenant de fuites réelles (au-delà des jeux de données d'entraînement bien connus comme rockyou.txt) ne devraient pas être téléchargées ni stockées. Utiliser des bases d'identifiants volés, même pour de la "recherche", crée une exposition juridique qui ne vaut pas le risque. Le OWASP Password Storage Cheat Sheet fournit de bonnes recommandations côté défensif si vos clients demandent comment se protéger contre les techniques que vous avez démontrées.

Commencez à casser des hashes dès aujourd'hui

Le cassage de hash est une compétence qui s'améliore avec la répétition. Chaque mission vous apprend quelque chose sur la façon dont les vrais utilisateurs créent leurs mots de passe, et cette expérience rend votre prochaine attaque plus rapide et plus ciblée.

Le workflow est direct : identifiez le type de hash, choisissez votre outil (Hashcat pour la vitesse GPU, John pour la flexibilité de format), sélectionnez la bonne wordlist et progressez dans les modes d'attaque du plus simple au plus complexe. La plupart des hashes tombent face à une attaque par dictionnaire avec de bonnes règles. Ceux qui résistent sont généralement assez forts pour qu'il soit préférable de trouver un chemin différent vers votre objectif.

Un dernier point : documentez vos résultats de cassage avec soin. Notez quels mots de passe ont été cassés, quel mode d'attaque les a trouvés et combien de temps cela a pris. Ces données vont dans votre rapport et donnent au client des preuves concrètes des faiblesses de sa politique de mots de passe. Un tableau montrant que 73 % des mots de passe du domaine ont été cassés en moins de quatre heures parle plus fort que n'importe quelle recommandation de politique.

Mettez ces techniques en pratique dans le lab Shadow Cracker de HackerDNA, où vous extrayez et cassez de vrais hashes de mots de passe d'un système Linux. Poursuivez ensuite avec le cours Password Cracking complet pour des leçons guidées couvrant chaque mode d'attaque. Commencez avec l'offre gratuite de HackerDNA, sans carte bancaire.

Articles associés :

HackerDNA Team

Équipe HackerDNA

Écrit par l'équipe HackerDNA - des professionnels de la cybersécurité qui créent des labs de hacking pratiques et du contenu éducatif pour vous aider à développer des compétences réelles en sécurité.

Rencontrer l'équipe

Prêt à mettre cela en pratique?

Arrêtez de lire, commencez à hacker. Obtenez une expérience pratique avec plus de 170 labs de cybersécurité réels.

Commencer à Hacker Gratuitement
12 000+ Hackers 100+ Labs & Cours Gratuit
Commencer Gratuitement