Utiliser des règles pour améliorer une attaque par dictionnaire

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Une attaque par dictionnaire est une méthode pour pénétrer dans un système protégé par mot de passe en essayant systématiquement chaque mot d'une liste (un dictionnaire) comme mot de passe. Cependant, cette approche basique échoue souvent car les utilisateurs utilisent rarement des mots simples du dictionnaire comme mots de passe. Ils ajoutent souvent des chiffres, des symboles ou modifient la casse pour répondre aux exigences de complexité.

C'est là que les "règles de transformation" (mangling rules) deviennent incroyablement puissantes. Les règles de transformation sont un ensemble d'instructions qui modifient les mots de votre dictionnaire avant qu'ils ne soient testés. Par exemple, une règle peut ajouter un chiffre, mettre en majuscule la première lettre, ou substituer des lettres par des symboles (comme 'a' par '@').

Dans ce laboratoire, vous utiliserez l'outil populaire de cassage de mots de passe, John the Ripper (JtR), pour voir cela en action. Vous tenterez d'abord une attaque par dictionnaire standard et verrez qu'elle échoue. Ensuite, vous appliquerez un ensemble de règles de transformation pour améliorer l'attaque et réussir à casser un mot de passe plus complexe.

Comprendre la puissance des règles de transformation

Dans cette étape, vous allez d'abord effectuer une attaque par dictionnaire standard pour en observer les limites. Nous avons préparé un fichier nommé shadow.txt qui contient le mot de passe haché d'un utilisateur, et un fichier wordlist.txt contenant un mot de base potentiel pour le mot de passe.

Exécutons John the Ripper avec notre liste de mots contre le fichier de hachage. Cette commande indique à john d'essayer chaque mot de wordlist.txt comme mot de passe.

john --wordlist=wordlist.txt shadow.txt

Vous verrez une sortie similaire à celle-ci, indiquant que l'attaque est en cours.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 DONE (2023-10-27 10:30) 0g/s 1845Kp/s 1845Kc/s 1845KC/s secdec..secret
Session completed

Remarquez le message final : "Session completed". John the Ripper a essayé le mot "secret" et ses variations courantes mais n'a pas réussi à casser le mot de passe. C'est parce que le mot de passe réel est plus complexe qu'un simple mot du dictionnaire. Cela démontre la nécessité d'une technique plus avancée.

Localiser les fichiers de règles intégrés dans le répertoire /rules/

Dans cette étape, nous allons explorer où John the Ripper stocke ses puissantes règles de transformation. Sur la plupart des systèmes Linux, y compris celui-ci, les règles ne se trouvent pas dans un répertoire /rules/ séparé, mais sont définies dans le fichier de configuration principal, john.conf.

Listons le contenu du répertoire /etc/john/ pour trouver ce fichier de configuration.

ls -l /etc/john/

Vous devriez voir le fichier john.conf dans la sortie.

total 148
-rw-r--r-- 1 root root 148233 Jan 20  2022 john.conf

Ce fichier john.conf contient de nombreux ensembles de règles prédéfinis, tels que KoreLogic, best64, et all. Ces ensembles de règles sont des collections d'instructions de transformation individuelles qui peuvent être appliquées à une attaque par dictionnaire. Dans l'étape suivante, nous examinerons de plus près l'un de ces ensembles de règles.

Sélectionner un fichier de règles courant comme best64.rule

Dans cette étape, vous allez examiner un ensemble de règles spécifique. Pour votre commodité, nous avons déjà extrait un ensemble de règles populaire et efficace, best64, de john.conf et l'avons enregistré sous le nom best64.rule dans votre répertoire de projet actuel (~/project).

Inspectons les 10 premières lignes de ce fichier pour avoir une idée de ce à quoi ressemblent les règles. Utilisez la commande head :

head -n 10 best64.rule

Vous verrez une sortie similaire à celle-ci :

