pr0v3rbs/FirmAE
GitHub: pr0v3rbs/FirmAE
FirmAE是一个高成功率的IoT固件自动化仿真与动态漏洞分析框架,通过五种仲裁技术显著提升仿真成功率并支持自动化0-day漏洞挖掘。
Stars: 833 | Forks: 138
# FirmAE
FirmAE 是一个全自动化的框架,用于执行仿真和漏洞分析。FirmAE 通过五种仲裁技术显著提高了仿真成功率(从 [Firmadyne](https://github.com/firmadyne/firmadyne) 的 16.28% 提升至 79.36%)。我们在来自八家顶级厂商的 1,124 个无线路由器和 IP 摄像头固件镜像上测试了 FirmAE。
我们还开发了一个用于 0-day 发现的动态分析工具,该工具根据目标固件的文件系统和内核日志推断 Web 服务信息。
通过在成功仿真的固件镜像上运行我们的工具,我们发现了 12 个影响 23 台设备的全新 0-day 漏洞。
# 安装说明
请注意,我们在 Ubuntu 20.04 上测试了 FirmAE。
1. 克隆 `FirmAE`
```
$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
```
2. 运行 `download.sh` 脚本。
```
$ ./download.sh
```
3. 运行 `install.sh` 脚本。
```
$ ./install.sh
```
# 使用说明
1. 执行 `init.sh` 脚本。
```
$ ./init.sh
```
2. 准备一个固件。
```
$ wget https://github.com/pr0v3rbs/FirmAE/releases/download/v1.0/DIR-868L_fw_revB_2-05b02_eu_multi_20161117.zip
```
3. 检查仿真
```
$ sudo ./run.sh -c
```
4. 分析目标固件
* Analysis 模式使用 FirmAE 分析器
```
$ sudo ./run.sh -a
```
* Run 模式有助于测试 Web 服务或执行自定义分析器
```
$ sudo ./run.sh -r
```
## 调试
在 `run.sh -c` 完成后。
### 1. 用户级基本调试工具。
当仿真的固件网络是否可达时非常有用
* 它支持 `socat` 连接、`nc` 反向 shell (31337) 和 `telnet` 连接 (31338)
* 并且设置将自动完成
```
$ sudo ./run.sh -d
```
### 2. 内核级启动调试。
```
$ sudo ./run.sh -b
```
## 开启/关闭仲裁
检查 `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 镜像。
```
$ ./docker-init.sh
```
### 并行模式
然后,运行以下命令之一。```-ec``` 仅检查仿真,而 ```-ea``` 检查仿真并分析漏洞。
```
$ ./docker-helper.py -ec
$ ./docker-helper.py -ea
```
### 调试模式
在固件镜像成功仿真后。
```
$ ./docker-helper.py -ed
```
# 评估
## 仿真结果
Google 电子表格 -
[查看](https://docs.google.com/spreadsheets/d/1dbKxr_WOZ7UmneOogug1Zykj1erpfk-GzRNni8DjroI/edit?usp=sharing)
## 数据集
Google 云端硬盘 -
[下载](https://drive.google.com/file/d/1hdm75NVKBvs-eVH9rKb5xfgryNSnsg_8/view?usp=sharing)
# CVE 列表
- ASUS: [CVE-2019-20082](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2019-20082)
- Belkin: [Belkin01](https://github.com/pr0v3rbs/CVE/tree/master/Belkin01)
- D-Link: [CVE-2018-20114](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2018-20114),
[CVE-2018-19986](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2018-19986%20-%2019990#cve-2018-19986---hnap1setroutersettings),
[CVE-2018-19987](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2018-19986%20-%2019990#cve-2018-19987---hnap1setaccesspointmode),
[CVE-2018-19988](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2018-19986%20-%2019990#cve-2018-19988---hnap1setclientinfodemo),
[CVE-2018-19989](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2018-19986%20-%2019990#cve-2018-19989---hnap1setqossettings),
[CVE-2018-19990](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2018-19986%20-%2019990#cve-2018-19990---hnap1setwifiverifyalpha),
[CVE-2019-6258](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2019-6258),
[CVE-2019-20084](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2019-20084)
- TRENDNet: [CVE-2019-11399](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2019-11399),
[CVE-2019-11400](https://github.com/pr0v3rbs/CVE/tree/master/CVE-2019-11400)
# 作者
本研究项目由 KAIST 的 [SysSec Lab](https://syssec.kr) 进行。
* [Mingeun Kim](https://pr0v3rbs.blogspot.kr/)
* [Dongkwan Kim](https://0xdkay.me/)
* [Eunsoo Kim](https://hahah.kim)
* [Suryeon Kim](#)
* [Yeongjin Jang](https://www.unexploitable.systems/)
* [Yongdae Kim](https://syssec.kaist.ac.kr/~yongdaek/)
# 引用
如果您使用 FirmAE,我们将感谢您引用[我们的论文](https://syssec.kaist.ac.kr/pub/2020/kim_acsac2020.pdf)。
```
@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}
}
```
标签:0-day发现, ASN解析, CISA项目, Cutter, Firmadyne, FirmAE, IP摄像头, Linux内核, QEMU, Web服务推断, 内联执行, 合规性检查, 固件仿真, 固件分析, 固件模拟, 域名收集, 密码管理, 嵌入式系统, 提示词注入, 文档安全, 测试用例, 灰盒测试, 物联网安全, 系统遥测, 网络安全, 网络设备安全, 自动化框架, 请求拦截, 路由器安全, 身份验证强制, 逆向工具, 配置审计, 隐私保护