Solution de tacorabane pour StegCryptoDIY - PNG

intro forensics

2 décembre 2023

Analyse du fichier

Ce challenge a été vu lors du challenge à LeHack 2019. Rien de compliqué. On va y aller étape par étape.

Dans une premier temps, téléchargez le fichier leHACK19_chall.png.

Vous pouvez le regarder dans une visionneuse pendant des heures, vous n’y trouverez rien d’intéressant. Mais nous pouvons analyser les métadonnées de l’image grâce à la commande strings.

$ strings leHACK19_chall.png
[...]
[6X9
'js*
Y[U!H
=|pIV
eii
x/h9
|dyW
y+,!f
h0za@
-*36,
gKyv
@duMBTiA9IDExNzU1MDY4OTQ0MTQyOTY5NDk4NzQzMjQ1OTg0NzYxMTgxMzI1NjA1MzA0NjI1Mjg2OTU4NzIxMzkxNzY2MDkxMjgzMTMyMzk4NDM3NjQ1MDM4MzQ5Nzc1ODk4OTIzNDY1MzMxMjYwMzA4MDY0NjExMTY3OTI2MTg3Mzk5Mzg0NzIzMzYwOTQxODgzNzMyMTc0OTAxNjY2ODAzICxnMSA9IDM4MDg4MTk1MDU1NjQ5OTk1NDUyNTI2MjM2MzExOTI1MDMyMTIxODY1OTgwODg1NTUzNDM3MzgxMTExNjUzODI2MjM0MjE3MjAxMTk4Mzc1NDQ2NTgxNzM4MjI0NjE4MzQwNzYzNDc3OTUxNTkzNjY1OTMxNzc2NjkwNTg3MDUwODcyNjY4OTg0NDQ4MTg5MjY2Njg1ODQ1MTksIGcyID0gODcyMTc4NzQwMDMyNzc4Mzc0ODAxNDg0OTAzNzYyNjAzOTM5NzgwNzYxMjM3MjgwNDAxNjY0MzY1MzA0NzU3NTk3NjAwOTgyNzAwMzQ0Nzc3ODg2MTI2MjAzNjc1MjMyNjgyNzYxMzA3ODM0NjIyNTE5MjU4MTcwODI0MDgyMDMyNTg2NzY1ODc0MjA3ODY5NDQ0NTY3Nzg3NyBJIHVzZSB0aGlzIGZ1bmN0b25zIGZvciBlbmNpcGhlcmluZyBvdXIgc2tleSA6IGVuY2lwaGVyKGludC5mcm9tX2J5dGVzKHNrZXksJ2JpZycpLGcxLGcyLE4pIHdpdGggZGVmIGVuY2lwaGVyKG0sZzEsZzIsTik6IHMxPXJhbmRvbS5yYW5kcmFuZ2UoMioqMTI3LDIqKjEyOCkgczI9cmFuZG9tLnJhbmRyYW5nZSgyKioxMjcsMioqMTI4KSByZXR1cm4gKG0qcG93KGcxLHMxLE4pKSVOLCAobSpwb3coZzIsczIsTikpJU4gYW5kIGhlcmUgaXMgYSBmbGFnOiBsZWhhY2syMDE5e2FlZjk1NTZhNTc1Y2M5ZGU4ZmM5NjA5YmQwMzRkNjNmZTBhMDE0NzBlYjQwMTM3ODI1M2Y3MjNiYmM1Y2MxNmN9
IEND

Si nous sommes vigilent aux dernières lignes, nous pouvons penser que c’est une chaîne de caractère au format Base 64.

Extraction des données

La commande suivante va être longue mais expliquons la un instant.

Voici la commande :

strings leHACK19_chall.png | grep '@du' | sed 's/@//' | base64 -d

Tout d’abord, strings leHACK19_chall.png permet de récupérer les metadonnées.

Ensuite, grep '@du' permet de récupérer uniquement la dernière ligne commançant par @du.

Maintenant, sed 's/@// permet de supprimer @ et laisser le reste.

Enfin, base64 -d permet de décoder la chaine de caracter dans stdin. Le tout sera afficher dans stdout.

v�N = 11755068944142969498743245984761181325605304625286958721391766091283132398437645038349775898923465331260308064611167926187399384723360941883732174901666803 ,g1 = 3808819505564999545252623631192503212186598088555343738111165382623421720119837544658173822461834076347795159366593177669058705087266898444818926668584519, g2 = 8721787400327783748014849037626039397807612372804016643653047575976009827003447778861262036752326827613078346225192581708240820325867658742078694445677877 I use this functons for enciphering our skey : encipher(int.from_bytes(skey,'big'),g1,g2,N) with def encipher(m,g1,g2,N): s1=random.randrange(2**127,2**128) s2=random.randrange(2**127,2**128) return (m*pow(g1,s1,N))%N, (m*pow(g2,s2,N))%N and here is a flag: lehack2019{aef9556a575cc9de8fc9609bd034d63fe0a01470eb401378253f723bbc5cc16c}

Vous obtenez un code source python qui, à l’époque, devait être récupérer pour la suite des challenges mais dans notre cas, ne récupérez uniquement le flag de fin lehack2019{aef9556a575cc9de8fc9609bd034d63fe0a01470eb401378253f723bbc5cc16c}

Alternative

Pour extraire les données, voici une alternative plus graphique.

Rendez-vous sur le site FotoForensics et téléverser l’image.

Sur la gauche, vous trouverez le menu ci-dessous.

Menu Fotoforensics

Sélectionnez Strings. (Et oui comme le nom de la commande précédente !)

Allez tout en bas et vous trouverez la chaîne caractère à décoder.

Chaine de caractère Base64

Copiez-collez le sans le @ et aller sur le site CyberChef.

Dans le menu de gauche glissez “From Base64” et collez votre presse-papier dans le champ “Input

cyberchef

Ainsi, dans le champ “Output” vous pourrez récupérer le flag.