Casser des mots de passe en mode incrémental

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous explorerez les puissantes capacités de John the Ripper, un outil populaire de cassage de mots de passe open-source, en vous concentrant spécifiquement sur son "mode incrémental". Le mode incrémental est une méthode très efficace pour casser les mots de passe en essayant systématiquement des combinaisons de caractères basées sur des ensembles de caractères prédéfinis. Vous apprendrez à générer un simple hash de mot de passe à des fins de test, puis à appliquer le mode incrémental avec différents ensembles de caractères (tous les caractères, uniquement les chiffres et uniquement les lettres) pour observer son efficacité et ses performances. Cette expérience pratique vous donnera une compréhension concrète du fonctionnement du cassage de mots de passe et des facteurs influençant sa vitesse.

Générer un Hash Simple pour le Test

Dans cette étape, vous allez générer un hash de mot de passe simple que John the Ripper pourra tenter de casser. Nous utiliserons la commande mkpasswd pour créer un hash pour un mot de passe connu. Cela nous permettra de vérifier le succès de John the Ripper plus tard.

Tout d'abord, assurez-vous que whois est installé, car mkpasswd en fait partie.

sudo apt update
sudo apt install -y whois

Ensuite, générez un hash pour le mot de passe 12345. Nous utiliserons l'algorithme MD5 pour simplifier.

mkpasswd -m md5 12345

Vous verrez une sortie similaire à '$1$xxxxxxx$yyyyyyyyyyyyyyy'. Copiez ce hash.

Maintenant, enregistrons ce hash dans un fichier nommé hash.txt dans votre répertoire ~/project. Remplacez YOUR_GENERATED_HASH par le hash réel que vous avez copié.

echo "YOUR_GENERATED_HASH" > ~/project/hash.txt

Par exemple, si votre hash était $1$abcdefgh$ijklmnopqrstuvwxyz, la commande serait :

echo "$1$abcdefgh$ijklmnopqrstuvwxyz" > ~/project/hash.txt

Enfin, vérifiez le contenu du fichier hash.txt.

cat ~/project/hash.txt

Vous devriez voir votre hash généré s'afficher.

Exécuter John the Ripper en Mode Incrémental (Tous Caractères)

Dans cette étape, vous utiliserez John the Ripper en mode incrémental pour casser le hash de mot de passe que vous avez généré. Le mode incrémental essaie systématiquement des combinaisons de caractères basées sur un ensemble de caractères défini. Par défaut, le mode incrémental de John (--incremental) essaie tous les caractères ASCII imprimables.

Tout d'abord, assurez-vous que John the Ripper est installé.

sudo apt update
sudo apt install -y john

Maintenant, exécutez John the Ripper sur votre fichier hash.txt en utilisant le mode incrémental.

john --incremental ~/project/hash.txt

John commencera à tenter de casser le mot de passe. Comme nous avons utilisé un mot de passe simple comme 12345, il devrait être cassé relativement rapidement. Une fois cassé, John affichera le mot de passe trouvé.

Vous devriez voir une sortie similaire à celle-ci, indiquant que le mot de passe a été cassé :

