Comprendre les modes de base de John the Ripper

Kali LinuxBeginner
Pratiquer maintenant

Introduction

John the Ripper (JtR) est un outil open-source puissant et largement utilisé pour l'audit de la sécurité des mots de passe et la récupération de mots de passe. Il peut être utilisé par les administrateurs système pour tester la robustesse des mots de passe sur leurs systèmes et par les professionnels de la sécurité pour récupérer des mots de passe perdus. Comprendre ses différents modes de fonctionnement est essentiel pour l'utiliser efficacement.

Dans ce laboratoire, vous acquerrez une expérience pratique des modes de cassage de base de John the Ripper. Vous apprendrez à utiliser ses options d'aide et explorerez son comportement par défaut. Ensuite, vous plongerez dans ses quatre modes principaux : Single Crack, Wordlist, Incremental et External, en apprenant le but et l'utilisation de base de chacun.

Explorer les options d'aide de John the Ripper

Dans cette étape, vous commencerez par explorer la documentation d'aide intégrée de John the Ripper. Le menu d'aide est une ressource essentielle qui fournit une référence rapide pour la syntaxe de l'outil, les options de ligne de commande et les modes disponibles.

Pour afficher la page d'aide principale, exécutez simplement la commande john avec le drapeau --help. Cela affichera un résumé des options les plus courantes et de leurs descriptions.

Exécutez la commande suivante dans votre terminal :

john --help

Vous verrez une sortie détaillée listant diverses options. Portez une attention particulière aux drapeaux qui spécifient différents modes de cassage, tels que --single, --wordlist et --incremental.

John the Ripper 1.9.0-jumbo-1 [linux-gnu 64-bit x86_64 AVX2 AC]
Copyright (c) 1996-2019 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]

--single                   "single crack" mode
--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin
--rules                    enable word mangling rules for wordlist mode
--incremental[=MODE]       "incremental" mode [using section MODE]
--external=MODE            external mode or word filter
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             new session [called NAME]
--status[=NAME]            print status of a session [called NAME]
--show[=LEFT]              show cracked passwords [if =LEFT, then uncracked]
--test[=TIME]              run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..]  [don't] load this (these) user(s) only
--groups=[-]GID[,..]       load users of this (these) group(s) only
... (output truncated) ...

Cette commande vous donne un aperçu solide de ce que John the Ripper peut faire. Dans les étapes suivantes, nous explorerons certains de ces modes en pratique.

Identifier les modes de cassage par défaut de John the Ripper

Dans cette étape, vous apprendrez comment John the Ripper fonctionne par défaut. Lorsque vous exécutez john sur un fichier de mots de passe sans spécifier de mode, il ne choisit pas une seule méthode. Au lieu de cela, il parcourt intelligemment ses modes les plus efficaces dans un ordre par défaut : d'abord le mode "single", puis le mode "wordlist", et enfin le mode "incremental". Cela offre un bon équilibre entre vitesse et exhaustivité.

Notre script de configuration a déjà créé un fichier nommé mypasswd.txt dans votre répertoire actuel (~/project). Ce fichier contient une entrée utilisateur avec un mot de passe simple et haché.

Exécutons John the Ripper sur ce fichier sans aucun drapeau de mode pour observer son comportement par défaut.

john mypasswd.txt

John commencera le processus de cassage. Vous verrez des mises à jour de statut pendant qu'il travaille. Comme le mot de passe est simple, il devrait être cassé très rapidement.

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

Comme vous pouvez le constater, John a réussi à casser le mot de passe (password) de l'utilisateur testuser. Il suggère également utilement d'utiliser l'option --show pour afficher les mots de passe cassés ultérieurement.

Pour confirmer le mot de passe cassé, vous pouvez utiliser l'option --show :

john --show mypasswd.txt

Cela affichera tous les mots de passe qui ont été cassés avec succès pour le fichier donné.

testuser:password:1001:1001::/home/testuser:/bin/sh

1 password hash cracked, 0 left

Cela confirme que la séquence de modes par défaut a été réussie.

Différencier le mode "Single Crack" et le mode "Wordlist"

Dans cette étape, vous découvrirez deux des modes de cassage les plus fondamentaux : "single crack" et "wordlist".

Tout d'abord, il est important de savoir que John the Ripper stocke les mots de passe cassés dans un fichier appelé john.pot, situé dans le répertoire ~/.john/. Pour relancer une session de cassage sur un mot de passe déjà cassé, nous devons d'abord supprimer ce fichier. Faisons-le maintenant.

rm ~/.john/john.pot

Mode "Single Crack"

Le mode "single crack" est un mode rapide et efficace qui génère des candidats de mots de passe basés sur des informations sur le compte utilisateur lui-même, telles que le nom d'utilisateur ou les données du champ GECOS. Il applique des mutations courantes (comme l'ajout de chiffres ou de symboles) à ces candidats.

Exécutons John en mode "single crack" explicitement en utilisant le drapeau --single.

john --single mypasswd.txt

La sortie sera similaire à l'exécution par défaut, car c'est le premier mode que John essaie. Il est très efficace contre les mots de passe qui sont des variations du nom d'utilisateur.

Mode "Wordlist"

Le mode "wordlist" est l'une des techniques de cassage de mots de passe les plus populaires. Il utilise une liste de mots pré-compilée (un dictionnaire ou une liste de mots) et essaie chacun d'eux comme mot de passe. John est livré avec une liste de mots par défaut, généralement située à /usr/share/john/password.lst.

