Challenge CTF Richelieu de la DGSE

edlemort

Nouveau Membre
bon la j'avoue je suis perdu, faut que je réfléchisse ^^

Il faut tester toutes les subsitutions possible, fais un schema ca vient tout de suite. En gros, au moment du sed des 7f en fb, il avait peut-etre deja des fb dans le code. Il faut donc tester toutes les cles qui auraient pus etre generees par le sed (car on remarque que le caractere fb est present plusieurs fois donc il y avait tres probablement plusieurs fb avant le sed).

Pour le script, une boucle pour chaque sed, qui couvre chaque possibilite en fonction du nombre de subsitutions possible.
 

floflo530

Nouveau Membre
Il faut tester toutes les subsitutions possible, fais un schema ca vient tout de suite. En gros, au moment du sed des 7f en fb, il avait peut-etre deja des fb dans le code. Il faut donc tester toutes les cles qui auraient pus etre generees par le sed (car on remarque que le caractere fb est present plusieurs fois donc il y avait tres probablement plusieurs fb avant le sed).

Pour le script, une boucle pour chaque sed, qui couvre chaque possibilite en fonction du nombre de subsitutions possible.

Pour cela je vois a peu prés mais comment tester savoir la bonne combinaison ?
 

edlemort

Nouveau Membre
Pour cela je vois a peu prés mais comment tester savoir la bonne combinaison ?

Ca vient de l'algo pour chiffrer en RSA : n = p*q, p et q premiers.
On obtient n le module avec la cle publique, et on teste tout les (n/p) = q jusqu'a trouver un q premier. On saura alors que le p correspondant est le bon.
 

sfa

Nouveau Membre
est-ce que le script se trouvant sur la page web ne pourrait pas être utilisé pour retravailler ce fichier?
 

edlemort

Nouveau Membre
est-ce que le script se trouvant sur la page web ne pourrait pas être utilisé pour retravailler ce fichier?

J'y ai pensé, surtout avec le "Module" dans le script mais j'ai pas trouvé . Ca va plus vite de faire un script a la main.
Ce script sera peut-etre utile plus tard.

Des gens sont sur la stegano de l'image coloree ?
 

julesrichelieu

Nouveau Membre
Salut Edlemort, je suis très mauvais en crypto, pourrais-tu m'aider à trouver la clé privée et je te ferais bénéficier de mon expertise en stega pour le png coloré avec le fond vert ?
 

Ray

Modérateur de classe B
Même en tant que spectateur c'est amusant à suivre et de voir l'évolution au fur et à mesure.
 

Guicheman

Habitué
J'ai avancé !

J'ai codé un bout de python pour trouvé les éléments de la clé privé. Je vais pas m'amuser à détailler comment j'ai fait, c'est pas le plus intéressant.
Du coup, j'ai généré une clé privé au format DER (que je joins à ce message).

Avec ça, on peut déchiffrer le fichier motDePasseGPG.txt, qui contient le mot de passe pour déchiffrer le fichier lsb_RGB.png.

Et du coup, c'est là que je me mets à bloquer, parce que j'y connais rien en stegano. Je te passe volontiers la main @julesrichelieu !
 

Pièces jointes

  • privkey.zip
    2,5 KB · Affichages : 109
  • motDePasseGPG.txt
    47 bytes · Affichages : 109
Dernière édition :

julesrichelieu

Nouveau Membre
J'ai avancé !

J'ai codé un bout de python pour trouvé les éléments de la clé privé. Je vais pas m'amuser à détailler comment j'ai fait, c'est pas le plus intéressant.
Du coup, j'ai généré une clé privé au format DER (que je joins à ce message).

Avec ça, on peut déchiffrer le fichier motDePasseGPG.txt, qui contient le mot de passe pour déchiffrer le fichier lsb_RGB.png.

Et du coup, c'est là que je me mets à bloquer, parce que j'y connais rien en stegano. Je te passe volontiers la main @julesrichelieu !

Merci beaucoup, je peux t'aider en stega si tu veux je suis chercheur au CNRS.
 

Guicheman

Habitué
Je veux bien, a vrai dire je suis plutôt un noob en cyber-sécurité à la base. Je suis développeur, mais c'est pas du tout mon secteur.
Pour la stegano, je connais le principe, mais je connais pas du tout les techniques.

J'ai essayé de bidouiller un peu l'image sous gimp. A priori, les modifs sont sur tout le fichier. Mais je sais pas ce qu'il faut extraire en sortie (une image, un texte ?)

