
Hacia la emulación a gran escala de firmware de IoT para análisis dinámico
FirmAE es un framework totalmente automatizado que realiza emulación y análisis de vulnerabilidades. FirmAE aumenta significativamente la tasa de éxito de emulación (del 16.28% de Firmadyne al 79.36%) mediante cinco técnicas de arbitraje. Probamos FirmAE en 1,124 imágenes de firmware de routers inalámbricos y cámaras IP de los ocho principales fabricantes.
También desarrollamos una herramienta de análisis dinámico para el descubrimiento de vulnerabilidades de día cero, que infiere información del servicio web basándose en el sistema de archivos y los registros del kernel del firmware objetivo. Al ejecutar nuestra herramienta sobre las imágenes de firmware emuladas con éxito, descubrimos 12 nuevas vulnerabilidades de día cero que afectan a 23 dispositivos.
Ten en cuenta que probamos FirmAE en 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 <marca> <firmware>
$ sudo ./run.sh -a <marca> <firmware>
$ sudo ./run.sh -r <marca> <firmware>
Después de que run.sh -c haya terminado.
Útil para saber si un firmware emulado es accesible por red o no
socat, shell inversa nc (31337) y conexión telnet (31338)$ sudo ./run.sh -d <marca> <firmware>
$ sudo ./run.sh -b <marca> <firmware>
Comprueba las cinco variables de entorno de arbitraje en 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
Primero, prepara una imagen de docker.
$ ./docker-init.sh
Después, ejecuta uno de los siguientes comandos. -ec comprueba solo la emulación, y
-ea comprueba la emulación y analiza vulnerabilidades.
$ ./docker-helper.py -ec <marca> <firmware>
$ ./docker-helper.py -ea <marca> <firmware>
Aquí, <firmware> puede ser un archivo de texto que liste las rutas de las imágenes de firmware.
Consulta el archivo de ejemplo en ./examples/test.list.
Después de que una imagen de firmware se emule con éxito.
$ ./docker-helper.py -ed <firmware>
Hoja de cálculo de Google - ver
Google drive - descargar
Este proyecto de investigación ha sido llevado a cabo por SysSec Lab en KAIST.
Agradeceríamos que consideraras citar nuestro artículo al usar 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}
}