Options avancées de ligne de commande pour John the Ripper

Kali LinuxBeginner
Pratiquer maintenant

Introduction

John the Ripper est un outil rapide de cassage de mots de passe, disponible pour de nombreuses variantes d'Unix, macOS, Windows et DOS. Son objectif principal est de détecter les mots de passe Unix faibles. Outre plusieurs types de hachages de mots de passe crypt(3) les plus couramment trouvés sur divers systèmes Unix, la version améliorée par la communauté prend en charge nativement les hachages Kerberos AFS et Windows LM, en plus de centaines d'autres types de hachages et de chiffrements.

Dans ce laboratoire, vous approfondirez les capacités de John the Ripper en explorant certaines de ses options de ligne de commande avancées. La compréhension de ces options vous permettra d'affiner vos tentatives de cassage de mots de passe, de gérer les sessions de longue durée et de rediriger la sortie pour une analyse plus poussée. Vous apprendrez à spécifier les formats de hachage, à appliquer des règles personnalisées, à gérer les sessions de cassage et à utiliser l'option --stdout pour générer des listes de mots.

Exploration détaillée de l'option --format

Dans cette étape, vous apprendrez à utiliser l'option --format dans John the Ripper. Cette option est cruciale lorsque l'on traite différents types de hachages de mots de passe, car elle indique à John quel type de hachage attendre et comment le traiter. John the Ripper prend en charge un large éventail de formats de hachage, des hachages crypt Unix traditionnels aux hachages spécifiques aux applications modernes.

Tout d'abord, listons les formats de hachage disponibles pris en charge par John the Ripper. Cela vous donnera une idée de la polyvalence de l'outil.

john --list=formats

Vous verrez une longue liste de formats. Par exemple, crypt pour les hachages Unix traditionnels, raw-md5 pour les hachages MD5 bruts, nt pour les hachages Windows NT, et bien d'autres.

Maintenant, essayons de casser un mot de passe de notre fichier passwords.txt, en ciblant spécifiquement un format connu. Nous avons un utilisateur user1 avec un hachage SHA512 crypt. Nous pouvons indiquer explicitement à John d'utiliser le format sha512crypt.

john --format=sha512crypt /home/labex/project/passwords.txt --wordlist=/home/labex/project/wordlist.txt

Si le mot de passe de user1 (qui est password123 dans notre configuration) se trouve dans la liste de mots, John le cassera.

Ensuite, essayons de casser un hachage LM (user5) et un hachage NT (user6) à partir du fichier passwords.txt. John peut souvent détecter automatiquement les formats, mais les spécifier explicitement avec --format peut être plus rapide et plus fiable, surtout lorsque l'on traite des types de hachage mixtes ou des formats moins courants.

john --format=lm /home/labex/project/passwords.txt --wordlist=/home/labex/project/wordlist.txt
john --format=nt /home/labex/project/passwords.txt --wordlist=/home/labex/project/wordlist.txt

Vous pourriez voir une sortie similaire à celle-ci, indiquant le processus de cassage :

Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (user1)
1g 0:00:00:00 DONE (2023-10-27 10:00) 100% (ETA: 10:00) 1.000g/s 1.000p/s 1.000c/s 1.000C/s password123
Session completed

Cette étape démontre l'importance de l'option --format pour un cassage de mots de passe efficace et précis.

Utilisation de l'option --rules avec des règles personnalisées

Dans cette étape, vous allez explorer l'option --rules, qui permet à John the Ripper d'appliquer un ensemble de règles prédéfinies ou personnalisées aux mots d'une liste de mots. Les règles sont des transformations puissantes qui peuvent être appliquées aux mots, telles que l'ajout de chiffres, le changement de casse ou la duplication de caractères, augmentant ainsi considérablement les chances de casser les mots de passe qui sont des variations de mots courants.

John est livré avec plusieurs ensembles de règles intégrés, tels que Wordlist (par défaut), Single et Jumbo. Vous pouvez lister les ensembles de règles disponibles en utilisant :

john --list=rules

Cette commande affichera une liste d'ensembles de règles.

Maintenant, utilisons un fichier de règles personnalisé. Nous avons créé un fichier de règles personnalisé simple nommé custom_rules.txt lors de la configuration, qui contient des règles comme :$[0-9] (ajouter un chiffre) et Az (mettre la première lettre en majuscule).