EDIT : Bon, en récupérant le bout de code qu'il y a sur cette page, et en la lancant sur toute l'image (et pas uniquement sur la première ligne comme dans son example), j'ai presque quelque chose je pense. A un moment, j'ai le dump hexadécimal d'un binaire. Mais entouré de pas mal de garbage, et pas complet. Je vais essayer de fignoler ça.
 
Dernière édition :

Guicheman

Habitué
Bonne nouvelle : j'ai réussi à extraire le binaire.
Mauvaise nouvelle : il demande un mot de passe. Et je n'en ai pas. C'est peut être caché dans le reste de l'image. Ou bien en fouillant dans les symboles du binaire, je peux essayer de trouver qque chose.
 

julesrichelieu

Nouveau Membre
Je veux bien, a vrai dire je suis plutôt un noob en cyber-sécurité à la base. Je suis développeur, mais c'est pas du tout mon secteur.
Pour la stegano, je connais le principe, mais je connais pas du tout les techniques.

J'ai essayé de bidouiller un peu l'image sous gimp. A priori, les modifs sont sur tout le fichier. Mais je sais pas ce qu'il faut extraire en sortie (une image, un texte ?)

EDIT : Bon, en récupérant le bout de code qu'il y a sur cette page, et en la lancant sur toute l'image (et pas uniquement sur la première ligne comme dans son example), j'ai presque quelque chose je pense. A un moment, j'ai le dump hexadécimal d'un binaire. Mais entouré de pas mal de garbage, et pas complet. Je vais essayer de fignoler ça.

Je te réponds dès que j'ai fini de décrypté le png.

Je suis spécialiste en stega dite "traditionnelle" (je travaille avec de vieux codex), si ça nécessite du code je vais être vite largué ! Mais je te tiens au courant.
 

Guicheman

Habitué
Et j'ai avancé !!
Alors, ça a été long, parce que je voyais pas du tout ce qu'il fallait faire.
Donc, le binaire récupéré dans l'image demandais donc un mot de passe.
En regardant le dump hexadecimal de ce binaire, on voit qu'il est compressé avec UPX (avec 2 -3 modifs pour pas que ce soit facile).
Une fois décompressé, j'ai fait un objdump du binaire pour voir le code en assembleur.
J'ai cherché où le mot de passe était testé, en regardant où était récupéré les chaines de caractères de réussite ou d'échec.
Après avoir bataillé longuement, j'ai enfin pu trouver le mot de passe. Le mot de passe était testé caractère par caractère contre un buffer stocké dans le programme. Un XOR était fait entre le caratère N du mot de passe et l'octet N du buffer, et ça doit donner l'octet N+1 du buffer.

Le mot de passe trouvé ( qui est : DGSE{g456@g5112bgyfMnbVXw.llM} ) permet d'ouvrir l'archive suite.zip, qui contient un fichier suite.txt avec les infos pour la suite du défi.

Suite du challenge Richelieu :

ssh defi1.challengecybersec.fr -l defi1 -p 2222

mot de passe : DGSE{2f77c517b06f1cd1ce864f79f41f25ca8874413c8c1204f7ec9c6728c87f270a}
 

cduret

Nouveau Membre
good job

Je capte pas bien à quoi sert l'archive cachée dans l'image ..

Deja quand je fais un objdump de l'archive ça ne donne rien :

objdump -D -M intel archive.bin
archive.bin: file format elf64-x86-64

Pourtant il me demande bien un mot de passe :
$ ./archive.bin
usage : ./archive.bin <mot de passe>
 
Dernière édition :

julesrichelieu

Nouveau Membre
j'ai aussi eu le mot de passe après des heures de galère, j'en suis au fameux drapeau ça promet du spectacle !
 

Guicheman

Habitué
Concernant l'archive/binaire qu'on récupère avec le lsb de l'image, il est compréssé avec UPX. Donc le objdump va foirer.
Du coup, il faut le décompresser avec upx (upx -d archive.bin -o output.bin). De mon côté ça n'a pas marché tout de suite, il a fallu que je modifie l'archive pour remplacer les ADL par des UPX.
 

cduret

Nouveau Membre
ok
pour les autres il faut remplacer dans la description ascii :

ALD
41 4c 44

par

UPX
55 50 58

et apres recreer le binaire

xxd -r -p output.bin archive.bin

et du coup la decompression upx

upx -d archive.bin -o archive.out

fonctionne

le dump marche correctement

objdump -D -M intel archive.out
 
Haut