ITSkillsCenter
Cybersécurité

Cracking de mots de passe avec Hashcat et John the Ripper — tutoriel CEH 2026

14 min de lecture

Maîtriser le cracking offline GPU-accéléré avec Hashcat et John the Ripper sur tous les hashs courants : NTLM, NetNTLMv2, MD5, SHA-1/256/512, bcrypt, Argon2, MySQL, hashs WordPress, ZIP/RAR/7Z, PDF. Wordlists, masks, rules, hybrid attacks et stratégies d’optimisation.

📍 À lire d’abord : Passer le CEH v13 depuis l’Afrique de l’Ouest — Guide complet 2026 · Lab CEH avec Kali Linux + DVWA + HTB Academy.

⚠️ Hashs à cracker = uniquement ceux issus de tes propres systèmes (test passwords) ou d’un mandat de pentest signé. Cracker les hashs de fichiers tiers obtenus illégalement reste un crime sous toutes les juridictions ouest-africaines.

Introduction

Le module 06 System Hacking du CEH v13 (~10 % de l’examen) accorde une place centrale au cracking de mots de passe. Les bases de données de hashs sont le butin le plus convoité d’un attaquant : un hash craqué donne un mot de passe en clair, qui est presque toujours réutilisé sur d’autres comptes (un Trello / Gmail / banque / WordPress du même utilisateur). Les outils de référence sont Hashcat (GPU-accéléré, le plus rapide) et John the Ripper (CPU + GPU, le plus polyvalent sur les formats exotiques).

Ce tutoriel apprend les deux outils sur des hashs typiques que tu trouves dans un pentest CEH : NTLM Windows, hashs Linux SHA-512, hashs WordPress, archives ZIP protégées. Tu apprendras les stratégies dictionary, brute force, mask, rules, hybrid — et comment choisir laquelle en fonction de ce que tu sais sur la cible. Stratégie attendue à l’examen et en pratique.

Prérequis

  • Lab Kali Linux 2026.1 (Hashcat et John préinstallés).
  • Compréhension des fonctions de hash : MD5, SHA-1, SHA-256, bcrypt.
  • GPU dédié recommandé pour Hashcat (NVIDIA RTX, AMD Radeon). CPU only fonctionne mais 100x plus lent.
  • Wordlist téléchargée : rockyou.txt (sur Kali à /usr/share/wordlists/rockyou.txt.gz, à décompresser).
  • Niveau attendu : intermédiaire.
  • Temps estimé : 3 heures.

Étape 1 — Comprendre les fonctions de hash

Une fonction de hash transforme une donnée d’entrée variable en empreinte fixe, unidirectionnelle (impossible de remonter à l’entrée depuis la sortie sans force brute). Les fonctions les plus courantes :

Algorithme       Longueur  Vitesse cracking RTX 3080  Sécurité 2026
MD5              32 hex    ~50 GH/s                   Cassée (collisions, rainbow tables)
SHA-1            40 hex    ~22 GH/s                   Compromise (collisions SHAttered 2017)
SHA-256          64 hex    ~7 GH/s                    Forte si itéré, faible en simple
NTLM (Windows)   32 hex    ~80 GH/s                   Cassée par défaut
NetNTLMv2        complexe  ~3 GH/s                    Vulnérable au cracking
MySQL5 (SHA1+)   40 hex    ~22 GH/s                   Cassée
bcrypt           60 chars  ~30 KH/s                   Forte (par design lent)
Argon2id         ~96 chars ~10 KH/s                   La plus forte (recommandée 2026)

GH/s = milliards de hashs par seconde. KH/s = milliers. Un hash MD5 simple est cracké en heures pour 8 caractères ; un Argon2 prend des années même sur la même machine — c’est exactement pourquoi MD5 est interdit pour passwords depuis 15 ans et bcrypt/Argon2 sont la norme.

Étape 2 — Récupérer un hash : trois cas typiques

Cas 1 : Hashs Linux depuis /etc/shadow. Format username:$ID$rounds$salt$hash:lastchange:....

