
PACK (Kit d'analyse et de craquage de mots de passe)
PACK (Password Analysis and Cracking Toolkit) est une collection d'utilitaires développés pour faciliter l'analyse de listes de mots de passe afin d'améliorer le cassage de mots de passe via la détection de motifs de masques, de règles, de jeux de caractères et d'autres caractéristiques des mots de passe. La boîte à outils génère des fichiers d'entrée valides pour la famille de craqueurs de mots de passe Hashcat.
REMARQUE : La boîte à outils elle-même n'est pas capable de casser des mots de passe, mais est conçue pour rendre le fonctionnement des craqueurs de mots de passe plus efficace.
Avant de pouvoir utiliser la boîte à outils, nous devons établir un critère de sélection des listes de mots de passe. Puisque nous cherchons à analyser la manière dont les gens créent leurs mots de passe, nous devons obtenir un échantillon aussi large que possible de mots de passe divulgués. Une telle liste excellente est basée sur la compromission de RockYou.com. Cette liste fournit une collection à la fois large et suffisamment diversifiée qui donne de bons résultats pour les mots de passe courants utilisés sur des sites similaires (par exemple, les réseaux sociaux). L'analyse obtenue à partir de cette liste peut ne pas fonctionner pour les organisations ayant des politiques de mots de passe spécifiques. Ainsi, la sélection de l'échantillon d'entrée doit être aussi proche que possible de votre cible. De plus, essayez d'éviter d'obtenir des listes basées sur des mots de passe déjà craqués, car cela générera un biais statistique des règles et des masques utilisés par la ou les personnes craquant la liste et non par les utilisateurs réels.
L'analyse la plus basique que vous puissiez effectuer consiste simplement à obtenir la longueur la plus courante, le jeu de caractères et d'autres caractéristiques des mots de passe dans la liste fournie. Dans l'exemple ci-dessous, nous utiliserons 'rockyou.txt' contenant environ 14 millions de mots de passe. Lancez statsgen.py avec la ligne de commande suivante :
$ python statsgen.py rockyou.txt
Vous trouverez ci-dessous la sortie de la commande ci-dessus :
_
StatsGen #.#.# | |
_ __ __ _ ___| | _
| '_ \ / _` |/ __| |/ /
| |_) | (_| | (__| <
| .__/ \__,_|\___|_|\_\
| |
|_| [email protected]
[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 100% (14344390/14344390) of passwords
NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords
[*] Length:
[+] 8: 20% (2966037)
[+] 7: 17% (2506271)
[+] 9: 15% (2191039)
[+] 10: 14% (2013695)
[+] 6: 13% (1947798)
...
[*] Character-set:
[+] loweralphanum: 42% (6074867)
[+] loweralpha: 25% (3726129)
[+] numeric: 16% (2346744)
[+] loweralphaspecialnum: 02% (426353)
[+] upperalphanum: 02% (407431)
...
[*] Password complexity:
[+] digit: min(0) max(255)
[+] lower: min(0) max(255)
[+] upper: min(0) max(187)
[+] special: min(0) max(255)
[*] Simple Masks:
[+] stringdigit: 37% (5339556)
[+] string: 28% (4115314)
[+] digit: 16% (2346744)
[+] digitstring: 04% (663951)
[+] othermask: 04% (576324)
...
[*] Advanced Masks:
[+] ?l?l?l?l?l?l?l?l: 04% (687991)
[+] ?l?l?l?l?l?l: 04% (601152)
[+] ?l?l?l?l?l?l?l: 04% (585013)
[+] ?l?l?l?l?l?l?l?l?l: 03% (516830)
[+] ?d?d?d?d?d?d?d: 03% (487429)
...
REMARQUE : Vous pouvez réduire le nombre de valeurs aberrantes affichées en incluant le drapeau --hiderare qui n'affichera aucun élément dont l'occurrence est inférieure à 1 %.
Voici ce que nous pouvons immédiatement apprendre de la liste ci-dessus :
La dernière section, "Advanced Masks", contient les masques les plus fréquents au format Hashcat. Les symboles individuels peuvent être interprétés comme suit :
?l - un seul caractère minuscule
?u - un seul caractère majuscule
?d - un seul chiffre
?s - un seul caractère spécial
Par exemple, le tout premier masque, "?l?l?l?l?l?l?l?l", correspondra à tous les mots de passe alphabétiques minuscules. Compte tenu de la taille de l'échantillon, vous pourrez craquer environ 4 % des mots de passe. Cependant, après avoir généré la sortie initiale, vous souhaiterez peut-être utiliser des filtres pour affiner les données de mots de passe.
Voyons comment les utilisateurs de RockYou ont tendance à sélectionner leurs mots de passe en utilisant le masque simple "stringdigit" (une chaîne suivie de chiffres) :
$ python statsgen.py ../PACK-0.0.3/archive/rockyou.txt --simplemask stringdigit -q --hiderare
[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 37% (5339556/14344390) of passwords
NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords
[*] Length:
[+] 8: 23% (1267260)
[+] 7: 18% (981432)
[+] 9: 17% (939971)
[+] 10: 14% (750938)
[+] 6: 11% (618983)
[+] 11: 05% (294869)
[+] 12: 03% (175875)
[+] 13: 01% (103047)
[+] 14: 01% (65958)
[*] Character-set:
[+] loweralphanum: 88% (4720184)
[+] upperalphanum: 06% (325941)
[+] mixedalphanum: 05% (293431)
[*] Password complexity:
[+] digit: min(1) max(252)
[+] lower: min(0) max(46)
[+] upper: min(0) max(31)
[+] special: min(0) max(0)
[*] Simple Masks:
[+] stringdigit: 100% (5339556)
[*] Advanced Masks:
[+] ?l?l?l?l?l?l?d?d: 07% (420318)
[+] ?l?l?l?l?l?d?d: 05% (292306)
[+] ?l?l?l?l?l?l?l?d?d: 05% (273624)
[+] ?l?l?l?l?d?d?d?d: 04% (235360)
[+] ?l?l?l?l?d?d: 04% (215074)
...