
Rumo à Emulação em Grande Escala de Firmware de IoT para Análise Dinâmica
O FirmAE é um framework totalmente automatizado que realiza emulação e análise de vulnerabilidades. O FirmAE aumenta significativamente a taxa de sucesso da emulação (de 16,28% do Firmadyne para 79,36%) com cinco técnicas de arbitragem. Testamos o FirmAE em 1.124 imagens de firmware de roteadores sem fio e câmeras IP dos oito principais fabricantes.
Também desenvolvemos uma ferramenta de análise dinâmica para descoberta de 0-day, que infere informações de serviços web com base no sistema de arquivos e nos logs do kernel do firmware alvo. Ao executar nossa ferramenta nas imagens de firmware emuladas com sucesso, descobrimos 12 novos 0-days que afetam 23 dispositivos.
Observe que testamos o FirmAE no 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>
Após a conclusão do run.sh -c.
Útil para verificar se um firmware emulado está acessível pela rede ou não
socat, shell reverso nc (31337) e conexão telnet (31338)$ sudo ./run.sh -d <brand> <firmware>
$ sudo ./run.sh -b <brand> <firmware>
Verifique a variável de ambiente das cinco arbitragens no 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
Primeiro, prepare uma imagem docker.
$ ./docker-init.sh
Em seguida, execute um dos comandos abaixo. -ec verifica apenas a emulação, e
-ea verifica a emulação e analisa vulnerabilidades.
$ ./docker-helper.py -ec <brand> <firmware>
$ ./docker-helper.py -ea <brand> <firmware>
Aqui, <firmware> pode ser um arquivo de texto que lista os caminhos das imagens de firmware.
Consulte o arquivo de exemplo em ./examples/test.list.
Após a emulação bem-sucedida de uma imagem de firmware.
$ ./docker-helper.py -ed <firmware>
Planilha do Google - visualizar
Google drive - baixar
Este projeto de pesquisa foi conduzido pelo SysSec Lab no KAIST.
Agradeceríamos se você considerasse citar nosso artigo ao usar o 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}
}