$ cat /etc/shadow
root:$6$AbCdEfGh$X9y5z...:18000:0:99999:7:::

$6$ = SHA-512. $5$ = SHA-256. $1$ = MD5 (legacy). $2y$ = bcrypt. $argon2id$ = Argon2id.

Cas 2 : Hashs Windows depuis SAM/NTDS. Sur une cible Windows compromise via Meterpreter :

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
user:1001:aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76:::

Format user:RID:LM_hash:NTLM_hash:::. Le LM hash (1ère partie) est désactivé depuis Windows 2003 SP2 (rempli de aad3b...). Le NTLM hash (2ème partie) est ce qu’on craque.

Cas 3 : Hashs WordPress depuis wp_users.user_pass. Format spécifique commençant par $P$B... (phpass) ou $wp$2y$... (bcrypt depuis WP 6.x).

SELECT user_login, user_pass FROM wp_users;

Cas 4 : Hashs d’archive ZIP/RAR/7Z protégée. Extraction avec scripts dédiés :

# ZIP
zip2john archive.zip > archive.hash

# RAR
rar2john archive.rar > archive.hash

# 7-Zip
7z2john archive.7z > archive.hash

# PDF
pdf2john.pl document.pdf > document.hash

Étape 3 — Hashcat : premier crack

Hashcat est l’outil GPU-accéléré le plus rapide. Synthaxe : hashcat -m <mode> -a <attack> hashfile wordlist.

Les modes courants à connaître pour le CEH :

Mode 0       MD5
Mode 100     SHA-1
Mode 1000    NTLM
Mode 5500    NetNTLMv1
Mode 5600    NetNTLMv2
Mode 1400    SHA-256
Mode 1700    SHA-512
Mode 1800    SHA-512 crypt (Linux $6$)
Mode 7400    sha256crypt (Linux $5$)
Mode 3200    bcrypt $2*$
Mode 22000   WPA-PBKDF2-PMKID+EAPOL (Wi-Fi capture handshakes)
Mode 400     phpass (WordPress, Joomla)
Mode 12500   RAR3-hp
Mode 13000   RAR5
Mode 13600   7-Zip

Premier exemple : cracker un hash NTLM avec dictionnaire rockyou.

# Préparer le hash dans un fichier
echo "8846f7eaee8fb117ad06bdd830b7586c" > ntlm.hash

# Décompresser rockyou si pas déjà fait
sudo gunzip /usr/share/wordlists/rockyou.txt.gz

# Crack en mode dictionnaire
hashcat -m 1000 -a 0 ntlm.hash /usr/share/wordlists/rockyou.txt

Sortie typique :

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 1000 (NTLM)
Hash.Target......: 8846f7eaee8fb117ad06bdd830b7586c
Time.Started.....: ...
Time.Estimated...: ...
Speed.#1.........: 12345 MH/s (5.43ms)
Recovered........: 1/1 (100.00%) Digests
Progress.........: 1234567/14344384 (8.61%)

Le mot de passe craqué apparaît dans le fichier ~/.hashcat/hashcat.potfile au format hash:plaintext. Récupère avec hashcat -m 1000 ntlm.hash --show.

password est la valeur typique pour ce hash NTLM précis (cf. cas d’école Microsoft).

Étape 4 — Stratégies d’attaque Hashcat

Hashcat propose six modes d’attaque (-a).

Mode 0 — Dictionary (le plus rapide quand wordlist contient le mot) :

hashcat -m 1000 -a 0 hash.txt rockyou.txt

Mode 1 — Combinator : combine deux wordlists (mot1+mot2) :

hashcat -m 1000 -a 1 hash.txt words1.txt words2.txt

Mode 3 — Brute force / mask : essaie toutes les combinaisons pour un masque donné. Mask : ?l minuscules, ?u majuscules, ?d chiffres, ?s symboles, ?a tout ASCII imprimable, ?h hex lowercase, ?H hex uppercase, ?b binary 0-255.

# 6 chiffres exactement (PIN)
hashcat -m 1000 -a 3 hash.txt ?d?d?d?d?d?d

