WriteUp EncryptCTF 2019 – Crack-Jack
Challenge: Crack-Jack
Points: 50 pts
Catégorie: Forensics~Steganography
Ce challenge était disponible lors du CTF EncryptCTF debut Avril 2019.
Énoncé: Visuals are Deceptive
Fichiers: une image:
On commence direct dans le vif du sujet avec une image. On peut apercevoir sur l’image un fake flag “encryptCTF{NOt_7h@7_345y}”, ça annonce la couleur.
Pour faire de la stage dans les règles de l’art, analysons cette image dans son intégralité.
1. L’analyse de l’image
On commence avec le tool Aperisolve.fr, pour avoir un aperçu de la composition des couleurs de l’image:

On voit bien qu’il n’y a rien de spécial de caché du côté LSB de la force. Pas très grave.
2. Analyse des exifs
Passons aux exifs, ou les métadonnées pour les puristes:
Sur le site Aperisolve, on a un aperçu d’exiftool, un outil d’extraction des métadonnées:

Quelque chose d’intéressant en ressort: l’image possède une thumbnail, créée après l’image principale, et ajoutée grâce à Gimp.
Poursuivons l’analyse des exifs avec le site http://exif.regex.info/exif.cgi

Le site nous confirme bien la présence d’une thumbnail, qui est strictement similaire à l’image originale, mais redimensionnée.
3. L’analyse du fichier PNG
Passons aux choses sérieuses, l’analyse du fichier.
Voici le résultat de binwalk:

Voilà qui est intéressant, il y a un zip caché dans l’image, et ce zip contient un “flag.txt”. Je vais donc extraire tout ça avec foremost, qui est plus adapté dans ce genre de situations. Une fois extrait, l’archive est chiffrée et il faut un mot de passe pour extraire flag.txt. Soit.
4. La partie chiante et pas drôle
BRUTEFORCE. Et oui. C’est de la steg donc faut bien un peu de guessing et de bruteforce non ?
trêves de plaisanteries, à partir de là, j’ai appris pas mal de choses en termes de bruteforce. Suivons la procédure que je me suis fixée:
- Zip2john: Pour pouvoir utiliser JohnTheRipper sur l’archive il faut la convertir en “hash” que john peut cracker. Pour ce faire, rien d etel que zip2john: “zip2john archive.zip > archive.john”
- John: Maintenant utilisons john avec toute sorte de wordlists (Rockyou, 500-worst-passwords, darkc0de et j’en passe). mais rien n’y fait.
De là je suis resté bloqué un moment, à tenter des trucs avec des wordlists trouvées sur des recoins sombres d’internet, mais rien n’y a fait. Il a fallu réfléchir !
La solution
La solution de cette épreuve m’a fait presque pleurer de désespoir, tant c’est un peu nul comme exo.
Il fallait constituer un dictionnaire avec des mots provenant de l’image (non non, pas ceux écrits en gros sur l’image), soit les “strings”…
commande:
strings flag.png > words.txt; john –wordlist=words.txt archive.john
Et voilà, le password de l’archive se trouvait être une string de l’image… “G^WBC[WLr3” pour être précis.
Je vais pas le cacher je suis assez déçu de ce challenge. L’étape bruteforce était vraiment de trop… surtout avec les strings de l’image. J’imagine que ça fait partie de “l’originalité” du challenge.
Flag: encryptCTF{C4acK!ng_7h3_Uncr4ck4bl3}