Supprimons d'abord à nouveau le fichier pot pour réinitialiser la session.

rm ~/.john/john.pot

Maintenant, exécutons John en mode "wordlist", en le dirigeant explicitement vers sa liste de mots par défaut à l'aide du drapeau --wordlist.

john --wordlist=/usr/share/john/password.lst mypasswd.txt

Vous verrez John charger la liste de mots et tenter de casser le hachage. Comme "password" est un mot de passe très courant, il est inclus dans la liste par défaut et sera trouvé presque instantanément.

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

Cela démontre comment diriger John pour utiliser un fichier dictionnaire spécifique pour son attaque.

Comprendre les bases du mode incrémental

Dans cette étape, vous allez explorer le mode "incrémental". Ce mode est essentiellement une attaque par force brute. Il essaie systématiquement toutes les combinaisons possibles de caractères jusqu'à une certaine longueur. Bien que ce soit le mode le plus complet, il peut aussi être extrêmement long pour des mots de passe de complexité même modérée.

Le comportement du mode incrémental est défini dans le fichier john.conf, qui spécifie les ensembles de caractères (par exemple, Alnum pour alphanumérique, All pour tous les caractères) et les contraintes de longueur.

Tout d'abord, réinitialisons la session de cassage en supprimant à nouveau le fichier john.pot.

rm ~/.john/john.pot

Maintenant, exécutons John en mode incrémental. Nous spécifierons l'ensemble de caractères Digits, qui indique à John d'essayer toutes les combinaisons numériques possibles. Nous utilisons pour cela le drapeau --incremental.

john --incremental=Digits mypasswd.txt

Vous verrez John commencer à essayer des combinaisons comme "0", "1", "2", "00", "01", etc. Comme notre mot de passe est "password" (toutes lettres), cette attaque ne réussira pas. Vous pouvez appuyer sur Ctrl+C pour l'arrêter après quelques secondes.

Maintenant, essayons un ensemble de caractères plus approprié. Nous utiliserons le mode incrémental par défaut, qui commence généralement par des ensembles de caractères courants comme les lettres minuscules.

Réinitialisons la session une fois de plus :

rm ~/.john/john.pot

Exécutons la commande sans spécifier d'ensemble de caractères :

john --incremental mypasswd.txt

Cette fois, John utilisera sa séquence prédéfinie d'ensembles de caractères. Comme "password" est composé de lettres minuscules, l'ensemble de caractères Lower ou Alpha finira par le trouver.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:40) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Session completed

Le mode incrémental est votre dernier recours lorsque d'autres modes, plus rapides, ont échoué.

Découvrir les fonctionnalités du mode externe

Dans cette étape, vous découvrirez le mode "externe". C'est le mode le plus avancé et le plus flexible de John. Il vous permet de définir une logique de génération de mots de passe personnalisée en utilisant un langage de script de type C directement dans le fichier de configuration john.conf. C'est une approche puissante pour créer des attaques très ciblées que d'autres modes ne peuvent pas gérer.

Bien que la rédaction de scripts externes soit un sujet avancé, vous pouvez facilement utiliser les modes externes prédéfinis fournis avec John. Listons d'abord les modes externes disponibles définis dans /etc/john/john.conf.

grep '^\[' /etc/john/john.conf | grep 'External:'

Cette commande filtre le fichier de configuration pour vous montrer les noms des sections de mode externe.

[External:Compiler]
[External:Double]
[External:Hybrid]
[External:Keyboard]
[External:LanManager]
[External:Shift]
[External:Status]
[External:Wordlist]

Vous pouvez voir plusieurs fonctions externes intégrées. Essayons d'utiliser le mode externe Wordlist. Ce mode imite essentiellement le mode liste de mots standard mais est implémenté comme un script externe, ce qui en fait un bon exemple.

Tout d'abord, comme toujours, réinitialisons la session.

rm ~/.john/john.pot

Maintenant, exécutons John en utilisant le drapeau --external, en spécifiant le mode Wordlist.

john --external=Wordlist mypasswd.txt

La sortie sera très similaire à celle de l'exécution du mode liste de mots standard, car la logique sous-jacente est la même : elle utilise la liste de mots par défaut pour trouver le mot de passe.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:45) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Session completed

Le mode externe ouvre des possibilités quasi illimitées pour générer des candidats de mots de passe, ce qui en fait un outil pour les utilisateurs experts qui ont besoin d'implémenter une logique de cassage personnalisée.

Résumé

Dans ce laboratoire, vous avez exploré avec succès les modes de cassage fondamentaux de John the Ripper. Vous avez appris à naviguer dans ses options d'aide et observé son comportement par défaut, qui combine intelligemment plusieurs modes pour plus d'efficacité.

Vous avez acquis une expérience pratique avec :

  • Mode Single Crack : Un mode rapide qui utilise des informations spécifiques à l'utilisateur pour deviner les mots de passe.
  • Mode Wordlist : Une technique courante qui utilise un dictionnaire de mots.
  • Mode Incrémental : Un mode de force brute complet qui essaie toutes les combinaisons de caractères.
  • Mode Externe : Un mode avancé et scriptable pour créer des règles de génération de mots de passe personnalisées.

Comprendre ces modes principaux est la première étape pour maîtriser John the Ripper pour les tâches d'audit et de récupération de la sécurité des mots de passe. Vous disposez maintenant des connaissances fondamentales pour choisir le bon mode pour différents scénarios.