
동적 분석을 위한 IoT 펌웨어의 대규모 에뮬레이션을 향하여
FirmAE는 에뮬레이션 및 취약점 분석을 수행하는 완전 자동화 프레임워크입니다. FirmAE는 다섯 가지 중재 기법을 통해 에뮬레이션 성공률을 크게 높입니다(Firmadyne의 16.28%에서 79.36%로). 상위 8개 벤더의 무선 라우터 및 IP 카메라 펌웨어 이미지 1,124개를 대상으로 FirmAE를 테스트했습니다.
또한 대상 펌웨어의 파일시스템과 커널 로그를 기반으로 웹 서비스 정보를 추론하는 0-day 발견용 동적 분석 도구도 개발했습니다. 성공적으로 에뮬레이션된 펌웨어 이미지에 이 도구를 실행하여 23개 기기에 영향을 주는 12개의 새로운 0-day를 발견했습니다.
FirmAE는 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>
run.sh -c가 완료된 후.
에뮬레이션된 펌웨어가 네트워크에 연결 가능한지 여부를 확인할 때 유용합니다.
socat 연결, nc 리버스 셸(31337) 및 telnet 연결(31338)을 지원합니다.$ sudo ./run.sh -d <brand> <firmware>
$ sudo ./run.sh -b <brand> <firmware>
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
먼저, docker 이미지를 준비하세요.
$ ./docker-init.sh
그런 다음 아래 명령 중 하나를 실행하세요. -ec는 에뮬레이션만 확인하고, -ea는 에뮬레이션 확인 및 취약점을 분석합니다.
$ ./docker-helper.py -ec <brand> <firmware>
$ ./docker-helper.py -ea <brand> <firmware>
여기서 <firmware>는 펌웨어 이미지 경로를 나열한 텍스트 파일일 수 있습니다. ./examples/test.list에서 샘플 파일을 확인하세요.
펌웨어 이미지가 성공적으로 에뮬레이션된 후.
$ ./docker-helper.py -ed <firmware>
구글 스프레드시트 - 보기
구글 드라이브 - 다운로드
이 연구 프로젝트는 KAIST의 SysSec Lab에서 수행되었습니다.
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}
}