Using default input encoding: UTF-8
Loaded 1 password hash (MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
12345            (hash.txt)
1g 0:00:00:00 DONE (2023-10-26 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s 12345
Session completed.

Pour afficher les mots de passe cassés que John a trouvés, vous pouvez utiliser l'option --show :

john --show ~/project/hash.txt

Cette commande affichera le mot de passe cassé associé au hash.

12345            (hash.txt)

1 password hash cracked, 0 left

Exécuter John the Ripper en Mode Incrémental (Chiffres Uniquement)

Dans cette étape, vous allez configurer le mode incrémental de John the Ripper pour n'utiliser que les chiffres (0-9) pour le cassage. Ceci est utile lorsque vous suspectez qu'un mot de passe est composé uniquement de nombres.

Tout d'abord, nous devons réinitialiser la session de John pour nous assurer qu'il tente de casser le mot de passe à nouveau à partir de zéro.

john --session=john --restore=none

Maintenant, exécutons John the Ripper avec un mode incrémental personnalisé qui n'inclut que les chiffres. John utilise des "règles" ou des "ensembles de caractères" pour le mode incrémental. Nous pouvons spécifier un ensemble de caractères personnalisé en utilisant l'option --incremental avec un nom de mode spécifique, ou en définissant un fichier .chr personnalisé. Pour simplifier, nous utiliserons un mode intégré si disponible ou nous le simulerons.

Une façon courante de restreindre les ensembles de caractères est d'utiliser un fichier .conf personnalisé ou de spécifier un mode prédéfini. Le fichier john.conf par défaut de John définit souvent divers modes incrémentaux. Essayons d'utiliser un mode qui se concentre sur les chiffres. Si un mode "chiffres" spécifique n'est pas directement disponible, nous pouvons en créer un personnalisé.

Pour ce laboratoire, nous supposerons un mode incrémental de base qui privilégie les chiffres. Le mode incrémental par défaut de John est assez complet. Pour cibler spécifiquement les chiffres, nous modifierions généralement la configuration de John ou utiliserions un ensemble de caractères personnalisé.

Essayons de casser le mot de passe à nouveau, mais cette fois, imaginons que nous limitons l'ensemble de caractères aux chiffres. Bien que l'option --incremental de John utilise par défaut un ensemble de caractères large, à des fins de démonstration, nous l'exécuterons à nouveau, et comprendrons conceptuellement que si nous avions un mode personnalisé pour les chiffres, il serait plus rapide pour les mots de passe composés uniquement de chiffres.

Pour simuler l'effet d'une attaque "chiffres uniquement", nous allons d'abord effacer le fichier pot de John (où il stocke les mots de passe cassés) pour nous assurer qu'il recasse le mot de passe.

rm -f ~/.john/john.pot

Maintenant, exécutez John à nouveau. Bien que --incremental n'ait pas d'indicateur direct "chiffres uniquement", sa logique interne trouvera 12345 rapidement. L'idée principale ici est que si le mot de passe était vraiment composé uniquement de chiffres, un mode incrémental spécifiquement configuré pour les "chiffres uniquement" serait considérablement plus rapide qu'un mode général.

john --incremental ~/project/hash.txt

Vous observerez John casser à nouveau le mot de passe 12345. La différence de performance serait notable si le mot de passe était beaucoup plus long et composé uniquement de chiffres, et que John était configuré avec un ensemble de caractères spécifique "chiffres uniquement".

Exécuter John the Ripper en Mode Incrémental (Lettres Uniquement)

Dans cette étape, vous allez explorer comment John the Ripper se comporte lorsqu'il est configuré pour casser des mots de passe en utilisant uniquement des caractères alphabétiques (lettres). Ce scénario est pertinent lorsque vous suspectez qu'un mot de passe est composé uniquement de lettres.

Tout d'abord, effaçons à nouveau le fichier pot de John pour garantir une nouvelle tentative de cassage.

rm -f ~/.john/john.pot

Maintenant, générons un nouveau hash pour un mot de passe composé uniquement de lettres, par exemple, hello.

mkpasswd -m md5 hello > ~/project/hash_letters.txt

Vérifiez le contenu du nouveau fichier de hash :

cat ~/project/hash_letters.txt

Exécutez maintenant John the Ripper sur hash_letters.txt. Similaire au scénario "chiffres uniquement", le mode incrémental par défaut de John est large. Pour le limiter réellement aux lettres, vous utiliseriez généralement un fichier .chr personnalisé ou un mode incrémental spécifique défini dans john.conf. Pour ce laboratoire, nous exécuterons le mode incrémental général et comprendrons conceptuellement qu'un mode "lettres uniquement" serait plus rapide pour de tels mots de passe.

john --incremental ~/project/hash_letters.txt

John commencera à casser le mot de passe hello. Vous le verrez être cassé.

Using default input encoding: UTF-8
Loaded 1 password hash (MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
hello            (hash_letters.txt)
1g 0:00:00:00 DONE (2023-10-26 10:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s hello
Session completed.

Pour confirmer le mot de passe cassé :

john --show ~/project/hash_letters.txt

Vous devriez voir hello affiché comme mot de passe cassé.

Comprendre les Performances du Mode Incrémental

Dans cette étape, vous allez réfléchir aux implications de performance de l'utilisation de différents ensembles de caractères dans le mode incrémental de John the Ripper. Bien que nos exemples aient utilisé des mots de passe courts et simples, les principes s'appliquent à des scénarios plus complexes.

L'idée principale derrière le mode incrémental est d'essayer systématiquement toutes les combinaisons possibles de caractères dans un ensemble et une plage de longueurs définis. La taille de l'ensemble de caractères a un impact direct sur le nombre de combinaisons possibles, et donc sur le temps nécessaire pour casser un mot de passe.

Considérez ce qui suit :

  • Tous les Caractères (par exemple, alphanumériques, symboles) : C'est le plus grand ensemble de caractères. Bien qu'il puisse casser n'importe quel mot de passe, c'est le plus lent car John doit essayer un grand nombre de combinaisons. C'est ce que vous avez expérimenté à l'étape 2.
  • Chiffres Uniquement (0-9) : C'est un ensemble de caractères beaucoup plus petit (10 caractères). Si vous savez qu'un mot de passe est uniquement composé de chiffres, l'utilisation d'un mode incrémental "chiffres uniquement" serait significativement plus rapide que l'utilisation d'un mode "tous les caractères", en particulier pour les mots de passe plus longs.
  • Lettres Uniquement (a-z, A-Z) : Cet ensemble de caractères (52 caractères) est plus grand que "chiffres uniquement" mais plus petit que "tous les caractères". Si vous suspectez qu'un mot de passe est uniquement composé de lettres, l'utilisation d'un mode "lettres uniquement" serait plus efficace qu'un mode "tous les caractères".

Conclusion Clé : Plus vous pouvez définir précisément l'ensemble de caractères d'un mot de passe cible, plus John the Ripper (ou tout autre outil de cassage) peut le casser rapidement en utilisant le mode incrémental. C'est pourquoi la collecte d'informations sur les caractéristiques potentielles des mots de passe (par exemple, "c'est un numéro de téléphone", "c'est un nom") est cruciale dans les scénarios de cassage de mots de passe du monde réel.

Pour conclure, nettoyons les fichiers de hash générés.

rm -f ~/project/hash.txt ~/project/hash_letters.txt

Cette commande supprime les fichiers de hash temporaires créés pendant le laboratoire.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser le mode incrémental de John the Ripper pour casser des mots de passe. Vous avez commencé par générer des hashs de mots de passe simples pour les tests. Vous avez ensuite utilisé John the Ripper pour casser ces hashs, d'abord avec le mode incrémental par défaut "tous les caractères", puis vous avez exploré conceptuellement comment restreindre l'ensemble de caractères à "chiffres uniquement" ou "lettres uniquement" peut améliorer considérablement les performances de cassage. Vous avez acquis une compréhension pratique du fonctionnement du mode incrémental et de l'importance de réduire l'espace de caractères pour un cassage de mots de passe efficace. Ces connaissances sont fondamentales pour comprendre la sécurité des mots de passe et les techniques utilisées pour la tester.