« Cassage de mots de passe » ?
Les mots de passe ne sont pas stockés de manière générale en clair dans une application, dans un fichier, etc., mais sont stockées sous forme de hash. Les fonctions de hachage sont des fonctions permettant notamment de transformer une chaîne de caractères en une autre chaîne de caractères, avec la spécificité de ne pas être réversible. Ainsi, pour valider qu’un mot de passe saisi est valide, il suffit de comparer sa valeur hachée à la valeur hachée du mot de passe initial. En revanche, à partir du mot de passe haché, il n’existe pas de fonction pour retrouver le mot de passe initial.Or, au cours d’audits, il est fréquent d’identifier des hash de mots de passe et d’avoir besoin de retrouver le mot de passe initial. Plusieurs techniques existent pour cela, la technique la plus simple étant une attaque par bruteforce. Cette technique consiste à essayer toutes les combinaisons de chaines de caractères possibles, de les hacher et de les comparer au hash cherché :
Figure 1 : Exemple de tentative de bruteforce pour trouver le mot de passe correspondant au hash 0b9c2625dc21ef05f6ad4ddf47c5f203837aa32c (mot de passe initial : « toto »)
Ces techniques sont appelées techniques de « cassage » de hash mots de passe. Ce cassage est coûteux en temps et requiert une grande capacité de calcul parallèle afin de réaliser le grand nombre d’opérations requis pour retrouver un mot de passe.
Comment être plus efficace ?
Sur un poste de travail standard, ces opérations sont peu performantes donc le temps nécessaire pour casser un mot de passe est long. Pour remédier à cela, il est courant d’utiliser des serveurs ayant des performances particulièrement élevées. En particulier, les cartes graphiques sont très performantes pour ce type d’opération. Il est ainsi possible en quelques clics de louer un serveur avec de grosses performances de calcul chez Amazon par exemple ou plus simplement d’acheter du matériel spécifique pour construire un serveur de cassage.En outre, il existe de nombreux outils et techniques de cassages, mais ceux-ci ne sont pas nécessairement simples à utiliser ou difficiles à utiliser de manière performante (complexité des modes d’attaque, enchaînement de techniques, restitution des résultats, etc.).
Enfin, dans le cadre de l’offre audit Wavestone certifiée ISO 27001, la confidentialité des données étant particulièrement importante, il est nécessaire d’assurer une ségrégation entre les données de cassages des 40 auditeurs.
Pour cela, une interface web a été développée avec pour objectif de simplifier la gestion des outils de cassage de mots de passe, avec notamment une automatisation des tâches et permettre un accès multi-utilisateur avec un cloisonnement strict des tâches en cours.
Fonctionnement de Wavecrack
L’interface proposée permet à un utilisateur de saisir une liste de hash ou d’uploader un fichier de hash et de choisir des options de cassage telles que :- Choix du type de hash à transmettre à l’outil de cassage ou utilisation d’une reconnaissance automatique
- Choix du type d’attaque (lancement successif des attaques sélectionnées) :
- Utilisation de listes de mots (dictionnaires, listes de mots de passe fuités, etc.)
- Utilisation de listes de mots avec variations sur ces mots (ajout de chiffres et caractères spéciaux, changement de la casse, etc.)
- Attaque par masque
- Attaque par bruteforce pur
- Choix de la durée de cassage.

Figure 2 : Interface de saisie de hash
Figure 3 : Statistiques sur les mots de passe cassés en temps réel
Chaque utilisateur a accès à l’historique de ses cassages, et seul l’utilisateur qui a lancé un cassage peut visualiser son contenu. Cela permet d’assurer une ségrégation entre plusieurs utilisateurs.
L’authentification repose par défaut sur un annuaire LDAP, mais peut être adaptée afin d’utiliser un référentiel local par exemple.
Enfin, le moteur de lancement des tâches permet également d’ajouter des fonctionnalités à hashcat. Par exemple, les mots de passe associés à des hash LM sont pris en charge dans leur totalité plutôt que sous forme de demi hash LM comme les manipule hashcat.
Le code source de cette interface est publié en open-source sur le github de Wavestone CDT .
N'hésitez pas à tester cet outil et nous faire part de vos remarques ou suggestions !
Cyprien OGER