jeudi 29 septembre 2011

CTF Quals CSAW 2011 - Networking Hardware

Salut !

Voici le writeup du 2eme challenge de la partie Networking, pour 200 pts.

Description

On nous fournit un fichier capture .pcap et on nous demande de trouver le md5 de l’image.

1. Analyse
On ouvre le fichier pcap avec Wireshark pour analyser le contenu des échanges.On constate qu’il s’agit d’une transmission via USB.

On sait qu’on doit trouver une image donc on peut faire une recherche sur la chaîne de caractère JFIF par exemple.

On arrive directement sur le paquet 1534 qui contient effectivement le début d’une image jpeg. En cherchant les octets FF D9 (fin d’une image jpeg), on remarque que l’image est contenue entre les paquets 1534 et 1542. Voyons voir un peu ce que représente cette image.

2.Travail sur l'image

On peut extraire l’image à partir d’un éditeur hexadécimal. On ouvre le pcap dans Hex Workshop par exemple et on ne garde que le code contenu entre les paires d’octets FF D8 et FF D9. On enregistre le fichier en .jpeg et on l’ouvre :



On pourrait penser que l’image est incomplète mais en regardant de plus près les paquets dans Wireshark, on remarque que c’est le contraire. En effet, chaque paquet transmis est affublé d’une sorte d’en-tête facilement repérable car elle contient les octets F3 4D 75 4E.


L’image étant contenue dans 9 paquets, on a 8 blocs similaires à cet en-tête qui ont été répartis au sein du code de l’image. Cette dernière était donc bruitée.Notre but va être de chercher les occurrences des octets F3 4D 75 4E et de supprimer les blocs de code associés.

On supprime les 8 blocs de 80 octets, on enregistre et on ouvre le fichier :




C’est déjà beaucoup mieux !!!

Bon on récupère le md5 de l’image et on le rentre comme flag… mais ça marche pas !


Est-ce qu’on aurait oublié de supprimer un bloc ?Eh bien non ! La solution est bien plus perfide. En effet, en examinant de plus près le contenu des paquets sur Wireshark, on voit que la fin du dernier ressemble à ça :
Les octets FF D9 désignant la fin de l’image ne sont pas immédiatement suivis par des zéros mais par les 5 octets suivants : 35 50 46 34 0A. Ceci peut faire penser aux techniques de stéganographie utilisées pour signer certaines images. On rajoute de l’information après les marqueurs de fin FF D9 et ainsi la qualité de l’image n’est pas altérée. On peut donc interpréter les 5 octets supplémentaires comme une signature.


On enregistre la nouvelle image obtenue après l’ajout de ces octets et on calcule son md5, ce qui nous donne : 1d45728c91cc401f546178664e42f471.


On rentre donc le flag 1d45728c91cc401f546178664e42f471 qui cette fois valide l’épreuve.


3. Tools
  • Wireshark
  • Hex Workshop

Aucun commentaire:

Enregistrer un commentaire