Casser des mots de passe ZIP avec John the Ripper

HydraBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez apprendre à casser un fichier ZIP protégé par mot de passe en utilisant John the Ripper, un outil de récupération de mots de passe aussi populaire que puissant. Cet exercice vous guidera à travers les étapes fondamentales d'un processus de cassage de mot de passe, de la configuration des outils nécessaires à la vérification du mot de passe trouvé. À la fin de cet atelier, vous comprendrez comment les empreintes (hashes) de mots de passe sont extraites et utilisées dans des attaques par dictionnaire ou par force brute, ce qui souligne l'importance d'utiliser des mots de passe robustes pour la protection des fichiers.

Installer les outils requis

Avant de pouvoir commencer à casser des mots de passe, nous devons installer les logiciels nécessaires. Dans cette étape, vous allez installer John the Ripper (JtR), l'outil principal de cet atelier, ainsi que l'utilitaire zip, que nous utiliserons pour créer notre fichier cible. Nous utiliserons le gestionnaire de paquets apt, qui est le standard pour les systèmes basés sur Debian comme Ubuntu.

Tout d'abord, installez les dépendances requises et l'utilitaire zip en exécutant les commandes suivantes dans votre terminal. L'option -y confirme automatiquement l'installation.

sudo apt update
sudo apt install -y git build-essential libssl-dev zlib1g-dev zip
sudo apt install -y yasm pkg-config libgmp-dev libpcap-dev libbz2-dev

Le paquet john standard des dépôts apt n'inclut pas l'utilitaire zip2john dont nous avons besoin. Nous allons cloner et compiler John the Ripper depuis le dépôt officiel pour obtenir la suite d'outils complète.

cd ~/project
git clone --depth 1 https://github.com/openwall/john -b bleeding-jumbo john
cd john/src
./configure && make -s clean && make -sj4

Attention : Le processus de compilation peut prendre de 3 à 5 minutes. Merci de patienter.

Une fois la compilation terminée, créez des alias pour les outils de John the Ripper afin de pouvoir les utiliser de n'importe où :

echo 'alias john="$HOME/project/john/run/john"' >> ~/.zshrc
echo 'alias zip2john="$HOME/project/john/run/zip2john"' >> ~/.zshrc
source ~/.zshrc

Vérifiez maintenant que john et zip2john fonctionnent correctement depuis n'importe quel répertoire :

john

Vous devriez voir une sortie similaire à celle-ci, indiquant que John the Ripper est correctement installé :

John the Ripper 1.9.0-jumbo-1+bleeding-7a8c81abd9 2025-08-23 23:43:48 +0200 OMP [linux-gnu 64-bit x86_64 AVX-512 AC]
Copyright (c) 1996-2025 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]

Use --help to list all available options.

Vérifiez également que zip2john est disponible :

zip2john

Cela devrait afficher les informations d'utilisation de l'utilitaire zip2john.

Vous pouvez maintenant revenir à votre répertoire de projet pour la suite de l'atelier :

cd ~/project

Les outils nécessaires étant installés, vous êtes maintenant prêt à créer un fichier protégé par mot de passe pour notre exercice de cassage.

Créer un fichier ZIP protégé par mot de passe

Pour s'entraîner au cassage de mot de passe, nous avons d'abord besoin d'une cible. Dans cette étape, vous allez créer un fichier texte simple, puis l'archiver dans un fichier ZIP protégé par mot de passe. Cela simulera un scénario réel où des fichiers sensibles sont sécurisés par un mot de passe.

Tout d'abord, assurez-vous d'être dans le répertoire du projet. Votre terminal devrait déjà s'y trouver par défaut.

cd ~/project

Ensuite, créez un fichier texte simple nommé secret.txt. Ce fichier sera placé à l'intérieur de notre archive ZIP protégée.

echo "my secret data" > secret.txt

Maintenant, utilisez la commande zip avec l'option -e (pour le chiffrement) afin de créer une archive protégée nommée secret.zip contenant secret.txt.

zip -e secret.zip secret.txt

Après avoir exécuté la commande, vous serez invité à saisir puis à vérifier un mot de passe. Pour cet atelier, utilisez le mot de passe faible password123. Cela rendra le processus de cassage plus rapide à des fins de démonstration.

Note : Lorsque vous tapez le mot de passe, aucun caractère ne s'affichera à l'écran — c'est une mesure de sécurité normale, pas un blocage du système. Tapez simplement le mot de passe et appuyez sur Entrée.

Enter password:
Verify password:
  adding: secret.txt (stored 0%)

Enfin, vous pouvez lister les fichiers du répertoire pour confirmer que secret.zip a bien été créé.

ls -l

Vous devriez voir secret.txt et secret.zip dans la sortie.

total 8
-rw-rw-r-- 1 labex labex  15 Aug 29 09:57 secret.txt
-rw-rw-r-- 1 labex labex 213 Aug 29 09:57 secret.zip

Vous avez maintenant créé avec succès un fichier ZIP protégé par mot de passe, qui nous servira de cible dans les étapes suivantes.

Extraire l'empreinte (hash) du fichier ZIP

John the Ripper ne travaille pas directement sur le fichier ZIP lui-même. Il travaille sur l'empreinte (hash) du mot de passe du fichier. Un hash est une chaîne de caractères unique qui représente le mot de passe. Dans cette étape, vous utiliserez un utilitaire inclus avec John the Ripper appelé zip2john pour extraire ce hash.

Exécutez la commande zip2john sur votre fichier secret.zip. Nous allons rediriger la sortie à l'aide de l'opérateur > pour enregistrer le hash dans un nouveau fichier nommé zip_hash.txt :

