🎭 My Face
👀 Avant de commencer
Vous pouvez me faire un don via Buy Me a Coffee ou me suivre Github
🕵️♂️ Chercher des informations
Sur ce nouveau challenge, nous arrivons sur une page web, et nous voyons deux personnes qui parle...
Une sarah qui envoie des messages qui ont l'air encoder par quelque chose et un autre qui lui réponds avec des messages qui ont l'air d'être des réponses à des questions. Nous allons donc devoir analyser ces messages pour comprendre ce qu'il se passe.
Ce site en tout cas n'a pas l'air d'avoir beaucoup de chose... Uniquement des publications de photos de personnes avec des filtres de visages. Comme nous savons via le titre du challenge, nous allons devoir faire quelque chose avec un ou des visages.
L'icon pricipale du site internet est justement une image floutée d'un visage. En regardant le code source de la page, nous pouvons la télécharger et l'analyser.
Voici l'image récupérée :
Nous avons quelque chose à faire avec cette image, mais quoi ? 🤔
Nous allons alors faire appel à un outil très très connue dans le monde de la stéganographie, Aperi'Solve
Mais qu'est-ce que Aperi'Solve ? 🤨
Aperi'Solve
est un outil dévelloper par la Team AperiKube, qui permet de résoudre des challenges de stéganographie. Cet outil est très puissant et permet de lancer plusieurs tools de stéganographie en même temps sur l'image que vous lui fournissez.
Malheursement, cette outils prends que des images en .png
, .jpg
ou .jpeg
. Cependant, si nous cherchons à convertir notre image en .png
, nous pouvons alors perdre les informations cachées dans l'image.
Nous allons devoir faire tout nous même à la main ! 😅
Nous allons tester quelques outils dessus pour comprends un peu plus ce qu'il se cache derrière cette image. Et là coup de théâtre :
$ binwalk MyFace.ico
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
15406 0x3C2E PNG image, 553 x 219, 8-bit/color RGB, non-interlaced
15497 0x3C89 Zlib compressed data, compressed
Nous avons un fichier PNG caché dans l'image ICO ! 🤯
🖼️ Récupération de l'image
Nous voyons que l'image est à l'offset 15406
. Nous allons donc extraire cette image de l'icone. En utilisant la commande dd
:
Mais qu'est-ce que `dd` ? 🤨
dd
est une commande qui permet de copier et de convertir des fichiers. Elle est très utile pour faire des opérations de bas niveau sur des fichiers. C'est une commande très puissante, mais aussi très dangereuse, car elle peut effacer des données très facilement. Pour ça que j'utilise cette commande uniquement une fois mon information récupérée et non dans l'étape d'analyse.
$ dd if=MyFace.ico of=MyFace.png bs=1 skip=15406
Et nous récupérons cette magnifique image :
C'est parfait nous avons ce qu'il nous faut ! 🥳
🧐 Décodage de la conversation
Avec les messages que nous avons récupéré, nous allons pouvoir les décoder grâce à la clé que nous venons de trouver sur l'image.
Pour se faire nous allons nous faire un petit script en Python pour décoder les messages :
from Crypto.Cipher import AES
import base64
# Fonction pour déchiffrer en mode ECB avec la clé donnée
def decrypt_ecb(ciphertext, key):
cipher = AES.new(key.encode(), AES.MODE_ECB)
plaintext = cipher.decrypt(ciphertext)
return plaintext
# Clé de chiffrement
key = "h~{w*Y6Tab}5T6iP7(,RF5CAh-8hb74;"
# Message chiffré à déchiffrer
encrypted_message = "ieHuXcpeBQzsEj6Emhthk9yymkAHY2xyogj/mK0MoeTlOhsVHXkAuws6wOYpS4IYAT/tUxk6nHuuU7s9nXUS1sKg7uM64RySd3rXe1RcpAoOTxgzPgJBgBUK0J7IrIprueRl3iu0dbNwqjlNMS3CkCEjBeFTqxw/at3iy3aGkiOyUFyNwgTOxevQWUdYCYcrxJGVHX8RCFVlC5SSdRM12G8rswhP/5XV9WsjR9bFtmc="
# Décodage de base64 du message chiffré
encrypted_message_bytes = base64.b64decode(encrypted_message)
# Déchiffrement du message
decrypted_message = decrypt_ecb(encrypted_message_bytes, key)
# Affichage du message déchiffré
print("Message déchiffré :", decrypted_message.decode())
Et nous avons notre message déchiffré :
$ python3 main.py
Message déchiffré : Ne t'inquiète pas ! J'ai sécurisé la porte avec mon cadenas.
Les voyageurs n'auront pas la 0 Day.
Au cas où, voici le mot de passe :
MCTF{L3_C@DeNas_E5t_L3g3r}
💖 Support
👀 Avant de quitter
Vous pouvez me faire un don via Buy Me a Coffee ou me suivre Github
²