Essayons de casser user1 à nouveau, mais cette fois en utilisant nos règles personnalisées. Supposons que le mot de passe de user1 était Password123 (P majuscule, puis 123). Notre liste de mots ne contient que password. La règle Az mettra la première lettre en majuscule, et :$[0-9] ajoutera un chiffre.

john --wordlist=/home/labex/project/wordlist.txt --rules=/home/labex/project/custom_rules.txt /home/labex/project/passwords.txt --format=sha512crypt

Cette commande appliquera les règles de custom_rules.txt à chaque mot de wordlist.txt avant de les essayer contre les hachages. Par exemple, password pourrait devenir Password, password0, password1, etc., puis Password0, Password1, etc.

Vous pouvez également combiner les règles avec l'option --stdout (que nous aborderons dans l'étape suivante) pour voir quels mots sont générés par vos règles :

john --wordlist=/home/labex/project/wordlist.txt --rules=/home/labex/project/custom_rules.txt --stdout

Cette commande affichera tous les mots générés en appliquant custom_rules.txt à wordlist.txt sur votre terminal. Ceci est utile pour le débogage de vos ensembles de règles.

L'option --rules est une fonctionnalité puissante pour étendre l'efficacité des attaques par liste de mots en générant des variations courantes de mots de passe.

Comprendre les options --session et --restore

Dans cette étape, vous découvrirez les options --session et --restore, qui sont essentielles pour gérer les tâches de cassage de mots de passe de longue durée. Le cassage de mots de passe complexes peut prendre des heures, des jours, voire des semaines. Ces options vous permettent de sauvegarder l'état actuel d'une session de cassage et de la reprendre plus tard sans perdre votre progression.

Lorsque John the Ripper s'exécute, il crée automatiquement un fichier de session (généralement john.rec dans le répertoire d'exécution) pour sauvegarder son état. Cependant, l'utilisation de l'option --session vous permet de spécifier un nom personnalisé pour ce fichier de session, ce qui est utile lorsque vous exécutez plusieurs tâches de cassage simultanément ou lorsque vous souhaitez conserver des journaux de session spécifiques.

Commençons une session de cassage pour user1 et spécifions un nom de session :

john --session=my_cracking_session /home/labex/project/passwords.txt --wordlist=/home/labex/project/wordlist.txt --format=sha512crypt

Laissez le cassage s'exécuter pendant quelques secondes, puis appuyez sur Ctrl+C pour l'interrompre. Vous verrez un message indiquant que la session a été sauvegardée.

Maintenant, listez les fichiers dans votre répertoire actuel pour voir le fichier de session :

ls -l /home/labex/project/

Vous devriez voir un fichier nommé my_cracking_session.rec (ou similaire, selon la version et la configuration de John).

Pour reprendre la session interrompue, utilisez l'option --restore avec le nom de la session :

john --restore=my_cracking_session

John reprendra exactement là où il s'est arrêté. C'est incroyablement utile pour gérer des opérations de cassage à grande échelle ou lorsque votre système doit être redémarré.

Si vous ne spécifiez pas de nom de session avec --session, John utilisera un fichier de session par défaut. L'utilisation de --restore sans nom de session tentera de restaurer la session par défaut.

john --restore

Cette étape met en évidence comment gérer et reprendre efficacement vos efforts de cassage de mots de passe, en veillant à ce qu'aucune progression ne soit perdue.

Expérimenter avec --stdout pour la redirection de sortie

Dans cette étape, vous découvrirez l'option --stdout, qui est extrêmement utile pour générer des listes de mots ou tester des ensembles de règles sans effectuer réellement une tentative de cassage. Lorsqu'elle est utilisée avec --stdout, John the Ripper affichera les mots de passe candidats générés sur la sortie standard, qui peuvent ensuite être redirigés vers un fichier ou transmis à un autre outil.

C'est particulièrement puissant lorsqu'il est combiné avec des listes de mots et des règles. Vous pouvez utiliser John pour créer des listes de mots hautement personnalisées basées sur des listes existantes et des règles spécifiques.

Générons une liste de mots en appliquant notre custom_rules.txt à wordlist.txt et redirigeons la sortie vers un nouveau fichier appelé generated_wordlist.txt :

john --wordlist=/home/labex/project/wordlist.txt --rules=/home/labex/project/custom_rules.txt --stdout > /home/labex/project/generated_wordlist.txt

Après avoir exécuté la commande, vérifiez le contenu du fichier nouvellement créé :

