Utiliser John the Ripper pour Craquer les Documents Office (DOCX, XLSX, PPTX)

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez explorer le processus de craquage de documents Microsoft Office protégés par mot de passe (DOCX, XLSX, PPTX) à l'aide de l'outil puissant de craquage de mots de passe, John the Ripper. Nous utiliserons office2john.py pour extraire le hash du mot de passe des fichiers Office, puis nous fournirons ce hash à John the Ripper pour le craquage. Ce laboratoire démontrera les étapes impliquées dans un scénario pratique, vous aidant à comprendre les implications de sécurité des mots de passe faibles sur les documents Office.

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

Dans cette étape, vous allez créer un fichier DOCX simple et le protéger avec un mot de passe. Ce fichier sera ensuite utilisé dans les étapes suivantes pour extraire et craquer son hash de mot de passe.

Tout d'abord, installons libreoffice-writer pour créer le fichier DOCX.

sudo apt install -y libreoffice-writer

Une fois installé, ouvrez LibreOffice Writer.

libreoffice --writer &

Une nouvelle fenêtre LibreOffice Writer s'ouvrira.

  1. Tapez du texte, par exemple, "This is a test document."
  2. Allez dans Fichier -> Enregistrer sous....
  3. Dans la boîte de dialogue Enregistrer sous, naviguez vers /home/labex/project/.
  4. Entrez secret.docx comme nom de fichier.
  5. Cochez la case Enregistrer avec mot de passe.
  6. Cliquez sur Enregistrer.
  7. Dans la boîte de dialogue Définir le mot de passe, entrez password123 comme mot de passe dans les champs Entrez le mot de passe et Confirmez le mot de passe.
  8. Cliquez sur OK.
  9. Fermez LibreOffice Writer.

Vérifiez que le fichier secret.docx existe dans votre répertoire ~/project.

ls -l ~/project/secret.docx

-rw-r--r-- 1 labex labex XXXX Month XX XX:XX /home/labex/project/secret.docx

Extraire le hash d'un DOCX avec office2john

Dans cette étape, vous utiliserez le script office2john.py, qui fait partie de la suite John the Ripper, pour extraire le hash du mot de passe du fichier secret.docx que vous avez créé. C'est ce hash que John the Ripper tentera de craquer.

Tout d'abord, localisez le script office2john.py. Il se trouve généralement dans le répertoire /usr/share/john/.

find /usr/share/john/ -name office2john.py

/usr/share/john/office2john.py

Maintenant, utilisez office2john.py pour extraire le hash de secret.docx et enregistrez-le dans un fichier nommé hash.txt.

python3 /usr/share/john/office2john.py ~/project/secret.docx > ~/project/hash.txt

Affichez le contenu de hash.txt pour voir le hash extrait.

cat ~/project/hash.txt

secret.docx:$office$*2007*100000*256*16*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX

La sortie affichera une longue chaîne commençant par secret.docx:$office$..., qui est le hash de votre mot de passe.

Craquer le hash DOCX avec John the Ripper

Maintenant que vous avez extrait le hash, vous allez utiliser John the Ripper pour le craquer. Nous utiliserons une simple liste de mots pour cette démonstration, car notre mot de passe est "password123", qui est un mot courant.

John the Ripper est livré avec une liste de mots par défaut située à /usr/share/john/password.lst. Utilisons cette liste de mots.

john --wordlist=/usr/share/john/password.lst ~/project/hash.txt

John the Ripper commencera à traiter le hash. Si le mot de passe se trouve dans la liste de mots, il le trouvera rapidement.


Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013/2016 [MD5/SHA1/SHA256/SHA512 RC4/AES])
Will run till all hashes are cracked, by default
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (secret.docx)
1g 0:00:00:00 DONE (20XX-XX-XX XX:XX) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Session completed.

Après le craquage, vous pouvez afficher les mots de passe craqués en utilisant l'option --show.

john --show ~/project/hash.txt

secret.docx:password123

1 password hash cracked, 0 left

Cette sortie confirme que John the Ripper a réussi à craquer le mot de passe de secret.docx comme étant password123.

Répéter pour les fichiers XLSX et PPTX

Dans cette étape, vous appliquerez le même processus aux fichiers XLSX (Excel) et PPTX (PowerPoint) pour démontrer que office2john.py et John the Ripper fonctionnent de manière similaire sur différents types de documents Office.

Tout d'abord, installez libreoffice-calc et libreoffice-impress.

sudo apt install -y libreoffice-calc libreoffice-impress