# 8 caractères : 1 majuscule + 5 minuscules + 2 chiffres
hashcat -m 1000 -a 3 hash.txt ?u?l?l?l?l?l?d?d

# Mot de longueur 6 à 10 tout caractères
hashcat -m 1000 -a 3 hash.txt --increment --increment-min 6 --increment-max 10 ?a?a?a?a?a?a?a?a?a?a

Mode 6 — Hybrid wordlist + mask : ajoute des suffixes à un mot du dico (password + 2026!) :

hashcat -m 1000 -a 6 hash.txt rockyou.txt ?d?d?d?d

Mode 7 — Hybrid mask + wordlist : ajoute des préfixes :

hashcat -m 1000 -a 7 hash.txt ?d?d?d rockyou.txt

Mode 9 — Association : associe chaque mot du dico à un hash spécifique (utile pour craquer N comptes avec leurs mots de passe spécifiques).

Étape 5 — Rules : démultiplier la wordlist

Les rules sont des transformations appliquées à chaque mot du dictionnaire pour générer des variantes (capitalisation, leet speak, ajout de chiffres, etc.). Hashcat livre des rules préfaites dans /usr/share/hashcat/rules/.

# Best64 : 64 transformations classiques
hashcat -m 1000 -a 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

# Big rules : 1.7 million de transformations (long mais exhaustif)
hashcat -m 1000 -a 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/dive.rule

# Plusieurs rules cumulées
hashcat -m 1000 -a 0 hash.txt rockyou.txt -r best64.rule -r toggles1.rule

Exemples de transformations rules :

:           do nothing
l           lowercase all
u           uppercase all
c           capitalize first
$1          append "1"
$2026       append "2026"
^A          prepend "A"
sa@         replace 'a' with '@'
i4M         insert "M" at position 4

Tu peux écrire tes propres rules dans un fichier .rule. Pour le CEH, connaître best64 et savoir lire la syntaxe basique suffit.

Étape 6 — John the Ripper : alternative et formats exotiques

John est plus adaptable sur les formats peu courants (Cisco type 7, JKS Java keystore, KeePass, Bitcoin wallet, etc.). Sur Kali, deux versions : john (community) et john-jumbo (avec ~400 formats supportés).

# Lister les formats supportés
john --list=formats | grep -i nt

# Crack basique avec dictionnaire
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

# Avec format spécifié
john --format=NT --wordlist=rockyou.txt hash.txt

# Avec rules
john --wordlist=rockyou.txt --rules=Jumbo hash.txt

# Mode incremental (brute force structuré)
john --incremental hash.txt

# Voir les hashs craqués
john --show hash.txt

John est typiquement utilisé pour les premiers tests rapides ou les formats sans support GPU Hashcat.

Étape 7 — Wordlists : où les trouver, comment les optimiser

Les wordlists font la différence entre un crack en 30 secondes et un crack qui ne réussit jamais. Stratégie :

Wordlists de base :
rockyou.txt (14 millions de mots, base de référence) — sur Kali à /usr/share/wordlists/rockyou.txt.gz
SecLists (collection GitHub maintenue à jour) — git clone https://github.com/danielmiessler/SecLists
PROBABLE-Wordlists (statistiques de fréquence) — https://github.com/berzerk0/Probable-Wordlists

Wordlists ciblées par contexte :
– Pour cibles francophones : top-french.txt (les 10 000 mots de passe français les plus courants)
– Pour entreprises : générer une wordlist custom à partir de l’OSINT (noms d’employés, années, ville, slogan d’entreprise)

Génération custom avec CeWL :

# Scrape un site cible et extrait les mots de 5+ caractères
cewl -d 2 -m 5 https://example.com -w cewl-wordlist.txt

Mutations sur une wordlist existante avec mp64 :

mp64 'rockyou.txt?d?d' > rockyou-2digits.txt

Étape 8 — Crack pratique sur Metasploitable 2

Tu as dump /etc/shadow de Metasploitable 2 dans le tutoriel précédent. Crack le hash root :

