chaitanya-hack1O1/Firmsec-IoT-Firmware-Vulnerability-Scanner
GitHub: chaitanya-hack1O1/Firmsec-IoT-Firmware-Vulnerability-Scanner
FirmSec 是一款 IoT 固件静态安全扫描器,通过检测嵌入式组件版本、多源 CVE 匹配、硬编码凭证扫描和二进制加固检查,帮助安全团队在固件审计初期快速完成安全分诊与风险评估。
Stars: 0 | Forks: 0
# FirmSec - IoT 固件漏洞扫描器
FirmSec 是一款用于 IoT 和嵌入式设备的固件安全分析工具。它可以帮助研究人员、学生和产品安全团队检查固件镜像、检测嵌入式组件、识别可能的 CVE、查找硬编码凭证、检查 binary 加固情况,并生成安全报告。
该项目被设计为第一阶段的固件审计工具。它最适合用于分诊(triage):发现需要关注的问题、减少明显的误报,并生成清晰的报告以供进一步的手动验证。
## FirmSec 的功能
- 检测固件类型、架构、熵和置信度。
- 在可用时使用 `binwalk` 提取基于 Linux 的固件。
- 定位最有可能的文件系统根目录。
- 检测嵌入式库版本,如 BusyBox、OpenSSL、Dropbear、curl、dnsmasq、lighttpd、uhttpd 和 Linux kernel 字符串。
- 从多个受信任的来源查找 CVE:
- NVD / NIST
- CVE.org / MITRE
- CISA 已知被利用漏洞(Known Exploited Vulnerabilities)
- 尽可能根据产品标识和版本过滤 CVE。
- 使用 NVD CPE 数据来减少仅依赖关键字匹配造成的错误。
- 当 build flag、OS 上下文或配置可能产生影响时,标记需要手动验证的 CVE。
- 扫描硬编码凭证和敏感值。
- 检查 ELF binary 保护:
- NX
- PIE
- stack canary
- RELRO
- 在 binary 中搜索危险函数。
- 计算风险评分。
- 生成 PDF 报告。
- 提供 Flask Web 界面。
- 比较两个固件版本,以展示库、CVE、凭证和 binary 加固方面的变更。
## 静态分析与动态分析
FirmSec 目前主要侧重于静态分析。
静态分析意味着在不完全运行固件的情况下对其进行检查。示例包括从 binary 中读取字符串、检测版本、匹配 CVE、检查文件内容以及检查 ELF 元数据。
这非常有用,因为它可以快速展示可能存在的安全问题,但并不能总是证明漏洞是可利用的。例如,某个 CVE 可能与检测到的 BusyBox 版本相匹配,但受影响的 BusyBox applet 可能并未编译到固件中,或者无法从任何正在运行的服务中进行访问。
因此,FirmSec 将 CVE 结果视为漏洞分诊,而不是可利用性的保证。
动态分析则意味着在模拟器或测试设备中运行固件或服务,并检查是否实际能够触达存在漏洞的代码路径。这可以在未来的版本中通过基于 QEMU 的模拟、runtime 功能检查和安全的 service 探测来实现。
## CVE 匹配
FirmSec 避免了几个常见的固件扫描器错误:
- 它不仅仅依赖关键字搜索。
- 当 NVD CPE 数据可用时,它会检查受影响的产品标识。
- 尽可能检查版本范围。
- 它合并来自多个来源的重复 CVE。
- 为依赖于 build flag、OS 上下文或 runtime 配置的 CVE 添加置信度说明。
可能的 CVE 置信度值包括:
- `product-and-version-match` - 组件和版本似乎匹配。
- `needs-manual-verification` - 该 CVE 可能取决于编译选项、平台、runtime 配置或可达性。
## 项目结构
```
firmsec/
app.py Flask web interface
requirements.txt Python dependencies
modules/
firmware_detector.py Firmware type and architecture detection
firmware_analyser.py Firmware extraction and static analysis
cve_lookup.py Multi-source CVE lookup and filtering
credential_scanner.py Hardcoded credential scanning
report_generator.py PDF report generation
network_scanner.py Network/device scan helpers
firmware_comparator.py Compare two firmware versions
rtos_cve_database.py RTOS-specific CVE matching data
```
## 环境要求
Python 包:
```
pip install -r requirements.txt
```
用于进行更深入固件分析的推荐系统工具:
```
sudo apt install binwalk squashfs-tools p7zip-full nmap file binutils
```
可选工具:
```
sudo apt install checksec
```
某些固件提取功能取决于宿主机的 OS 和已安装的提取器。为了获得最佳效果,建议使用 Linux 或 WSL。
## 安装说明
克隆项目并进入该文件夹:
```
clone the repo
cd firmsec
```
安装 Python 依赖项:
```
pip install -r requirements.txt
```
## 使用说明
### Web 界面
启动 Flask 应用:
```
python app.py
```
打开:
```
http://127.0.0.1:5000
```
Web UI 支持:
- 固件分析
- 网络扫描
- 固件类型检测
- 固件比较
- PDF 报告下载
报告保存在 `reports/` 目录中。
输出:
## 固件比较
FirmSec 可以比较两个固件版本并展示:
- 升级的库
- 降级的库
- 已修复的 CVE
- 新引入的 CVE
- 未更改的 CVE
- 凭证变更
- binary 加固变更
- 整体安全趋势
这在检查供应商的固件更新是否真正提升了安全性时非常有用。
## 报告输出
生成的报告包括:
- 整体风险评分
- 通俗易懂的总结
- 凭证发现
- 嵌入式库 CVE
- CVE 置信度状态
- binary 保护结果
- 建议
## 局限性
- CVE 匹配并不等同于漏洞利用确认。
- 某些漏洞取决于编译时选项或特定于平台的行为。
- 当镜像被加密、打包、经过供应商定制或缺少提取器支持时,固件提取可能会失败。
- 静态分析并不总是能够证明存在漏洞的服务是否可达。
- 动态模拟尚未完全实现。
- 网络扫描只能用于自己拥有或已获授权的目标。
## 未来路线图
未来可能的改进:
- 基于 QEMU 的固件模拟。
- Runtime BusyBox applet 验证。
- 安全的 service 可达性检查。
- 检测模拟固件内正在运行的 Web endpoint。
- 针对 BusyBox、OpenSSL、curl 和 dnsmasq 等组件的 CVE 到功能映射。
- SBOM 生成。
- HTML 报告导出。
- 提供更多对 RTOS 和微控制器固件的支持。
- 针对 CVE 过滤和报告生成的 CI 测试。
## 安全与法律声明
FirmSec 旨在用于防御性安全研究、教育、授权审计和产品安全测试。未经许可,请勿将其用于任何设备、固件、服务或网络。
扫描器可能会识别出可能的漏洞,但最终的风险决策应包括人工审查、供应商公告、固件上下文和安全验证。
## 总结
FirmSec 是一款针对 IoT 设备的静态固件安全扫描器。它有助于识别可能的 CVE、硬编码凭证、薄弱的 binary 保护、高风险组件以及固件变更。
## 固件比较
FirmSec 可以比较两个固件版本并展示:
- 升级的库
- 降级的库
- 已修复的 CVE
- 新引入的 CVE
- 未更改的 CVE
- 凭证变更
- binary 加固变更
- 整体安全趋势
这在检查供应商的固件更新是否真正提升了安全性时非常有用。
## 报告输出
生成的报告包括:
- 整体风险评分
- 通俗易懂的总结
- 凭证发现
- 嵌入式库 CVE
- CVE 置信度状态
- binary 保护结果
- 建议
## 局限性
- CVE 匹配并不等同于漏洞利用确认。
- 某些漏洞取决于编译时选项或特定于平台的行为。
- 当镜像被加密、打包、经过供应商定制或缺少提取器支持时,固件提取可能会失败。
- 静态分析并不总是能够证明存在漏洞的服务是否可达。
- 动态模拟尚未完全实现。
- 网络扫描只能用于自己拥有或已获授权的目标。
## 未来路线图
未来可能的改进:
- 基于 QEMU 的固件模拟。
- Runtime BusyBox applet 验证。
- 安全的 service 可达性检查。
- 检测模拟固件内正在运行的 Web endpoint。
- 针对 BusyBox、OpenSSL、curl 和 dnsmasq 等组件的 CVE 到功能映射。
- SBOM 生成。
- HTML 报告导出。
- 提供更多对 RTOS 和微控制器固件的支持。
- 针对 CVE 过滤和报告生成的 CI 测试。
## 安全与法律声明
FirmSec 旨在用于防御性安全研究、教育、授权审计和产品安全测试。未经许可,请勿将其用于任何设备、固件、服务或网络。
扫描器可能会识别出可能的漏洞,但最终的风险决策应包括人工审查、供应商公告、固件上下文和安全验证。
## 总结
FirmSec 是一款针对 IoT 设备的静态固件安全扫描器。它有助于识别可能的 CVE、硬编码凭证、薄弱的 binary 保护、高风险组件以及固件变更。标签:Flask, Python, 云安全监控, 固件安全分析, 嵌入式设备, 无后门, 物联网安全, 逆向工具, 静态分析