OTARIS/FirmwareCheck
GitHub: OTARIS/FirmwareCheck
一款面向CI流水线的IoT固件自动化动态安全分析工具,通过QEMU模拟运行实现持续安全检测与加固。
Stars: 13 | Forks: 0
# FirmwareCheck
[](https://scratch-itea3.eu/)

[](https://www.itea3.org)
FirmwareCheck 是一个用于对由 [buildroot](https://buildroot.org/) 生成的固件镜像进行自动化动态安全分析的工具。它在 CI-pipeline 中运行,允许开发者在开发 IoT 固件时识别安全风险。
FirmwareCheck 使用 [QEMU](https://www.qemu.org/) 来模拟固件。
为了能够在尽可能多的系统上运行,被分析系统的依赖项很少,任何具有 `sh` 和核心 linux 工具的系统都应该能够运行 FirmwareCheck。
在 CI-pipeline 中的集成流程如下:
* 🔧👷 使用 buildroot 生成固件镜像
* ✅❌ 对生成的固件运行检查
* 🆗🔧 如果检查通过则发布固件
### 功能
FirmwareCheck 会扫描固件中典型的 IoT 安全问题,包括:
* 过期的组件 (CVEs)
* 开放的串口 (Debug-Ports)
* 数据库上的默认密码或匿名登录
* 开放的端口
* 以 root 身份运行的进程
* 黑客可用来在设备上获取 reverse shell 的可执行文件
FirmwareCheck 也可以用于实时系统,以进行加固。
### 用法
##### 如果您正在(在 CI 中)使用 buildroot 生成固件:
##### 如果您想加固一个 Linux 系统:
` 以获取报告
### 截图

### 在本地 docker 容器中测试
存在一个示例易受攻击的容器,可以通过以下方式运行:
`sudo docker build . -t vulnerable_firmware && sudo docker run -it vulnerable_firmware:latest /bin/bash`
然后按照上述“在实时系统上”描述的步骤操作。
## 致谢
* buildroot (https://buildroot.org/)
* QEMU (https://www.qemu.org/)
点击这里
## 持续集成 [drone.io](https://www.drone.io/) pipelines 的示例设置位于 [.drone.yml](.drone.yml)。 通常步骤如下: * 使用 buildroot 构建固件,并在构建中启用 serial shell,以允许 FirmwareCheck 访问固件。 * 为此,您必须进入 Buildroot 配置,在 System configuration 中,修改 Run a getty (login prompt) after boot,并在 getty options 子菜单中设置适当的端口和波特率。这将自动调整生成系统的 /etc/inittab 文件,以便在正确的串口上启动 shell。 * 您为之生成固件的开发板必须受 QEMU 支持,以便 buildroot 生成必要的 `run_qemu.sh` 文件。 * 在镜像生成后让 FirmwareCheck 运行。`--ports` 参数指定允许开放的端口,否则 Pipeline 将失败。 * 镜像可以从 `srath/firmware_check:latest` 拉取,或者您可以使用 [Dockerfile](./CI/Dockerfile) 构建自己的镜像。 * 如果检查通过,再次构建固件,这次不带 debug port,准备发布点击这里
## 在实时系统上 ##### 依赖 在您的主机(而非被分析的系统)上安装以下依赖。 如果您使用的是 kali linux: ``` pip3 install -r requirements.txt sudo apt install linux-exploit-suggester exploitdb wkhtmltopdf` ``` 对于 ubuntu/debian/其他系统,您需要自行安装 exploitdb 和 linux-exploit-suggester。最简单的方法是在 ubuntu 中添加 kali 软件源并导入签名密钥: ``` sudo apt install gnupg wget 'https://archive.kali.org/archive-key.asc' sudo apt-key add archive-key.asc && rm archive-key.asc sudo sh -c "echo 'deb https://http.kali.org/kali kali-rolling main non-free contrib' > /etc/apt/sources.list.d/kali.list" sudo apt update ``` ##### 运行 要分析一个实时 Linux 系统: 1. 在目标 Linux IoT 设备上运行 `firmware_check_yml.sh` 此外,如果您想生成 html/pdf 报告: 2. 获取输出文件 `fc_output.yaml` 或将其内容复制到您的主机 3. 运行 `generate_report.py标签:Buildroot, CI/CD 安全, CISA项目, Cutter, CVE 扫描, DevSecOps, GitHub Advanced Security, IoT 安全, PE 加载器, QEMU, 上游代理, 仿真, 内联执行, 反向 Shell 检测, 固件分析, 固件安全, 安全加固, 嵌入式系统, 数据投毒防御, 数据统计, 物联网, 端口扫描, 请求拦截, 身份验证强制, 逆向工具