
Verso l'emulazione su larga scala del firmware IoT per l'analisi dinamica
FirmAE è un framework completamente automatizzato che esegue l'emulazione e l'analisi delle vulnerabilità. FirmAE aumenta significativamente il tasso di successo dell'emulazione (dal 16,28% di Firmadyne al 79,36%) grazie a cinque tecniche di arbitraggio. Abbiamo testato FirmAE su 1.124 immagini firmware di router wireless e telecamere IP dei primi otto vendor.
Abbiamo inoltre sviluppato uno strumento di analisi dinamica per la scoperta di 0-day, che deduce le informazioni sui servizi web basandosi sul filesystem e sui log del kernel del firmware target. Eseguendo il nostro strumento sulle immagini firmware emulate con successo, abbiamo scoperto 12 nuove 0-day che colpiscono 23 dispositivi.
Nota: abbiamo testato FirmAE su Ubuntu 20.04.
FirmAE$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
download.sh.$ ./download.sh
install.sh.$ ./install.sh
init.sh.$ ./init.sh
$ wget https://github.com/pr0v3rbs/FirmAE/releases/download/v1.0/DIR-868L_fw_revB_2-05b02_eu_multi_20161117.zip
$ sudo ./run.sh -c <brand> <firmware>
$ sudo ./run.sh -a <brand> <firmware>
$ sudo ./run.sh -r <brand> <firmware>
Dopo che run.sh -c è terminato.
Utile per capire se un firmware emulato è raggiungibile in rete o meno.
socat, la reverse shell nc (31337) e la
connessione telnet (31338)$ sudo ./run.sh -d <brand> <firmware>
$ sudo ./run.sh -b <brand> <firmware>
Controllare le variabili d'ambiente dei cinque arbitraggi in firmae.config
$ head firmae.config
#!/bin/sh
FIRMAE_BOOT=true
FIRMAE_NETWORK=true
FIRMAE_NVRAM=true
FIRMAE_KERNEL=true
FIRMAE_ETC=true
if (${FIRMAE_ETC}); then
TIMEOUT=240
Per prima cosa, preparare un'immagine docker.
$ ./docker-init.sh
Quindi, eseguire uno dei comandi seguenti. -ec verifica solo
l'emulazione, mentre -ea verifica l'emulazione e analizza le
vulnerabilità.
$ ./docker-helper.py -ec <brand> <firmware>
$ ./docker-helper.py -ea <brand> <firmware>
Qui, <firmware> può essere un file di testo che elenca i percorsi delle
immagini firmware. Controllare il file di esempio in
./examples/test.list.
Dopo che un'immagine firmware è stata emulata con successo.
$ ./docker-helper.py -ed <firmware>
Foglio di calcolo Google - visualizza
Google Drive - scarica
Questo progetto di ricerca è stato condotto dal SysSec Lab presso il KAIST.
Vi saremmo grati se consideraste di citare il nostro articolo quando utilizzate FirmAE.
@inproceedings{kim:2020:firmae,
author = {Mingeun Kim and Dongkwan Kim and Eunsoo Kim and Suryeon Kim and Yeongjin Jang and Yongdae Kim},
title = {{FirmAE}: Towards Large-Scale Emulation of IoT Firmware for Dynamic Analysis},
booktitle = {Annual Computer Security Applications Conference (ACSAC)},
year = 2020,
month = dec,
address = {Online}
}