# Extraire le hash root format Hashcat
echo 'root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.' > shadow.hash

# $1$ = MD5 crypt mode 500 dans Hashcat
hashcat -m 500 -a 0 shadow.hash /usr/share/wordlists/rockyou.txt --force

Sur Metasploitable 2, root:msfadmin. Le hash craque en 2 secondes avec rockyou car msfadmin est dans la wordlist.

Pour cracker tous les hashs d’un fichier shadow d’un coup, John est plus pratique :

unshadow /etc/passwd /etc/shadow > combined.txt
john --wordlist=rockyou.txt combined.txt
john --show combined.txt

unshadow reformate passwd + shadow en format compatible John.

Étape 9 — Optimisations GPU et performance

Sur GPU NVIDIA RTX 3080, tu obtiens typiquement :

NTLM       : 80 GH/s    (plus de 80 milliards par seconde)
SHA-1      : 22 GH/s
SHA-256    : 7 GH/s
SHA-512    : 2.5 GH/s
bcrypt $2y : 30 KH/s    (10 millions de fois plus lent que NTLM)
Argon2     : 10 KH/s

Bench sur ton GPU :

hashcat -b

Optimisations possibles :

  • -O : optimized kernels (mode rapide, parfois moins précis)
  • -w 4 : workload profile (1=low, 4=insane, attention chauffage)
  • --force : ignore certaines warnings
  • -d 1,2 : sélectionner GPU spécifique sur multi-GPU

Sur CPU only (laptop sans GPU dédié) :

# Utiliser tous les cores
hashcat -m 1000 -a 0 hash.txt rockyou.txt -D 1

Pour des cracking sérieux et long (4+ heures), utiliser un VPS avec GPU loué (AWS, Vast.ai à ~0.3 USD/h pour RTX 3060). Compter 5-15 USD pour craquer 10-50 hashs cohérents.

Étape 10 — Stratégies de cracking pour CEH

Au CEH, on ne te demande pas de cracker des hashs ultra-complexes en pratique — on teste ta connaissance des techniques. Sache :

1. Identifier le format de hash (couleur, longueur, prefix)
2. Choisir le mode Hashcat correspondant
3. Premier essai : dictionnaire rockyou ou SecLists
4. Si échec : rules best64 + rockyou
5. Si échec : mask brute force jusqu'à 8 caractères
6. Si échec : OSINT pour wordlist custom (cewl, noms employés, years)
7. Si échec : abandonner ou louer du GPU dans le cloud

À l’examen, plusieurs questions de format :

  • Quelle commande Hashcat pour cracker un hash NTLM avec rockyou et best64.rule ?hashcat -m 1000 -a 0 hash.txt rockyou.txt -r best64.rule
  • Quelle est la différence entre dictionary attack et brute force ? → Dictionary teste une liste prédéfinie ; brute force teste toutes les combinaisons.
  • Comment identifier si un hash est NTLM ou MD5 ? → 32 hex chars dans les deux cas. NTLM provient de Windows (SAM, NTDS). Tester d’abord NTLM si origine Windows, MD5 sinon. Outils comme hashid ou hash-identifier aident.

Erreurs fréquentes

Erreur Cause Solution
No hashes loaded Mauvais mode -m ou format de hash incorrect Vérifier avec hashid hash.txt ; relire la doc Hashcat pour le bon mode
Token length exception Hash mal formé (caractères invisibles, encodage) Recopier proprement le hash sans espace ni newline
Hashcat tourne mais ne trouve rien Mot de passe pas dans la wordlist Essayer une wordlist plus grande ou rules ; si échec, brute force masqué
Out of memory GPU Wordlist + rules trop volumineuses Splitter la wordlist (split -l 100000 rockyou.txt) ; réduire rules
Crack ultra-lent sur bcrypt C’est normal, bcrypt est lent par design Patience ou GPU haut de gamme, accepter 1-3 hashs/jour
--show ne montre rien Potfile vide (jamais cracké) Vérifier ~/.hashcat/hashcat.potfile, recommencer le crack
Différence rockyou vs SecLists rockyou = leak Yahoo 2009 ; SecLists = collection moderne Les deux sont complémentaires
john --incremental tourne sans fin Brute force sur tout l’espace Ajouter --max-length=8
Format Linux $y$ rejeté yescrypt, support récent Mise à jour Hashcat, ou utiliser John Jumbo

