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.
- Tapez du texte, par exemple, "This is a test document."
- Allez dans
Fichier->Enregistrer sous.... - Dans la boîte de dialogue
Enregistrer sous, naviguez vers/home/labex/project/. - Entrez
secret.docxcomme nom de fichier. - Cochez la case
Enregistrer avec mot de passe. - Cliquez sur
Enregistrer. - Dans la boîte de dialogue
Définir le mot de passe, entrezpassword123comme mot de passe dans les champsEntrez le mot de passeetConfirmez le mot de passe. - Cliquez sur
OK. - 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 :
- Ouvrez LibreOffice Calc :
libreoffice --calc & - Tapez du texte, par exemple, "Spreadsheet data."
- Allez dans
Fichier->Enregistrer sous.... - Naviguez vers
/home/labex/project/. - Entrez
secret.xlsxcomme nom de fichier. - Cochez
Enregistrer avec mot de passe. - Cliquez sur
Enregistrer. - Définissez le mot de passe sur
password123et confirmez. - Cliquez sur
OKet 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 :
- Ouvrez LibreOffice Impress :
libreoffice --impress & - Ajoutez un titre, par exemple, "Presentation Title."
- Allez dans
Fichier->Enregistrer sous.... - Naviguez vers
/home/labex/project/. - Entrez
secret.pptxcomme nom de fichier. - Cochez
Enregistrer avec mot de passe. - Cliquez sur
Enregistrer. - Définissez le mot de passe sur
password123et confirmez. - Cliquez sur
OKet 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.


