Password Cracking

L’idée ici est de résumer comment aborder un bruteforce de manière méthodique afin de mettre le plus de chances de son côté : identification du type de hash, choix des stratégies (dictionnaire, masques, règles, attaques hybrides), construction et optimisation de wordlists.

Identification de l’algorithme de hash

Avant de se lancer sur une attaque par force brute, il faut connaître l’algorithme utilisé. Quand ça touche à du hash plus exotique que du NT, MD5, SHA1, on peut utiliser des outils dédiés :

Ou regarder sur la page “Example hashes” de hashcat pour identifier une corrélation.


Techniques d’attaques

Attaque par dictionnaire

hashcat -a 0 -m $NUMBER $HASH_FILE $WORDLIST

Attaque hybride

Il s’agit ici d’une attaque par dictionnaire comportant des règles et un loopback (réinjecte les mots qui auront été trouvés)

hashcat -a 0 -m $NUMBER $HASH_FILE $WORDLIST --loopback -r $RULES_FILE

Bruteforce

Petit exemple ci-dessous pour une attaque par force brute de 4 à 8 caractères.

hashcat -a 3 -m $NUMBER $HASH_FILE --increment --increment-min 4 --increment-max 8 "?a?a?a?a?a?a?a?a"

Utilisations des masques hashcat

Hashcat permet d’utiliser des masques afin de simplifier les attaques par force brute. Les charsets disponibles sont les suivants :

?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff

Par exemple, si on souhaite viser des mots de passe construits avec le format {Entreprise}{Année}{Caractère spécial}, on peut utiliser le masque suivant :

?u?l?l?l?l?l?l?d?d?d?d?s # Societe2025!

Wordlists

Wordlists pré-conçues

Quelques bonnes sources pour du bruteforce à froid sur des hashs :

Création de wordlists personnalisées

Quelques bons outils pour créer des wordlists personnalisées :

Wister

Générateur de wordlists polyvalent offrant plusieurs modes de combinaison, utilisables séparément ou mélangés.

python3 wister.py -w $WORD1 $WORD2 $WORD3 -c 1 2 3 4 5 -o $OUTPUT