
Auf dem Weg zur groß angelegten Emulation von IoT-Firmware für die dynamische Analyse
FirmAE ist ein vollautomatisiertes Framework, das Emulation und Schwachstellenanalyse durchführt. FirmAE erhöht die Emulations-Erfolgsrate erheblich (von Firmadynes 16,28 % auf 79,36 %) mit fünf Arbitrations-Techniken. Wir haben FirmAE mit 1.124 Firmware-Images von WLAN-Routern und IP-Kameras der acht führenden Hersteller getestet.
Wir haben außerdem ein dynamisches Analysewerkzeug für die 0-Day-Entdeckung entwickelt, das Webservice-Informationen basierend auf dem Dateisystem und den Kernel-Logs der Zielfirmware ableitet. Durch den Einsatz unseres Werkzeugs auf den erfolgreich emulierten Firmware-Images haben wir 12 neue 0-Days entdeckt, die 23 Geräte betreffen.
Beachte, dass wir FirmAE auf Ubuntu 20.04 getestet haben.
FirmAE$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
download.sh aus.$ ./download.sh
install.sh aus.$ ./install.sh
init.sh aus.$ ./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>
Nachdem run.sh -c abgeschlossen ist.
Nützlich, um festzustellen, ob eine emulierte Firmware über das Netzwerk erreichbar ist oder nicht
socat-Verbindung, nc-Reverse-Shell (31337) und telnet-Verbindung (31338)$ sudo ./run.sh -d <brand> <firmware>
$ sudo ./run.sh -b <brand> <firmware>
Überprüfe die Umgebungsvariablen der fünf Arbitrations-Optionen in der 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
Bereite zunächst ein Docker-Image vor.
$ ./docker-init.sh
Führe dann einen der folgenden Befehle aus. -ec prüft nur die Emulation, und -ea prüft die Emulation und analysiert Schwachstellen.
$ ./docker-helper.py -ec <brand> <firmware>
$ ./docker-helper.py -ea <brand> <firmware>
Hier kann <firmware> eine Textdatei sein, die die Pfade der Firmware-Images auflistet. Die Beispieldatei findest du unter ./examples/test.list.
Nachdem ein Firmware-Image erfolgreich emuliert wurde.
$ ./docker-helper.py -ed <firmware>
Google-Spreadsheet - Ansicht
Google Drive - Download
Dieses Forschungsprojekt wurde vom SysSec Lab am KAIST durchgeführt.
Wir würden es schätzen, wenn du bei der Verwendung von FirmAE erwägst, unsere Arbeit zu zitieren.
@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}
}