Hackllebarde ransomware 3/4 (Forensics) - 404CTF 2022

Hackllebarde ransomware 3/4 (Forensics) - 404CTF 2022

Fichiers du challenge Principe:
Le flag est dans l'historique d'un fichier KDBX qu'on doit cracker (pass + fichier clef) lui-même dans un zip chiffré (pass) qu'on localisera dans l'image RAW d'une clef USB

Le challenge

Le challenge nous demande d'explorer le contenu d'une image disque (clef USB)

Le fichier contenant l'image disque RAW est ici et les autres fichiers du challenge sont là

Les fichiers de la clef

Monter l'image

En montant l'image, on trouve des photos de chats
Il y a aussi un dossier masqué: il contient un fichier PDF, qui sera sans doute utile
Mais impossible d'ouvrir le PDF! Il semble, d'après file, qu'il s'agisse en fait d'un JPG
Et c'est aussi une photo de chat! On va la garder de côté

Photorec

L'image disque semble contenir des données, on va reprendre la même approche que Floppy (Forensics)
On choisit l'image RAW dans photorec
On scannera tout le disque
Pour tout type de partition
On sauvera le résultat dans un dossier dédié
Et on récupère 37 fichiers
Dont les chats précédents, des ELF, et un zip
J'ai aussi essayé quelques algos manuels, qui ont extrait des PNG et des GZ supplémentaires

Le zip

En ouvrant le zip, on trouve un fichier KDBX, qui est une base de données de mots de passe au format KeePass
Mais le zip est chiffré: pour extraire le KDBX, il nous faut le mot de passe du zip!
Un coup de zip2john et de john via rockyou (au hasard, c'est un classique) et on trouve le mot de passe du zip: agentkitty
On extrait le KDBX

Le KDBX

Si on essaie de l'ouvrir, on ne peut pas: il nous manque le mot de passe et/ou le fichier de clef
Un coup de keepass2john et de john et… ouais, bon, ça va être trop long là!

Une autre liste?

J'ai tenté d'extraire du RAW tout ce qui pouvait ressembler à un mot de passe, pour réduire le temps de calcul. Mais c'était une fausse piste

Les chats?

J'ai aussi passé beaucoup de temps à essayer de trouver une stégano dans les images de chat: j'espérai que le mot de passe du KDBX s'y trouve
D'autant que les images semblent venir d'internet, mais ne sont pas tout à fait identiques (MD5 différent), donc, elles pourraient contenir des données cachées

Impossible toutefois de trouver quelle stégano aurait été utilisée. Donc, j'ai dû essayer une autre approche.

Et ce n'était pas non plus une question de contrastes, de texte caché dans l'image, etc

Oh pas de bol, voilà des ELF!

Une autre piste: les fichiers ELFs sont peut-être utiles? Aucun ne semble venir d'internet

J'espérais qu'un de ces ELF permettrait de déchiffrer une des images de chat, qui aurait pu être un fichier stéganographié, et donner ainsi le mot de passe du KeePass

Dans les données récupérées, on peut voir la mention d'un Raspberry Pi et d'un réseau appelé raspirate
Ayant un raspberry sous la main, et une carte SD vierge, je décide de monter une image ARM64 dessus et j'essayerai les ELF (j'ai essayé plusieurs images d'ailleurs)

Oui, derrière, c'est "La méthode Française" avec Lino Ventura. Comme cet acteur a parfois joué dans des films d'espionnages, j'espérais que cela me donnerai un indice pour un des autres challenges, appelé "La méthode française" :)

Le Raspberry Pi se lance alors
Mais la plupart des ELF n'étaient pas intéressants: il s'agissait de dérivés de GNU/binutils. Seuls deux fichiers restaient mystérieux
Mais même eux semblaient ne servir à rien, car certaines strings se retrouvaient en ligne

C'était finalement une énorme fausse piste, mais le challenge étant "Extrème", je suis resté persuadé qu'il fallait trouver la clef dans ces ELF.

L'indice

La fin du CTF approchant, et ayant assez de points pour rester top 10, j'ai acheté les indices du challenge
Ces deux indices m'ont poussé à croire que ma piste des ELF était un gros cul de sac, et qu'il fallait revenir sur le KDBX
J'ai donc créé un fichier KDBX de test avec le mot de passe lexluthor et un fichier de clef, pour le cracker via john. Ca marche.
Au vu de l'indice, le KDBX s'ouvre certainement avec un fichier de clef et un mot de passe (car j'avais déjà essayé d'ouvrir le KDBX avec chaque fichier de chat en guise de clef)
Il ne reste donc plus qu'à tenter de cracker le hash du KDBX avec chaque image de chat (et une sans aucune image, histoire de couvrir un maximum de cas)

Comme l'indice disait "inutile de repartir de zéro", et que nous n'avons pas utilisé les "rules" de john pour cracker le zip, je me suis dit que le KDBX demanderait d'utiliser ces rules. Donc, je suis parti du agentkitty, des rules et des hashs KDBX avec chacun des fichiers

Au vu de l'indice, j'ai aussi essayé john avec tout ce qui se trouve dans rockyou, et qui a un lien avec agentkitty
Après beaucoup d'essais, je finis par trouver un mot de passe qui marche! Agentkitty3, seul mot de ma wordlist.txt avec les rules de base (--rules=all était trop long)

La clef du fichier

En essayant le mot de passe Agentkitty3 avec chacun des fichiers de photo de chat en guise de fichier clef (car j'ai oublié lequel était le bon), on ouvre enfin le coffre
On export tous les mots de passe pour les analyser tranquilement (parce que le coffre en contient beaucoup!)
On peut maintenant chercher, dans ces mots de passe, le flag
Mais rien… alors je cherche un truc qui pourrait ressembler au flag, puisque les mots de passe semblaient générés aléatoirement. Une entrée ressort
Comme le base64 -d n'a rien donné, j'ai regardé l'historique de cette entrée dans le KDBX

Flag

Et en regardant chaque entrée de cet historique, on trouve le flag:
404CTF{D3l3t1nG_4nD_P4sSw0Rds_n0T_3N0UgH}

Sans les indices, je n'aurai jamais autant insisté pour casser le KDBX. Pas de regret à avoir acheté ces indices donc, même s'ils m'ont coûté la 7e place (mais bon, je suis 10e, ca va). D'autant plus que ces indices m'ont permis de flagger ce challenge à 1000 points, mais aussi le suivant à 1000 points aussi (je savais qu'il y aurait un autre challenge 4/4 donc que les indices seraient sûrement rentables)

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil