/ stegano

NDH2K16 - Hello Friend

Classé dans la catégorie Web, ce challenge est en fait de la stéganographie. En suivant l'URL fournie on retrouve cette image :

img

L'énoncé du challenge et l'image font penser à l'excellente série Mr Robot...essayons de fouiller un peu en commençant par rechercher les strings du fichier en remarquant des choses intéressantes :

$ strings hellofriend.jpg
[...]
WhoAmI.png
Hello_friend/
Hello_friend/0/
Hello_friend/0/64.png
Hello_friend/1/
Hello_friend/1/61.png
Hello_friend/2/
Hello_friend/2/72.png
Hello_friend/3/
Hello_friend/3/6b.png
Hello_friend/4/
Hello_friend/4/63.png
Hello_friend/5/
Hello_friend/5/30.png
Hello_friend/6/
Hello_friend/6/64.png
Hello_friend/7/
Hello_friend/7/65.png
Hello_friend/8/
Hello_friend/8/IsItReal.jpg
Hello_friend/9/
HaVft
Hello_friend/9/3xploits.jpg

On peut penser à priori que des choses sont cachées dans cette image...L''utilisation de foremost nous permet de ressortir une archive zip de l'image :

$ foremost hellofriend.jpg
[...]
2 FILES EXTRACTED
	
jpg:= 1
zip:= 1

Essayons maintenant de décompresser l'archive pour découvrir tous ses secrets... Mais...

$ unzip hellofriend.zip
Archive:  hellofriend.zip
  inflating: WhoAmI.png              
[hellofriend.zip] Hello_friend/0/64.png password:

Nous avons donc une image et un dossier contenant une image protégée...Ce mot de passe est de plus utilisé pour protéger d'autres répertoires contenant chacun une image.

Les tentatives de bruteforce à l'aide de John The Ripper s'avèrent inefficaces. Les indices laissés (le masque de la F-Society...) nous poussent à tenter des mots-clés en lien avec la série Mr Robot.

Après quelques essais infructueux, bingo ! Le mot de passe à deviner était fsociety.

Une fois l'archive décompressée, nous obtenons l'arborescence suivante

Hello_friend
├── 0
│   └── 64.png
├── 1
│   └── 61.png
├── 2
│   └── 72.png
├── 3
│   └── 6b.png
├── 4
│   └── 63.png
├── 5
│   └── 30.png
├── 6
│   └── 64.png
├── 7
│   └── 65.png
├── 8
│   └── IsItReal.jpg
└── 9
    ├── 3xploits.jpg

Les images des dossiers [0-7] sont identiques et rien n'indique que des choses soient cachées dedans... Mais si l'on concatène leurs noms et que l'on tente de décoder on obtient en convertissant de Hex à ASCII le mot darkc0de.

En regardant les images dans les dossiers 8 et 9, on remarque que l'image 9 contient encore une fois une archive zip, qui est encore une fois protégé par un mot de passe... Guessing ? Quelques recherches sur le mot darkc0de orientent plutôt sur un bruteforce par dictionnaire, celui-ci étant très populaire et disponible un peu partout sur le Web.

On utilisera ici John The Ripper pour lancer notre bruteforce, en utilisant ce blog qui explique très bien comment extraire d'abord les hashs des archives et ensuite de lancer l'attaque.

Une fois les hashs extraits, on lance le bruteforce

$ john archive.hashes --wordlist=/home/sam/Downloads/darkc0de.lst
[...]

$ john final.hashes --show
00000363.zip:How do you like me now?:::::00000363.zip

1 password hash cracked, 0 left

En utilisant ce password pour déchiffrer l'archive on obtient de nouveau une image debug.png qui contient le flag :

NDH2K16_14FA4C7FFCFB712577E1F57A5F5570B184FBE9