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服务推断, 内联执行, 合规性检查, 固件仿真, 固件分析, 固件模拟, 域名收集, 密码管理, 嵌入式系统, 提示词注入, 文档安全, 测试用例, 灰盒测试, 物联网安全, 系统遥测, 网络安全, 网络设备安全, 自动化框架, 请求拦截, 路由器安全, 身份验证强制, 逆向工具, 配置审计, 隐私保护