
動的解析のためのIoTファームウェアの大規模エミュレーションに向けて
FirmAEは、エミュレーションと脆弱性分析を実行する完全自動化フレームワークです。 FirmAEは、5つの仲裁技術により、エミュレーション成功率を大幅に向上させます( Firmadyneの16.28%から79.36%へ)。 上位8社のベンダーによる1,124のワイヤレスルーターおよび IPカメラのファームウェアイメージでFirmAEをテストしました。
また、0-day発見のための動的分析ツールも開発しました。このツールは、対象ファームウェアの ファイルシステムとカーネルログに基づいてWebサービス情報を推測します。 正常にエミュレーションされたファームウェアイメージに対してこのツールを実行することで、 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 内の5つの仲裁環境変数を確認してください
$ 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>
Googleスプレッドシート - 表示
Googleドライブ - ダウンロード
この研究プロジェクトは、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}
}