Aller au contenu
  1. Posts/

THCon 2025 CTF - Writeup de Stéganographie : Scattered Socials

·668 mots·4 mins
Lacroix Raphaël (Chepycou)
Auteur
Lacroix Raphaël (Chepycou)
Bonjour, bienvenue sur mon blog. Je suis Raphaël LACROIX, je développe diverses applications pendant mon temps libre, allant du très inutile au parfois utile. Je fais aussi beaucoup de Capture The Flag et de défis de cybersécurité.
write-ups et tools THCon - Cet article fait partie d'une série.
Partie 6: Cet article

De quoi parle-t-on ?
#

La THCon (Toulouse Hacking convention), est une conférence française sur la cybersécurité qui réunit des amateurs, des professionnels et des chercheurs chaque année à Toulouse au mois d’avril.

Pour cette édition (2025), j’ai été l’un des créateurs de défis et j’ai créé un défi de geoINT en 6 parties, quelques défis de stéganographie, et j’ai fait en sorte que tous les défis soient conformes au lore (ce qui n’est pas peu faire).

Note : dans le cas où le CTFd n’est plus en ligne, si vous n’avez pas participé, ou si vous ne vous souvenez pas des défis, vous pouvez jeter un coup d’œil sur https://ctftime.org/event/2660/tasks/ bien que tous ne soient malheureusement pas listés :/

Explication macrosopique
#

Dans ce défi, nous apprenons que les XSS (les méchants) ont réussi à prendre le contrôle des réseaux sociaux de la THCon ! Nous devons reconstituer les images qu’ils ont postées sur les réseaux sociaux de la THCon :

alt text

Étape par étape précise
#

On a donc du socINT, avec deux choses à regarder :

Si nous commençons par l’option la plus évidente’ (ce défi est marqué comme stéganographie pour rappel), nous pouvons lister les comptes officiels :

texte alternatif

Vous êtes bien sûr chaleureusement encouragés à vous abonner à nos réseaux sociaux si vous souhaitez soutenir notre travail et/ou revenir l’année prochaine 😊😊😊

En examinant les plus évidents, nous obtenons :

Si vous voulez vous lancer dans l’OSINT, je recommande vivement de créer des comptes fantoches (appelés Sock Puppets) pour les réseaux sociaux comme Instagram, X ou LinkedIn, car tous bloquent les utilisateurs non inscrits.

Regardons de plus près : Le thread est assez simple et contient deux images :

texte alternatif
texte alternatif

Nous apprenons que les XSS jouent à des jeux comme LOL ou Marvel Rivals (super, probablement inutile), mais nous obtenons aussi deux fichiers. À ce stade, la partie stéganographie commence, et nous pouvons examiner les fichiers.

Quelques remarques :

  • Ce sont des fichiers de bruit
  • Le plus grand fichier a des dimensions 1000x1000 tandis que le plus petit fait 100x100
  • Le plus grand fichier semble contenir des répétitions 10x10 d’un motif de bruit
  • Ils semblent avoir été créés par un outil ou quelque chose (d’où leur format étrange lorsqu’on les analyse)

Une première idée serait de faire un XOR entre les images, et puisque le plus grand fichier semble être une répétition du bruit plus petit, nous pouvons essayer de faire un XOR du grand fichier avec le petit fichier répété.

Voici un script Python POC qui fait exactement cela :

from PIL import Image

noise100x100 = Image.open("./noise.png")
pixel_noise100x100 = noise100x100.load()

im = Image.open("./hidden-image2.png")
pixel_image = im.load()

for i in range(im.size[0]): # pour chaque pixel :
    for j in range(im.size[1]):
        r,g,b,_ = pixel_image[i,j]
        # r,g,b,_ = pixel_image[i,j] # Parfois, des plateformes (comme Signal) ajoutent une transparence
        r_x, g_x, b_x = pixel_noise100x100[i%100,j%100]
        # r_x, g_x, b_x, _ = pixel_noise100x100[i%100,j%100] # Parfois, des plateformes (comme Signal) ajoutent une transparence
        r = r ^ r_x
        g = g ^ g_x
        b = b ^ b_x
        pixel_image[i,j] = (r,g,b)

im.save("./out.png")

Lorsque nous faisons un XOR de l’image dans le thread X avec l’échantillon de bruit plus petit du même thread, nous obtenons :

texte alternatif

Ensuite, nous utilisons l’image trouvée dans le post LinkedIn pour obtenir :

texte alternatif

Résolutions
#

J’ai vu des gens faire des choses folles avec ça, comme faire un XOR de l’image avec elle-même, mais avec un décalage (pour que les colonnes de bruit s’annulent) ou faire un XOR des deux plus grandes images de bruit, ce qui leur donnait une superposition des deux images, c’était vraiment amusant 😅

Félicitations aux 6 qui ont réussi à trouver le flag !

texte alternatif

write-ups et tools THCon - Cet article fait partie d'une série.
Partie 6: Cet article