Créer un fichier XLSX protégé par mot de passe :

  1. Ouvrez LibreOffice Calc :
    libreoffice --calc &
  2. Tapez du texte, par exemple, "Spreadsheet data."
  3. Allez dans Fichier -> Enregistrer sous....
  4. Naviguez vers /home/labex/project/.
  5. Entrez secret.xlsx comme nom de fichier.
  6. Cochez Enregistrer avec mot de passe.
  7. Cliquez sur Enregistrer.
  8. Définissez le mot de passe sur password123 et confirmez.
  9. Cliquez sur OK et fermez LibreOffice Calc.

Extraire le hash du XLSX :

python3 /usr/share/john/office2john.py ~/project/secret.xlsx >> ~/project/hash.txt

Créer un fichier PPTX protégé par mot de passe :

  1. Ouvrez LibreOffice Impress :
    libreoffice --impress &
  2. Ajoutez un titre, par exemple, "Presentation Title."
  3. Allez dans Fichier -> Enregistrer sous....
  4. Naviguez vers /home/labex/project/.
  5. Entrez secret.pptx comme nom de fichier.
  6. Cochez Enregistrer avec mot de passe.
  7. Cliquez sur Enregistrer.
  8. Définissez le mot de passe sur password123 et confirmez.
  9. Cliquez sur OK et fermez LibreOffice Impress.

Extraire le hash du PPTX :

python3 /usr/share/john/office2john.py ~/project/secret.pptx >> ~/project/hash.txt

Craquer tous les hashes :
Maintenant, exécutez John the Ripper sur le fichier hash.txt mis à jour, qui contient maintenant les hashes pour DOCX, XLSX et PPTX.

john --wordlist=/usr/share/john/password.lst ~/project/hash.txt

Using default input encoding: UTF-8
Loaded 3 password hashes (Office, 2007/2010/2013/2016 [MD5/SHA1/SHA256/SHA512 RC4/AES])
Will run till all hashes are cracked, by default
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (secret.xlsx)
password123      (secret.pptx)
password123      (secret.docx)
3g 0:00:00:00 DONE (20XX-XX-XX XX:XX) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Session completed.

Vérifiez tous les mots de passe craqués :

john --show ~/project/hash.txt

secret.xlsx:password123
secret.pptx:password123
secret.docx:password123

3 password hashes cracked, 0 left

Comprendre le chiffrement des documents Office

Dans cette étape, nous discuterons brièvement des mécanismes de chiffrement utilisés par les documents Microsoft Office et pourquoi des outils comme John the Ripper sont efficaces.

Les documents Microsoft Office modernes (DOCX, XLSX, PPTX) utilisent des formats basés sur XML (Open XML). Lorsqu'un mot de passe est défini, le contenu du document est chiffré. Le processus de chiffrement implique la dérivation d'une clé de chiffrement à partir du mot de passe de l'utilisateur à l'aide d'une fonction de dérivation de clé (KDF) telle que PBKDF2 (Password-Based Key Derivation Function 2).

office2john.py fonctionne en extrayant les paramètres nécessaires de la structure XML du document Office, tels que le sel (salt), le nombre d'itérations (iteration count) et le hash du vérificateur chiffré (encrypted verifier hash). Ces paramètres, ainsi que le type de hash (par exemple, Office 2007/2010/2013/2016), forment la chaîne de "hash" que John the Ripper comprend.

John the Ripper effectue ensuite une attaque par force brute ou par dictionnaire. Pour chaque mot de sa liste de mots (ou chaque combinaison lors d'une attaque par force brute), il applique la même KDF avec les paramètres extraits pour générer une clé candidate. Si cette clé candidate correspond au hash du vérificateur chiffré, le mot de passe est trouvé.

La force du chiffrement dépend fortement de la complexité et de la longueur du mot de passe. Les mots de passe faibles ou courants, comme "password123", sont facilement craqués à l'aide d'attaques par dictionnaire, comme démontré dans ce laboratoire. Les mots de passe forts, qui sont longs, aléatoires et contiennent un mélange de caractères, augmentent considérablement le temps et les ressources informatiques nécessaires au craquage, les rendant beaucoup plus sécurisés.

Cet exercice souligne l'importance d'utiliser des mots de passe forts et uniques pour les documents sensibles afin de les protéger contre tout accès non autorisé.

Résumé

Dans ce laboratoire, vous avez appris avec succès à extraire les hashes de mots de passe à partir de documents Microsoft Office protégés par mot de passe (DOCX, XLSX, PPTX) à l'aide de office2john.py. Vous avez ensuite utilisé John the Ripper pour craquer ces hashes extraits, démontrant la vulnérabilité des documents protégés par des mots de passe faibles. Cette expérience pratique vous a donné un aperçu du processus de craquage de mots de passe et a renforcé l'importance d'utiliser des mots de passe forts et complexes pour sécuriser vos actifs numériques.