[NDH2k16] Hello friend

Hello Friend était une des épreuves du Wargame de la Nuit du Hack 2K16. Elle consistait en une image (ci-dessus) et l’énoncé suivant :

You're angry at everyone, at society !

On commence par utiliser les outils classiques comme file et strings afin de voir ce que nous réserve cette image.

file hellofriend.jpg	
hellofriend.jpg: JPEG image data, JFIF standard 1.01

Jusque là rien d’alarmant.

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 découvre une arboresence de fichiers dans l’image, il s’agit probablement d’une archive ZIP. On utilise binwalk pour vérifier :

binwalk hellofriend.jpg
DECIMAL   	HEX       	DESCRIPTION
-------------------------------------------------------------------------------------------------------
3192      	0xC78     	TIFF image data, big-endian
3311      	0xCEF     	LZMA compressed data, properties: 0x04, dictionary size: 16777216 bytes, uncompressed size: 262144 bytes
116141    	0x1C5AD   	Zip archive data, at least v2.0 to extract, compressed size: 6264, uncompressed size: 6376, name: "WhoAmI.png"  
122445    	0x1DE4D   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/"  
122488    	0x1DE78   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/0/"  
122533    	0x1DEA5   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/0/64.png"  
126981    	0x1F005   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/1/"  
127026    	0x1F032   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/1/61.png"  
131474    	0x20192   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/2/"  
131519    	0x201BF   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/2/72.png"  
135967    	0x2131F   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/3/"  
136012    	0x2134C   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/3/6b.png"  
140460    	0x224AC   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/4/"  
140505    	0x224D9   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/4/63.png"  
144953    	0x23639   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/5/"  
144998    	0x23666   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/5/30.png"  
149446    	0x247C6   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/6/"  
149491    	0x247F3   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/6/64.png"  
153939    	0x25953   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/7/"  
153984    	0x25980   	Zip archive data, at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: "Hello_friend/7/65.png"  
158432    	0x26AE0   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/8/"  
158477    	0x26B0D   	Zip archive data, at least v2.0 to extract, compressed size: 101679, uncompressed size: 133658, name: "Hello_friend/8/IsItReal.jpg"  
260229    	0x3F885   	Zip archive data, at least v1.0 to extract, name: "Hello_friend/9/"  
260274    	0x3F8B2   	Zip archive data, at least v2.0 to extract, compressed size: 286495, uncompressed size: 298687, name: "Hello_friend/9/3xploits.jpg"  
549063    	0x860C7   	End of Zip archive 

On a donc un fichier dans lequel se trouve une image JPG qui est suivie par une archive ZIP. On change hellofriend.jpg vers hellofriend.zip et on essaye de dézipper. Malheureusement il faut un mot de passe.

Pour ceux qui ne connaissent pas la série Mr Robot rendez vous sur Wikipedia – Mr Robot

« Hello Friend » est aussi le premier message par lequel Elliot est contacté par Fsociety"

Du coup, un peu de guessing et on tente le mot de passe fsociety ce qui nous permet de d’extraire l’archive.

unzip hellofriend.jpg
=> [hellofriend.jpg] Hello_friend/0/64.png password: fsociety
cd hellofriend
tree
.
├── 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
└── WhoAmI.png

En appliquant la même méthode avec strings on constate qu’il y a encore une archive ZIP cachée dans le fichier 3xploits.jpg. De plus les images dans les dossiers de 0 à 7 sont identiques, leurs noms ressemblent fortement à de l’hexadécimal 6461726B63306465 = darckc0de on essaye avec ce mot de passe.

unzip Hello_friend/9/3xploits.jpg
=> [Hello_friend/9/3xploits.jpg] d3bug.png password: darckc0de

Mais c’est sans résultat. Après un rapide tour sur google on s’appercoit que darckc0de correspond à un dictionnaire de mots de passe darckc0de.txt qui se trouve dans Kali. On va devoir lancer un brute force avec fcrackzip mais avant il faut retirer l’image jpg qui se trouve devant le fichier zip :

fcrackzip -uDv -p ~/Downloads/darkc0de.txt 3xploits.jpg
found id dbffd8ff, '3xploits.jpg' is not a zipfile ver 2.xx, skipping
no usable files found

Pour retirer le jpg on va utiliser les commandes unzip et dd. unzip nous permet de connaitre la taille du fichier jpg et dd nous permet de l’enlever :

unzip -l 3xploits.zip 
Archive:  3xploits.zip
warning [3xploits.zip]:  186158 extra bytes at beginning or within zipfile
  (attempting to process anyway)
  Length      Date    Time    Name
---------  ---------- -----   ----
   302979  2016-05-05 23:49   d3bug.png
---------                     -------
   302979                     1 file
dd if=3xploits.jpg of=3xploits.zip skip=1 bs=186158
0+1 records in
0+1 records out
112529 bytes (113 kB) copied, 0,0167912 s, 6,7 MB/s

Et on peut ainsi lancer notre fcrackzip :

fcrackzip -uDv -p darkc0de.txt 3xploits.zip
found file 'd3bug.png', (size cp/uc 112361/302979, flags 9, chk be20)
PASSWORD FOUND!!!!: pw == How do you like me now?

On a enfin le flag et on marque 150 points !

Leave a Reply

Your email address will not be published. Required fields are marked *