#
## best64.rule, a selection of the best 64 rules from the over 14,000
## rules in all.rule.
#
## Rule syntax:
## http://www.openwall.com/john/doc/RULES.shtml
#
## The following rules are commented out because they are slow.
#
:
l
u

Les lignes commençant par # sont des commentaires. Les lignes d'un seul caractère comme :, l, et u sont les règles réelles.

  • : est une règle "no-op" (sans opération), ce qui signifie "essayer le mot tel quel".
  • l convertit le mot en minuscules.
  • u convertit le mot en majuscules.

Plus loin dans le fichier, vous trouveriez des règles plus complexes comme c (mettre la première lettre en majuscule) et $1 (ajouter le chiffre '1'). Ces transformations simples augmentent considérablement le nombre de candidats de mots de passe.

Appliquer un fichier de règles à une attaque par dictionnaire avec le drapeau -r

Il est maintenant temps de libérer la puissance des règles de transformation. Dans cette étape, vous allez relancer l'attaque par dictionnaire, mais cette fois, vous demanderez à John the Ripper d'utiliser le fichier best64.rule.

Vous pouvez le faire en ajoutant le drapeau -r (raccourci pour --rules) à la commande. Cela indique à john d'appliquer chaque règle du fichier spécifié à chaque mot de wordlist.txt.

Exécutez la commande suivante dans votre terminal :

john --wordlist=wordlist.txt -r=./best64.rule shadow.txt

Cette fois, l'attaque devrait réussir très rapidement. La sortie sera différente.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Secret123        (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:35) 10.00g/s 61538p/s 61538c/s 61538C/s Secret12..Secret123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Succès ! La ligne Secret123 (testuser) indique que le mot de passe a été trouvé. John the Ripper a trouvé le bon mot de passe en appliquant les règles de best64.rule au mot "secret".

Comparer les résultats d'attaque avec et sans règles

Dans cette dernière étape, vous allez visualiser formellement le mot de passe trouvé et réfléchir à la différence apportée par les règles.

Bien que le mot de passe ait été affiché dans la sortie de l'étape précédente, la manière standard de visualiser tous les mots de passe trouvés pour un fichier de hachage donné est d'utiliser le drapeau --show.

Exécutez la commande suivante :

john --show shadow.txt

Cette commande affichera tous les mots de passe que John a trouvés avec succès pour le fichier shadow.txt.

testuser:Secret123:17119:0:99999:7:::

1 password hash cracked, 0 left

La sortie montre clairement testuser:Secret123. Cela confirme le mot de passe trouvé.

En comparant les résultats, la conclusion est claire :

  • Sans règles (Étape 1) : L'attaque a échoué car "secret" n'était pas le mot de passe.
  • Avec règles (Étape 4) : L'attaque a réussi. John a pris le mot "secret", a appliqué une règle de capitalisation pour obtenir "Secret", puis une règle d'ajout de nombre pour obtenir "Secret123", ce qui a correspondu.

Cela démontre que les règles de transformation ne sont pas seulement une fonctionnalité utile ; elles sont essentielles pour rendre les attaques par dictionnaire efficaces contre les habitudes de mots de passe du monde réel.

Résumé

Dans ce laboratoire, vous avez expérimenté la différence pratique entre une simple attaque par dictionnaire et une attaque améliorée par des règles.

Vous avez appris à :

  • Lancer une attaque par dictionnaire de base avec John the Ripper et constater ses limites.
  • Comprendre le concept des règles de transformation et localiser où elles sont stockées.
  • Examiner la structure d'un fichier de règles.
  • Appliquer un ensemble de règles à une attaque par dictionnaire en utilisant le drapeau -r pour améliorer considérablement son efficacité.
  • Visualiser les mots de passe trouvés et confirmer le succès de l'attaque basée sur les règles.

En transformant des mots de dictionnaire simples en milliers de variations potentielles, les règles de transformation sont un outil fondamental dans la boîte à outils de tout auditeur de mots de passe ou professionnel de la sécurité.