cat /home/labex/project/generated_wordlist.txt

Vous devriez voir des mots comme password, Password, password0, password1, etc., générés par les règles.

Vous pouvez également utiliser --stdout pour générer des permutations d'un seul mot. Par exemple, pour générer des variations du mot "test" :

echo "test" | john --pipe --rules=/home/labex/project/custom_rules.txt --stdout

Ici, echo "test" | john --pipe transmet le mot "test" à l'entrée standard de John, et --pipe indique à John de lire depuis l'entrée standard. Le --stdout affiche ensuite les variations appliquées par les règles.

L'option --stdout est une fonctionnalité polyvalente pour le pré-traitement des listes de mots, la création de dictionnaires personnalisés pour d'autres outils de cassage, ou simplement pour comprendre comment vos règles transforment les mots.

Découvrir d'autres indicateurs de ligne de commande utiles

Dans cette dernière étape, vous explorerez brièvement quelques autres indicateurs de ligne de commande utiles qui peuvent améliorer votre utilisation de John the Ripper. Bien que nous n'entrions pas dans les détails pour chacun, savoir qu'ils existent peut vous aider dans divers scénarios.

  1. --show : Cette option affiche les mots de passe cassés lors d'une session précédente. Après avoir cassé des mots de passe, John les stocke dans son fichier john.pot. Vous pouvez les consulter en utilisant :

    john --show /home/labex/project/passwords.txt

    Cela affichera tous les mots de passe que John a réussi à casser à partir du fichier passwords.txt.

  2. --incremental : C'est un mode puissant pour les attaques par force brute. John générera des mots de passe basés sur des ensembles de caractères et des longueurs. Vous pouvez spécifier un mode (par exemple, alnum, digits, all).

    ## Cette commande s'exécutera longtemps, nous allons donc juste démontrer son utilisation.
    ## NE LAISSEZ PAS s'exécuter trop longtemps. Appuyez sur Ctrl+C pour l'arrêter après quelques secondes.
    john --incremental=digits /home/labex/project/passwords.txt --format=raw-md5

    Cette commande tente de casser des mots de passe en générant des combinaisons de chiffres.

  3. --fork=<N> : Cette option permet à John d'utiliser plusieurs cœurs de processeur ou threads pour le cassage, où <N> est le nombre de forks (processus) à utiliser. Cela peut accélérer considérablement le cassage sur les systèmes multi-cœurs.

    john --fork=2 /home/labex/project/passwords.txt --wordlist=/home/labex/project/wordlist.txt --format=sha512crypt

    Cela tentera de casser des mots de passe en utilisant 2 cœurs de processeur.

  4. --mask : Cette option vous permet d'effectuer des attaques par masque, où vous définissez un modèle spécifique pour le mot de passe. Par exemple, ?l?l?l?d?d essaierait toutes les combinaisons de 3 lettres et 2 chiffres.

    ## Cette commande s'exécutera longtemps, nous allons donc juste démontrer son utilisation.
    ## NE LAISSEZ PAS s'exécuter trop longtemps. Appuyez sur Ctrl+C pour l'arrêter après quelques secondes.
    john --mask=?l?l?l?d?d /home/labex/project/passwords.txt --format=raw-md5

    Cette commande tente de casser des mots de passe qui correspondent au masque spécifié.

Ce ne sont là que quelques-unes des nombreuses options avancées disponibles dans John the Ripper. L'exploration de la page man john ou de john --help révélera encore plus de possibilités pour des tâches spécialisées d'audit et de cassage de mots de passe.

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique de plusieurs options de ligne de commande avancées pour John the Ripper. Vous avez appris à spécifier précisément les formats de hachage à l'aide de --format, à appliquer des transformations puissantes aux listes de mots avec --rules et des fichiers de règles personnalisés, et à gérer les sessions de cassage de longue durée à l'aide de --session et --restore. De plus, vous avez exploré la polyvalence de --stdout pour générer des listes de mots personnalisées et avez brièvement abordé d'autres indicateurs utiles tels que --show, --incremental, --fork et --mask.

La maîtrise de ces options améliorera considérablement votre capacité à effectuer une audit et un cassage de mots de passe efficaces, vous rendant plus compétent dans l'utilisation de John the Ripper pour diverses tâches de sécurité. Continuez à explorer la documentation complète de John pour découvrir encore plus de fonctionnalités et de techniques avancées.