Abbiamo già trattato in altri articoli le tecniche e gli strumenti utili per eseguire il
reverse engineering di protocolli di comunicazione come l'
USB, o di codice binario come per esempio un semplice
virus.
Per proseguire la
serie di tutorial utili per intraprendere questo particolare ramo dell'informatica, segnalo un interessante articolo comparso sul sito
/dev/ttys0, su come eseguire il
reverse engineering dei firmware di dispositivi embedded. Il tutorial si prefigge di indicare gli strumenti e i passi necessari per estrarre i dati dalle immagini dei firmware, con lo scopo di trovare possibili bug, vulnerabilità o violazioni di licenze GPL, pur non avendo accesso al dispositivo che lo supporta.
Lo sviluppatore noto con lo pseudonimo
Craig ha eseguito tali tecniche su una nuova release del firmware per il router
Linksys Wireless-N WWAG120, con l'intento di trovare ed estrarre i file di sistema del kernel e l'immagine del file system. La versione utilizzata è la
1.00.16 (ETSI) Allegato B, pubblicata il 16 agosto 2010, disponibile per il download dal
sito di Linksys.
Come
prerequisiti per poter eseguire i passi descritti, occorrono una distribuzione di Linux, l'utility
binwalk, buone conoscenze di Assembly x86 e qualche nozione relativa a strumenti comunemente utilizzati nel mondo
embedded, come il file system compresso
read-only SquashFS, il boot loader
U-Boot, e il toolkit
Jeremy Collake firmware mod kit.
Il
tutorial risulta molto ben documentato e dettagliato, con
figure che aiutano a svelare passo passo i segreti del firmware. Il risultato del resoconto è stato quello di ottenere una copia del boot loader del router, del kernel utilizzato e del file system, pronti per essere ulteriormente analizzati.