Introduction
Dans ce laboratoire, vous apprendrez le processus fondamental de décryptage d'une archive 7z protégée par mot de passe. 7-Zip est un archiveur de fichiers populaire avec un taux de compression élevé, et il permet aux utilisateurs de chiffrer des archives avec un mot de passe. Nous allons simuler un scénario où vous devez récupérer un mot de passe oublié.
Vous utiliserez une combinaison d'outils puissants et standards de l'industrie : p7zip pour créer l'archive, la suite John the Ripper pour extraire le hash du mot de passe, et Hashcat pour effectuer le décryptage proprement dit. Cette expérience pratique vous guidera à travers la création d'une cible, l'extraction de son hash cryptographique, et l'utilisation d'une attaque par masque pour trouver efficacement le mot de passe.
Créer une archive 7z protégée par mot de passe
Dans cette étape, nous allons commencer par créer un fichier d'exemple, puis le compresser dans une archive 7z protégée par mot de passe. Cette archive sera notre cible pour le processus de décryptage du mot de passe dans les étapes suivantes.
Tout d'abord, créons un fichier texte simple nommé secret.txt dans votre répertoire actuel, ~/project.
echo "This is a secret file." > secret.txt
Maintenant, nous allons utiliser la commande 7z pour créer une archive nommée secret.7z à partir de secret.txt. Nous la protégerons avec le mot de passe LabEx2024. L'option -p est utilisée pour spécifier directement le mot de passe.
7z a -pLabEx2024 secret.7z secret.txt
Vous devriez voir une sortie indiquant que le fichier a été créé et compressé avec succès.
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)
Scanning the drive:
1 file, 25 bytes (1 KiB)
Creating archive: secret.7z
Items to compress: 1
Files read from disk: 1
Archive size: 228 bytes (1 KiB)
Everything is Ok
Vous avez maintenant créé avec succès l'archive protégée par mot de passe avec laquelle nous allons travailler.
Utiliser 7z2john.pl pour extraire le hash
Dans cette étape, vous allez extraire le hash du mot de passe de l'archive secret.7z. Les outils de décryptage de mot de passe comme Hashcat ne fonctionnent pas directement sur le fichier archive ; ils ont besoin d'une représentation textuelle spécifique de la clé de chiffrement du mot de passe, connue sous le nom de hash.
Nous utiliserons 7z2john, un utilitaire de la suite John the Ripper, spécialement conçu pour extraire ces hashes des archives 7z.
Exécutez la commande suivante pour traiter secret.7z et enregistrer son hash dans un nouveau fichier appelé hash.txt. Le symbole > redirige la sortie de la commande vers le fichier spécifié.
/usr/sbin/7z2john secret.7z > hash.txt
La commande ne produira aucune sortie visible dans le terminal car elle a été redirigée. Pour confirmer que le hash a été extrait, affichez le contenu de hash.txt :
cat hash.txt
La sortie sera une longue chaîne de caractères, qui est le hash représentant le mot de passe. Elle sera précédée du nom du fichier.
secret.7z:$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301
Vous avez maintenant le hash prêt pour la prochaine étape de préparation.
Nettoyer le hash extrait pour Hashcat
Dans cette étape, nous devons préparer le hash extrait pour Hashcat. La sortie de 7z2john est formatée pour John the Ripper et inclut le nom du fichier comme préfixe (par exemple, secret.7z:). Hashcat, cependant, n'a besoin que de la chaîne de hash pure pour fonctionner correctement.
Nous utiliserons la commande cut pour supprimer le préfixe du nom de fichier. La commande cut est un utilitaire simple pour extraire des sections de lignes de fichiers. Nous lui indiquerons d'utiliser le deux-points (:) comme délimiteur et de sélectionner le deuxième champ.
Exécutez la commande suivante pour nettoyer le hash et l'enregistrer dans un nouveau fichier, hashcat.txt :
cut -d':' -f2 hash.txt > hashcat.txt
-d':'définit le délimiteur comme un deux-points.-f2sélectionne le deuxième champ après la séparation.
Vérifions le contenu de notre nouveau fichier pour nous assurer que le préfixe a été supprimé.
cat hashcat.txt
La sortie devrait maintenant être uniquement la chaîne de hash, sans la partie secret.7z:.
$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301
Le hash est maintenant dans le format correct pour Hashcat.
Sélectionner le mode de hash pour 7-Zip
Dans cette étape, nous allons identifier le "mode de hash" correct dont Hashcat a besoin pour comprendre et traiter notre hash 7-Zip. Hashcat prend en charge des centaines de types de hash différents, et chacun d'eux a un code numérique unique. Vous devez spécifier le code correct pour qu'Hashcat fonctionne.
Nous pouvons trouver le mode pour 7-Zip en parcourant le menu d'aide de Hashcat. Nous utiliserons grep pour filtrer la sortie sur le terme "7-Zip".
hashcat --help | grep -i "7-Zip"
Le drapeau -i dans grep rend la recherche insensible à la casse. La sortie vous montrera le numéro de mode associé aux archives 7-Zip.
11600 | 7-Zip | Archives
Comme vous pouvez le voir dans la sortie, le mode de hash pour 7-Zip est 11600. Nous utiliserons ce numéro dans la prochaine étape lorsque nous lancerons l'attaque de décryptage.
Lancer une attaque par masque pour décrypter le mot de passe 7z
Dans cette dernière étape, nous utiliserons Hashcat pour décrypter le mot de passe. Nous effectuerons une "attaque par masque", qui est un type d'attaque par force brute très efficace lorsque vous avez une certaine connaissance de la structure du mot de passe.
Notre mot de passe est LabEx2024. Nous pouvons décrire sa structure avec un masque :
- Il commence par une lettre majuscule (
?u). - Suivi de deux lettres minuscules (
?l?l). - Suivi d'une lettre majuscule et d'une lettre minuscule (
?u?l). - Il se termine par quatre chiffres (
?d?d?d?d).
Le masque complet est ?u?l?l?u?l?d?d?d?d.
Maintenant, construisons la commande Hashcat :
-m 11600: Spécifie le mode de hash 7-Zip que nous avons trouvé à l'étape précédente.-a 3: Définit le mode d'attaque sur "Brute-force / Mask".hashcat.txt: Notre fichier contenant le hash nettoyé.?u?l?l?u?l?d?d?d?d: Le masque du mot de passe.
Exécutez la commande pour lancer l'attaque :
hashcat -m 11600 -a 3 hashcat.txt ?u?l?l?u?l?d?d?d?d
Hashcat démarrera, et vous verrez son écran de statut. Comme le mot de passe est simple et que le masque est précis, il devrait être décrypté très rapidement.
...
Session..........: hashcat
Status...........: Cracked
...
Une fois que le statut indique Cracked, le mot de passe a été trouvé. Pour afficher le mot de passe récupéré, vous pouvez utiliser l'option --show avec la même commande :
hashcat -m 11600 hashcat.txt --show
Cela affichera le hash suivi du mot de passe décrypté.
$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301:LabEx2024
Félicitations ! Vous avez réussi à décrypter le mot de passe de l'archive 7z.
Résumé
Dans ce laboratoire, vous avez parcouru avec succès l'ensemble du processus de décryptage d'une archive 7z protégée par mot de passe.
Vous avez appris à :
- Créer une archive 7z protégée par mot de passe en utilisant la commande
7z. - Utiliser l'utilitaire
7z2johnpour extraire le hash du mot de passe de l'archive. - Nettoyer et formater le hash extrait pour une utilisation avec Hashcat.
- Identifier le mode de hash correct dans Hashcat pour un type de hash spécifique.
- Exécuter une attaque par masque ciblée avec Hashcat pour récupérer efficacement le mot de passe.
Ce flux de travail fournit une base solide pour comprendre les principes du décryptage de mots de passe et l'application pratique d'outils puissants comme John the Ripper et Hashcat.


