Challs hardware pour un softeux
Ce billet de blog est disponible au format plaintext, MarkDown, org et HTM. Il est disponible uniquement en français, si vous voulez le traduire, envoyez-moi un mail avec pour sujet “traduction [article] [langue]” avec ou dans le corp du mail ou en pièce jointe la traduction au format de votre choix.
Avec Whiterose, on discutait des multiples façons de résoudre un chall lors d'un CTF. Cela est partie d'une anecdocte où une personne lui a refusé un drapeau parce qu'elle n'avait pas fait “de la bonne manière”, ce que l'on trouve stupide. Il n'y a pas de bonnes manières pour résoudre un challenge. Elle en a réalisé quelques uns qui doivent se faire avec une carte hardware à flasher (avec un firmware de sa conception). Je n'ai, malheureusement, pas ce genre de matériel chez moi. Je suis un développeur et l'hardware me fait peur. Je sais par contre faire de la rétro-ingénierie.
Reverse moi le cul
Ses challs sont des fichiers .hex
qui contiennent les informations
pour la carte en hexadécimal. En consultant le fichier des
spécifications, il est indiqué que l'architecture est de l'AVR.
Après une rapide recherche, je tombe sur un article écrite par des
étudiants de l'UBS : Reverse a Binary Code with Ghidra. Ils ont
indiqué une commande pour convertir les fichiers .hex
en fichier
binaire. Et qui dit fichier binaire, dit strings
pour pouvoir
trouver des informations utiles, codées en brut. Et ça ne loupe pas,
il me suffit ensuite de décoder le flag trouvé, en base 64 ou en code
ASCII.
J'ai utilisé une image docker Ubuntu toute simple pour installer simplement le packet nécessaire pour pouvoir faire cette conversion.
docker run -v .:/opt/challs -ti ubuntu bash
apt update && apt install -y binutils-avr && cd /opt/challs
avr-objcopy -I ihex chall.hex -O binary chall.bin
exit
strings chall.bin
Conclusion
Eh oui, c'est déjà la fin. En conclusion, ce genre de chall n'est pas fait pour être RE. Et j'ai une envie de Monster maintenant.