
Vers l'émulation à grande échelle de firmware IoT pour l'analyse dynamique
FirmAE est un framework entièrement automatisé qui effectue l'émulation et l'analyse de vulnérabilités. FirmAE augmente considérablement le taux de réussite de l'émulation (de 16,28 % pour Firmadyne à 79,36 %) grâce à cinq techniques d'arbitrage. Nous avons testé FirmAE sur 1 124 images de firmware de routeurs sans fil et de caméras IP provenant des huit principaux fournisseurs.
Nous avons également développé un outil d'analyse dynamique pour la découverte de failles 0-day, qui déduit les informations des services web à partir du système de fichiers et des journaux du noyau du firmware cible. En exécutant notre outil sur les images de firmware émulées avec succès, nous avons découvert 12 nouvelles failles 0-day qui affectent 23 appareils.
Notez que nous avons testé FirmAE sur 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>
Après la fin de run.sh -c.
Utile pour savoir si un firmware émulé est accessible via le réseau ou non.
socat, le shell inversé nc (31337) et la connexion telnet (31338)$ sudo ./run.sh -d <brand> <firmware>
$ sudo ./run.sh -b <brand> <firmware>
Vérifiez les variables d'environnement des cinq arbitrages dans 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
Tout d'abord, préparez une image Docker.
$ ./docker-init.sh
Ensuite, exécutez l'une des commandes ci-dessous. -ec vérifie uniquement l'émulation, et -ea vérifie l'émulation et analyse les vulnérabilités.
$ ./docker-helper.py -ec <brand> <firmware>
$ ./docker-helper.py -ea <brand> <firmware>
Ici, <firmware> peut être un fichier texte qui répertorie les chemins des images de firmware. Consultez le fichier d'exemple dans ./examples/test.list.
Après qu'une image de firmware a été émulée avec succès.
$ ./docker-helper.py -ed <firmware>
Feuille de calcul Google - voir
Google Drive - télécharger
Ce projet de recherche a été mené par le SysSec Lab de la KAIST.
Nous vous serions reconnaissants de citer notre article lorsque vous utilisez 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}
}