- Elettronica Open Source - https://it.emcelettronica.com -

Estrarre dati da un immagine del Firmware

I file di sistema attraverso l'analisi dell'immagine del firmware

La capacità di estrarre dati da un’immagine del firmware è estremamente utile e molto laborioso. L’idea è estrarre i file di sistema del kernel e il suo firmware, esaminando il file di aggiornamento firmware per il Linksys WAG120N. L'immagine del firmware utilizzato è per la versione hardware WAG120N 1.0, la versione del firmware 1.00.16 (ETSI), pubblicato il 16/08/2010 ed è attualmente disponibile per il download dal sito Web di Linksys. La prima cosa da fare con una immagine del firmware è quello di eseguire l'utilità di file di Linux nei suoi confronti per essere sicuri che non è un archivio standard o file compresso. Successivamente si procederà con l’analisi attraverso Binwalk.

Cerchiamo di capire che cosa si intende di firmware in questo caso e poi ci dedichiamo al Binwalk. In alcuni apparati che realizzano le reti di calcolatori, come router e molti switch di fascia media e alta, la parola firmware ha un significato più ampio: indica il vero e proprio sistema operativo dell'apparato, che ne gestisce tutte le funzioni, possiede un'interfaccia utente spesso non banale (accessibile via porta seriale, o via rete con i protocolli SNMP, telnet, SSH, HTTP, TFTP o anche FTP per il trasferimento di file di configurazione o nuove versioni del fimware), permette di monitorare ed intervenire sul funzionamento dell'apparato e di modificarne la configurazione.

Data la complessità delle funzioni realizzate dal firmware in questi casi, gli aggiornamenti per aggiungere funzionalità o per correggere bug possono essere frequenti. Anche in questi casi, il firmware è memorizzato su una memoria non volatile ROM o EEPROM. Spesso esiste un altro componente software più semplice e di livello più basso, che si occupa delle funzioni minimali necessarie a gestire la memoria non volatile e a caricare il firmware, denominato bootloader. A proposito di estrarre dati all’interno di immagini del firmware, binwalk è uno strumento per la ricerca di una determinata immagine binaria per i file incorporati. In particolare, è progettato per identificare i file incorporati all'interno di immagini del firmware.

Binwalk utilizza la libreria libmagic ed include anche un file di firma magica che contiene le firme migliorate per i file che si trovano comunemente in immagini del firmware come file archiviati, le intestazioni del firmware, kernel Linux, bootloader, filesystem, ecc L'unica opzione necessaria per Binwalk è il file che si desidera cercare:

$. / Binwalk firmware.bin Con binwalk di default userà le firme di magic.fx, ma è possibile specificare qualsiasi altra firma del file libmagic compatibile con l'opzione-m:

$. / Binwalk-m / usr / share / misc / magic firmware.bin.

Con binwalk di default si verifica per le firme di file valide in qualsiasi punto del file di destinazione [1]. Ciò significa che la scansione di un file di 4MB è l'equivalente di esecuzione dell'utilità file Unix 4 milioni di volte. Per diminuire il tempo di scansione, è possibile specificare l'allineamento di byte da utilizzare tramite l'opzione-b.

Per la compressione di sola lettura del file system, SquashFS rappresenta una buona soluzione. SquashFS (software open source, licenza GPL) comprime i file , gli inode e le directory , e supporta blocco di dimensioni fino a 1 MB per una maggiore compressione. SquashFS è destinato esclusivamente per file system da utilizzare in lettura in cui è necessario un basso overhead. SquashFS versione 4 è incluso nel Linux Kernel 2.6.29 e supporta XZ (LZMA2) compressione dal 2.6.38.

Perché Squashfs LZMA? LZMA è uno dei migliori algoritmi di compressione e Squashfs è uno dei filesystem più compressi oggi disponibili. LZMA è in grado di comprimere molto meglio di gzip, che è stata per anni l'unica opzione in squashfs.