Adaptation au contexte ouest-africain

Pour les pentesters qui dump des bases de données africaines : les bases de PME africaines contiennent typiquement 50-90 % de mots de passe craquables avec rockyou + best64. Les attaquants africains utilisent ces wordlists exactement comme leurs homologues mondiaux. Conséquence : exiger Argon2 ou bcrypt + 12 caractères + MFA dans tous tes audits.

Pour les analystes SOC / DFIR : connaître le cracking côté offensif te permet de comprendre l’urgence d’un dump de hashs. Si un attaquant exfiltre 100 000 hashs MD5 d’une cible, considérer que tous les comptes sont compromis dans les 7 jours suivants ; tous les passwords doivent être réinitialisés.

Pour les développeurs web : utiliser Argon2id (Argon2 avec resistance side-channel + tradeoff memory/time) par défaut dans tes apps. PHP 7.2+ : password_hash($pwd, PASSWORD_ARGON2ID). Node.js : argon2 package. Python : passlib.

Pour les centres de formation : démontrer en 30 minutes le cracking de 10 hashs de la classe (en faisant taper aux étudiants 10 mots de passe communs) impressionne durablement et ancre la nécessité de bonnes pratiques password.

FAQ

Hashcat ou John : que choisir ?

Hashcat pour vitesse pure (GPU). John pour formats exotiques et CPU only. En 95 % des cas CEH, Hashcat suffit.

Pourquoi rockyou.txt et pas une autre ?

C’est la wordlist de référence depuis 2009 (leak du site rockyou.com avec 32M de mots de passe en clair). Elle représente bien la distribution réelle des mots de passe humains. Compléter avec SecLists pour les cas modernes.

Puis-je cracker un hash sans connaître le mot de passe original ?

C’est toujours l’objectif d’un cracking. Tu n’as que le hash, le but est de retrouver le plain text. Les méthodes : dictionnaire (essais de mots possibles), brute force (toutes combinaisons), rainbow tables (lookup pré-calculé pour hashs sans salt).

Combien de temps pour cracker un mot de passe de 12 caractères aléatoires ?

Avec NTLM sur RTX 3080 (80 GH/s), brute force 12 chars [a-zA-Z0-9] = 62^12 = 3.2 * 10^21 combinaisons / 80 * 10^9 H/s = ~1300 ans. Insolvable en pratique. C’est pourquoi la longueur 12+ avec entropie est efficace.

Les rainbow tables sont-elles encore utilisées ?

Marginalement. Pour les hashs sans salt (NTLM, MD5 brut), elles fonctionnent mais Hashcat GPU est aussi rapide. Pour hashs salés (bcrypt, Argon2), inutilisables (chaque salt invaliderait la table).

Qu’est-ce que le « salt » dans un hash ?

Une chaîne aléatoire ajoutée au mot de passe avant hashage. Empêche les rainbow tables et rend chaque hash unique même pour des passwords identiques. Tous les algorithmes modernes (bcrypt, Argon2, scrypt, sha512crypt) intègrent automatiquement un salt.

Peut-on cracker un mot de passe Windows oublié de cette manière ?

Théoriquement oui (extraire le hash via samdump2 depuis SAM, cracker avec Hashcat). En pratique, c’est plus simple de réinitialiser via media bootable Windows. La technique cracking est utilisée contre Windows, pas pour récupérer son propre password.

Pour aller plus loin


Mots-clés secondaires : Hashcat tutoriel CEH, John the Ripper francophone, NTLM crack, rockyou wordlist, mask attack hybrid, bcrypt Argon2 password, dump shadow Linux, hashdump SAM Windows.

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité