CSAW CTF Write-up forensics 1 à 4

Les épreuves de forensics données au CSAW CTF n’étaient pas vraiment ce à quoi je m’attendais, mais on a quand même réussi à en résoudre la plupart. Les challenges ont été confectionnés par Efstratios Gavas (@xtrat), Directeur du Laboratoire de cyber-sécurité à l’Université Polytechnique de New York ! Rien que ça :)


 

1: Quelle est l’adresse postale ?

On nous donne ce fichier qui ressemble à une image JPEG mais avec un mauvais entête :

$ hexdump -C 1.jpg |head -n1
00000000  ff db ff e0 00 10 4a 46  49 46 00 01 01 01 00 48  |......JFIF.....H|

On peut supposer que le fichier a été endommagé, donc on va juste remplacer le b par le 8 attendu.

$ hexdump -C 1-header-fixed.jpg |head -n1
00000000  ff d8 ff e0 00 10 4a 46  49 46 00 01 01 01 00 48  |......JFIF.....H|

Maintenant on peut voir l’image, endommagée, mais on peut toujours lire Alexandria Center sur les fenêtres du bâtiment étincelant. Il ne nous faut pas longtemps pour trouver ce bâtiment sur wikipedia, puis sur Google maps et on a enfin son adresse complète :

450 East 29th Street
New York, NY 10016, United Stats
(646) 223-3880

La partie la plus difficile de cette épreuve était de trouver la bonne manière d’envoyer l’adresse au serveur… on a mis du temps avant de comprendre qu’il fallait juste envoyer la première ligne complète (pas de E/E./St/St.) :

$ send "450 East 29th Street"
KEY FOUND FOR What is the street address?.  100 POINTS AWARDED!

Remarque : send est une petite fonction shell que j’ai faite pour nous simplifier l’envoi des flags, ça repose sur curl pour envoyer la requête POST :

send() { curl -Gs -d team=<team> -d password=<password> --data-urlencode "key=$1" 'http://128.238.66.100/submit.php'; echo; }

 

2: Hache-moi.

On nous donne une archive tar contenant plusieurs fichiers. L’un d’entre eux possède une entête JPEG, un autre le marqueur de fin. En supposant que les autres fichiers soient les différentes parties du fichier JPEG, notre objectif est de reconstruire l’image à partir de ces morceaux. A partir de là on essaiera plusieurs algorithmes de hachage : md5, sha1, etc. Cette épreuve s’est révélée bien trop facile pour Dad` qui l’a rapidement résolue :

$ tar xf 2.tar ; cd 2
$ cat 465893 330404 208409 192959 283415 232579 428750 466450 358848 203839 > 2-reconstructed.jpg
$ md5sum 2-reconstructed.jpg
fdcf752c21f20ddbf02ddcc2025d5c2c 2-reconstructed.jpg
$ send fdcf752c21f20ddbf02ddcc2025d5c2c
KEY FOUND FOR Even block size reconstruction.  200 POINTS AWARDED!

 

3: Que bois-je ?

On nous donne une image. On dirait que la personne boît un thé Cafés Richard. Mais lequel ? On a passé plusieurs heures à tenter d’envoyer les noms de thés proposés par les Cafés Richard, dans différents formats, mais sans succès.

La stéganographie n’a pas donné de bons résultats avec stegdetect ou stegbreak, et voyant qu’aucune équipe ne trouvait l’épreuve, les organisateurs nous ont donné un indice :

DERNIERES NOUVELLES : EFSTRATIOS A ETE HACKE ET LE CONTENU DE SON ORDINATEUR A ETE ENVOYE
SUR INTERNET. STRAT AVAIT PREVU QUE CELA POUVAIT ARRIVER ET A CHIFFRE TOUT CE QUI CONCERNAIT
LE CSAW. CEPENDANT, EN REGARDANT LE CONTENU, VOUS ARRIVEZ A TROUVER DES TRACES DU
PROGRAMME POPULAIRE DE STEGANOGRAPHIE NOMME STEGHIDE.

En utilisant steghide et “cafes richard”, on peut extraire la stéganographie :

$ steghide extract -sf 3.jpg -p "cafes richard"
wrote extracted data to "embedded.txt".
$ cat embedded.txt
ec2aaddcd885b726ce022f6dda4cc10f  what-am-i-drinking.jpg
$ send ec2aaddcd885b726ce022f6dda4cc10f
KEY FOUND FOR What Am I Drinking? 300 POINTS AWARDED!

 

4: Rick Ashtley est en moi.

On nous donne un fichier nommé 4.tc, qui est – d’après l’extension – un conteneur TrueCrypt.

En utilisant le titre comme un indice, on tente de lancer une attaque par force brute sur le conteneur et avec une liste de mots de passe utilisant “Rick As(h)tley” (le “h” était-il intentionnel ?) en mixant les majuscules/minuscules. Sans succès. La même chose avec sa célèbre chanson Never gonna give you up, et quelques autres mots-clés. Sans succès non plus.

A nouveau, voyant qu’aucune équipe ne trouve, les organisateurs nous donnent un indice :

EN PLUS DE STEGHIDE, VOUS TROUVEZ LA PHRASE "Use what you already know." PARTOUT
DANS SON ORDINATEUR. VOUS SUPPOSEZ QUE CELA CONCERNE FORENSICS 4.
 
!IMPORTANT : SI VOUS ESSAYEZ DE RESOUDRE LA PARTIE 1 DE FORENSICS 4,
VOUS DEVRIEZ AJOUTER UN ESPACE A TOUTES LES CLES QUE VOUS ESSAYEZ.

Après plusieurs essais, il apparaît que le volume TrueCrypt peut être ouvert avec la clé précédente plus un espace (ne me dites pas comment on était sensés trouver ça) :

$ mkdir 4
# truecrypt -t -p "ec2aaddcd885b726ce022f6dda4cc10f " -k "" --protect-hidden=no 4.tc 4/
$ ls -lh 4/
total 3.4M
-rwx------ 1 root root 3.4M Sep 19 19:10 rick.avi*

On obtient le célèbre clip de Rick Astley, avec la première clé apparaissant à l’écran au milieu de la vidéo :

$ send "C955E7A54"
KEY FOUND FOR Open Truecrypt1 200 POINTS AWARDED!

J’ai ensuite essayé un peu d’analyse forensique sur le volume TrueCrypt, par exemple en déchiffrant le volume et sans le monter pour pouvoir le copier et l’analyser :

# truecrypt -t -p "ec2aaddcd885b726ce022f6dda4cc10f " -k "" --protect-hidden=no 4.tc 4/
$ truecrypt -t -l
1: /tmp/4.tc /dev/mapper/truecrypt1 -
$ dd if=/dev/mapper/truecrypt1 of=4.tc.decrypted
9728+0 records in
9728+0 records out
4980736 bytes (5.0 MB) copied, 0.187657 s, 26.5 MB/s
$ file 4.tc.decrypted
4.tc.decrypted: x86 boot sector

Une analyse rapide avec le Sleuth Kit ou l’outil de récupération de fichiers foremost se révèle infructueuse. Comme on pouvait s’y attendre avec TrueCrypt, l’espace libre est composé de données aléatoires qui n’aident pas.

Nous n’avons pas trouvé cette partie de l’épreuve, mais on a appris une fois la compétition terminée qu’il fallait utiliser le fichier contenu dans le volume – la vidéo de rick – comme fichier clé pour ouvrir le volume caché du conteneur. En effet :

# truecrypt -t -p "" -k rick.avi --protect-hidden=no 4.tc 4/
$ ls -lh 4/
total 512
-rwx------ 1 root root 33 Sep 19 19:43 you-have-suffered-enough.txt*
$ cat 4/you-have-suffered-enough.txt
0c7817b9142c9e4141e50bad95a1d33c

C’est la clé. Pourquoi pas, mais je ne suis pas sûr qu’on mette souvent la clé de son précieux volume caché dans le volume principal :)

C’est tout pour les épreuves de forensics !

Tags: CSAW, ctf, forensics

2 Comments

Leave a Reply

XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">