zip2john secret.zip > zip_hash.txt

Lorsque vous exécutez cette commande, vous verrez des informations détaillées sur le terminal concernant la structure du fichier ZIP :

ver 1.0 efh 5455 efh 7875 secret.zip/secret.txt PKZIP Encr: 2b chk, TS_chk, cmplen=27, decmplen=15, crc=AF1563E8 ts=4F26 cs=4f26 type=0

Ces informations montrent les détails du fichier chiffré, y compris les paramètres de compression et de chiffrement.

Pour voir à quoi ressemble le hash extrait, utilisez la commande cat pour afficher le contenu de zip_hash.txt :

cat zip_hash.txt

La sortie sera une seule ligne de texte ressemblant à ceci :

secret.zip/secret.txt:$pkzip$1*2*2*0*1b*f*af1563e8*0*44*0*1b*4f26*50dbe9bcf15eafdb00ef774e1eaffef116bf5e0597fa55bb8b364c*$/pkzip$:secret.txt:secret.zip::secret.zip

La chaîne de hash comprend le nom du fichier d'origine, le type de chiffrement ($pkzip$) et les données chiffrées. Ce fichier de hash étant créé, vous êtes maintenant prêt à utiliser John the Ripper pour casser le mot de passe.

Casser le mot de passe

Maintenant que vous avez le hash du mot de passe, vous pouvez utiliser John the Ripper pour le casser. JtR utilisera ses paramètres par défaut, qui incluent un dictionnaire de mots de passe courants et des règles pour trouver une correspondance avec le hash.

Pour lancer le processus de cassage, exécutez simplement la commande john en fournissant votre fichier de hash, zip_hash.txt, comme entrée :

john zip_hash.txt

Comme nous avons utilisé un mot de passe très faible, John the Ripper devrait le casser rapidement. La sortie affichera la progression et le résultat. John essaiera différents modes d'attaque — d'abord le mode "single", puis le mode liste de mots (wordlist) :

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Note: Passwords longer than 21 [worst case UTF-8] to 63 [ASCII] rejected
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
0g 0:00:00:00 DONE 1/3 (2025-08-29 10:24) 0g/s 2619Kp/s 2619Kc/s 2619KC/s Txtsecret1900..Tzip1900
Proceeding with wordlist:/home/labex/project/john/run/password.lst
Enabling duplicate candidate password suppressor using 256 MiB
password123      (secret.zip/secret.txt)
1g 0:00:00:00 DONE 2/3 (2025-08-29 10:24) 8.333g/s 286541p/s 286541c/s 286541C/s 123456..nelly1
Use the "--show" option to display all of the cracked passwords reliably
Session completed

La ligne password123 (secret.zip/secret.txt) indique que le mot de passe a été cassé avec succès. Notez que John essaie d'abord le mode "single" (qui n'a pas trouvé le mot de passe), puis passe au mode wordlist où il réussit à trouver le mot de passe.

Une fois qu'un mot de passe a été cassé, John le stocke dans un fichier. Pour afficher les mots de passe cassés pour un fichier de hash donné, vous pouvez utiliser l'option --show.

john --show zip_hash.txt

Cette commande affichera le mot de passe cassé dans un format clair, en le liant au fichier source.

secret.zip/secret.txt:password123:secret.txt:secret.zip::secret.zip

1 password hash cracked, 0 left

Vous avez utilisé avec succès John the Ripper pour récupérer le mot de passe à partir du hash du fichier ZIP. La dernière étape consiste à vérifier que ce mot de passe fonctionne.

Vérifier l'accès avec le mot de passe cassé

La dernière étape de ce processus consiste à confirmer que le mot de passe que vous avez cassé est correct. Vous ferez cela en utilisant le mot de passe pour extraire le contenu de l'archive secret.zip. Cette étape valide le résultat de vos efforts de cassage.

Utilisez la commande unzip pour extraire l'archive.

unzip secret.zip

La commande vous demandera le mot de passe. Entrez password123, qui est le mot de passe récupéré par John the Ripper.

Archive:  secret.zip
[secret.zip] secret.txt password:
replace secret.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: yes
 extracting: secret.txt

Il se peut qu'une invite vous demande si vous souhaitez remplacer le fichier secret.txt existant (s'il est toujours présent depuis l'étape 2). Tapez yes pour confirmer le remplacement. Si le mot de passe est correct, la commande unzip extraira secret.txt dans votre répertoire actuel sans aucune erreur.

Pour terminer la vérification, affichez le contenu du fichier extrait pour vous assurer que les données sont intactes.

cat secret.txt

La sortie devrait correspondre au texte original que nous avons créé à l'étape 2.

my secret data

En extrayant avec succès le fichier et en visualisant son contenu original, vous avez confirmé que le mot de passe récupéré par John the Ripper est correct. Cela termine le cycle complet : création d'un fichier protégé, cassage de son mot de passe et vérification du résultat.

Résumé

Dans cet atelier, vous avez acquis une expérience pratique du cassage de mots de passe avec John the Ripper. Vous avez appris à installer les outils nécessaires, à créer un fichier ZIP protégé par mot de passe et à extraire son empreinte de mot de passe à l'aide de zip2john. Vous avez ensuite utilisé avec succès John the Ripper pour casser le mot de passe à partir du hash et, enfin, vous avez vérifié le mot de passe cassé en l'utilisant pour accéder au fichier protégé. Cet exercice démontre une technique fondamentale des tests de sécurité et souligne la vulnérabilité des mots de passe faibles.