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 $WORDLISTAttaque 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_FILEBruteforce
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 - 0xffPar 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