Dans le monde de la cybersécurité, il existe des outils incontournables. C'est le cas de Hashcat. Nos confrères d'IDG nous en disent un peu plus sur cette solution.

Qu'est-ce que Hashcat ?

Hashcat est un casseur de mots de passe réputé pour son efficacité. Il est très utilisé par les pen-testeurs et les administrateurs systèmes. Mais il est aussi prisé des cyber-criminels et des cyber-espions. Le craquage de mots de passe se distingue de la tentative de devinette de mot de passe de connexion à un site web, laquelle ne permet généralement qu'un nombre limité d’essais avant le verrouillage du compte. Une personne qui parvient à s’introduire dans un système protégé par des mots de passe chiffrés (« hashs ») essaiera souvent d’en craquer les hashs pour récupérer ces mots de passe.

Les mots de passe ne sont plus stockés en texte clair (en tous cas, ils ne devraient pas l'être). Ils sont plutôt chiffrés à l'aide d'une fonction unidirectionnelle appelée « hachage ». La transformation d'un mot de passe comme « Password1 » en hash est très rapide. Mais que peut-on faire avec ce hash ? Une attaque par force brute pour inverser la fonction de hachage et récupérer le mot de passe est difficilement réalisable par calcul. Cela prendrait autant de temps ou presque que la mort thermique de l’univers ! Heureusement, ou malheureusement selon son point de vue, aucun d'entre nous ne vivra probablement aussi longtemps. Mais plusieurs solutions permettent d'inverser un hachage pour récupérer le mot de passe original sans avoir recours à une attaque par force brute, qui ne donnera probablement pas de résultat. Et c’est là que Hashcat entre en jeu. Comment ? Il s'avère que les humains sont tellement prévisibles dans leurs choix de mots de passe que Hashcat peut souvent récupérer un mot de passe.

Utilisation de Hashcat

Outre des usages évidents à des fins criminelles et d'espionnage, le craquage de mots de passe se justifie légitimement dans plusieurs situations. Par exemple, un administrateur système veut vérifier de manière préventive la sécurité des mots de passe des utilisateurs. Si Hashcat arrive à les craquer, alors un attaquant potentiel y parviendra aussi. Des pen-testeurs autorisés cherchent fréquemment à craquer des hachages de mots de passe volés pour tenter des déplacements latéraux à l'intérieur d'un réseau ou pour élever les privilèges au niveau administrateur. Comme les pen-testeurs travaillent sous contrat et repèrent les failles dans les réseaux de leurs clients afin d’améliorer leur sécurité, ce cas d’usage de Hashcat est parfaitement légitime. En fait, le véritable avantage de cet outil, c’est qu’il est utilisé autant par les attaquants illégaux que par des défenseurs légitimes. Donc, la meilleure façon d'empêcher un attaquant d'utiliser Hashcat contre un réseau est de tester ses propres défenses pour s'assurer qu'une telle attaque ne pourra pas réussir.

Fonctionnement de Hashcat

Dans son usage le plus basique, Hashcat devine le mot de passe, le hashe, puis compare le hachage obtenu au mot de passe qu'il tente de craquer. Si les hachages correspondent, alors le mot de passe est découvert. Sinon, il faut renouveler l’opération de devinette. Toutes les attaques ne sont pas des attaques de force brute : c’est le cas des attaques par dictionnaire, des attaques par combinateur, des attaques par masque et des attaques basées sur des règles. Hashcat peut également exploiter la puissance du GPU pour mener des attaques par force brute si vous disposez du matériel informatique et du temps nécessaires.

Quelques exemples d’utilisation de Hashcat

- Attaque par dictionnaire

Comme les humains ont tendance à utiliser de très mauvais mots de passe, l’attaque par dictionnaire est la plus évidente à tenter en premier. Elle s’appuie souvent sur la liste de mots rockyou.txt. Celle-ci contient plus de 14 millions de mots de passe organisés par fréquence d'utilisation. Tout en haut de la liste, on trouve des mots de passe courants du genre « 123456 », « 12345 », « 123456789 », « password », « iloveyou », « princess », « 1234567 », et « rockyou ». Viennent ensuite des mots de passe moins courants comme « xCvBnM », »"ie168 », « abygurl69 », « a6_123 », et « *7¡Vamos » ! On trouve beaucoup d’autres listes de mots de passe gratuits sur Internet, qui ciblent des langues spécifiques. Hashcat permet de choisir la liste de mots de référence. Par exemple, en France, le projet Richelieu fournit aux équipes de sécurité des structures de santé une liste de mots de passe les plus courants pour évaluer leurs vulnérabilités. La liste disponible sous licence CC BY 4.0 et disponible sur GitHub, contient 20.000 français les plus utilisés.

- Attaque par combinateur

Autre constat : les mots de passe sont souvent des mots composés. Et Hashcat exploite cette habitude dans les attaques dites par combinateur. Hashcat prend des listes de deux mots (appelées aussi « dictionnaires ») et crée une nouvelle liste de chaque mot combiné avec un mot sur deux.

Voici un exemple figurant dans la documentation de Hashcat basé sur la combinaison de deux dictionnaires :

jaune

vert

noir

bleu

et :

voiture

vélo

Hashcat associe ensuite chaque mot avec un mot sur deux, puis teste les mots de passe suivants :

voiturejaune

voitureverte

voiturenoire

voiturebleue

vélojaune

vélovert

vélonoir

vélobleu

L’outil peut également ajouter des signes de ponctuation comme des traits d'union (-), des points d'exclamation (!) et d'autres caractères spéciaux pour créer une liste finale de mots comportant des mots de passe comme « voiturejaune! » et « vélobleu! », etc.

- Attaque par masque

Beaucoup d'utilisateurs utilisent des mots de passe en adoptant un certain type de séquence. Par exemple, une lettre majuscule suivie de six lettres plus un chiffre à la fin est un format assez courant pour les mots de passe plus anciens comme « Bananas1 ». Au lieu d'essayer de forcer tous les mots de passe possibles, Hashcat permet de rechercher tous les mots de passe dans ce format, ce qui réduit considérablement le nombre de suppositions possibles, si, en effet, le mot de passe en question est dans ce format.

La documentation de Hashcat explique pourquoi une attaque par masque est souvent plus rapide en termes d’ordre de grandeur qu'une attaque par force brute :

- Dans les attaques traditionnelles par force brute, le jeu de caractères doit contenir toutes les lettres majuscules, toutes les lettres minuscules et tous les chiffres (aussi appelé « mixalpha-numérique »). Si le mot de passe contient 9 caractères, l’itération devra comporter 62^9 (13.537.086.546.263.552) combinaisons. Supposons que la vitesse de craquage est de 100M/s, il faudra plus de quatre ans avant d’achever l’opération.

- L'attaque par masque exploite les habitudes des humains et la façon dont ils conçoivent les mots de passe. Le mot de passe ci-dessus correspond à un modèle simple mais commun. Un nom et une année y sont annexés. On peut également configurer l'attaque pour essayer les lettres majuscules uniquement sur la première position, parce qu’il est très rare de voir une lettre majuscule en deuxième ou troisième position. Pour faire court, avec une attaque par masque, on peut réduire l'espace clavier à 52*26*26*26*26*10*10*10*10 (237.627.520.000) combinaisons. Avec la même vitesse de craquage de 100M/s, cela ne prend que 40 minutes.

- Attaque basée sur les règles

Si les options les plus faciles ne donnent pas de résultats et si l’on a une idée précise de la façon dont la cible construit son mot de passe, l’outil Hashcat propose, pour mener une attaque basée sur des règles, de s’appuyer sur une syntaxe proche du langage de programmation, dans laquelle on peut spécifier le type de mots de passe à tester. « L'attaque basée sur des règles est l'un des modes d'attaque les plus complexes », explique le site web de Hashcat. « Une attaque basée sur des règles revient à utiliser un langage de programmation pour générer des mots de passe. Elle fait intervenir des fonctions pour modifier, couper ou étendre les séquences de mots et des opérateurs conditionnels pour en sauter certains, etc. De ce point de vue, une attaque basée sur les règles est la plus souple, la plus précise et la plus efficace des attaques ». Se la courbe d'apprentissage pour démarrer avec Hashcat est faible, l'apprentissage de la syntaxe des règles de Hashcat devient vite difficile.

- L'attaque par force brute

Enfin, si tout le reste échoue, il n’y a plus qu’à prier et à espérer que l'attaque par force brute de Hashcat réussisse avant que notre Soleil ne devienne une nova et n'engloutisse la Terre. Mais on ne sait jamais : on peut avoir de la chance !