开源IOT固件分析工具
开源IOT固件分析工具
开源IOT固件分析工具
一、解包打包
1、Binwalk
https://github.com/ReFirmLabs/binwalk
Binwalk 是一种用于固件分析的开源工具,可以用于查找和提取嵌入式设备和固件中的文件系统、可执行程序。Binwalk支持多种文件格式,包括各种二进制文件、压缩文件、嵌入式固件、嵌入式文件系统等等,可以用于各种安全测试、漏洞分析、反向工程等领域。
2、unblob
https://github.com/onekey-sec/unblob
Unblob和Binwalk类似,是一个用于嵌入式设备固件分析的开源工具,主要用于解密和解压嵌入式设备中的固件文件,并提取出其中的文件系统、可执行程序等资源。是一个准确、快速且易于使用的提取套件。
3、Firmware-Mod-Kit
http://code.google.com/p/firmware-mod-kit/
Firmware-Mod-Kit(简称FMK)是一个开源的固件修改工具,主要用于解包、修改和重新打包各种嵌入式设备的固件文件。它支持多种处理器架构和文件系统格式,可以应对不同类型的固件文件。
具体可以参考firmware-mod-kit工具的官方说明文档:https://code.google.com/archive/p/firmware-mod-kit/wikis/Documentation.wiki。
二、平台模拟
1、QEMU
QEMU是一款开源的虚拟机和模拟器软件,它能够模拟不同架构的处理器和硬件设备,并在其上运行操作系统和应用程序。QEMU可以在多种操作系统平台上运行,包括Linux、Windows和Mac OS X等。
QEMU支持多种处理器架构,包括x86、ARM、MIPS、PowerPC等,可以运行多种不同的操作系统,如Linux、Windows、BSD等。它还支持多种虚拟磁盘格式,如qcow2、vmdk、raw等,可以方便地创建和管理虚拟机硬盘镜像。
除了虚拟化外,QEMU还支持系统仿真,能够在不同的处理器架构之间进行转换。这使得开发人员可以在其开发平台上进行跨平台的应用程序和系统测试,同时还能够对不同架构的嵌入式设备进行仿真。
2、Unicorn
https://github.com/unicorn-engine/unicorn
Unicorn是基于QEMU开发的一款开源的CPU模拟器框架,它可以模拟多种不同的CPU架构,并支持多种指令集和操作系统。Unicorn能够实现CPU级别的仿真,模拟指令的执行和内存读写等操作,同时还提供了完整的寄存器和内存状态的访问接口,使得用户可以自由地操纵仿真器。
3、Qiling
https://github.com/qilingframework/qiling
Qiling 时基于Unicorn实现的一款功能强大的高级代码模拟框架,它可以利用Unicorn来模拟CPU指令,但是它同样可以理解操作系统上下文,它集成了可执行文件格式加载器、动态链接、系统调用和I/O处理器。更重要的是,Qiling可以在不需要原生操作系统的环境下运行可执行文件源码。
二、模拟执行
1、Firmadyne
https://github.com/firmadyne/firmadyne
Firmadyne是一个基于QEMU的开源嵌入式设备固件仿真平台,用于对固件进行自动化分析和测试。它可以在x86平台上模拟多种处理器架构和嵌入式设备环境,包括ARM、MIPS、PowerPC等,从而能够运行各种类型的固件文件。
Firmadyne的工作流程通常包括以下几个步骤:
- 提取固件文件:使用Binwalk等工具从设备中提取出固件文件,并进行解压缩和解密等操作,得到可用的固件文件。
- 准备仿真环境:使用Firmadyne配置仿真环境,包括选择处理器架构、内核镜像、文件系统等,并将固件文件加载到仿真环境中。
- 运行仿真环境:使用Firmadyne启动仿真环境,并运行固件文件。
- 进行测试和分析:对仿真环境中运行的固件文件进行测试和分析,例如漏洞挖掘、安全性评估、特征提取等。
Firmadyne仿真修复案例
https://www.ics-cert.org.cn/portal/page/121/8b078dd28bcf42dfaf894e585d880cea.html
2、Firmware Analysis Tookit(FAT)
https://github.com/attify/firmware-analysis-toolkit
Firmware Analysis Tookit(FAT)是一个基于 Firmadyne,并进行了一些更改的固件仿真工具。对Firmadyne的简单的封装,自动化了模拟新固件的过程。
物联网设备的固件模拟环境搭建 https://paper.seebug.org/639/
3、Firmware-analysis-plus
https://github.com/liyansong2018/firmware-analysis-plus
Firmware-analysis-plus(FAP)是在binwalk、firmadyne 、FAT的基础上做出了改进和定制,包括精简不必要组件,优化仿真流程,优化网络环境大幅压缩安装时间,修复了fat其中存在的部分bug,在其基础上重写脚本改成的新的项目。
使用 firmware-analysis-plus 一键模拟固件
https://www.codenong.com/cs105518309/
4、FirmAE
https://github.com/pr0v3rbs/FirmAE
在Firmadyne的基础上,韩国的一个团队提出了另外一种执行仿真和漏洞分析的全自动框架—FirmAE。FirmAE提出仲裁仿真的方式,从固件的启动、网络、NVRAM、内核以及其它五个方面,总结了导致固件仿真失败的原因以及具备通用性的方法。将原本 Firmadyne 16.28% 的成功率(183个成功仿真),提高到79.36%(892个成功仿真)
三、漏洞挖掘
1、FirmAFL
https://github.com/zyw-200/FirmAFL
用于 IoT 固件的第一个高通量灰盒模糊器。Firm-AFL解决了物联网模糊中的两个基本问题:
1、 它通过启用模糊处理来解决兼容性问题。可在系统中模拟的 POSIX 兼容固件仿真。
2、 它解决了性能瓶颈系统模式仿真技术采用新型技术引起称为增强过程仿真。通过组合系统模式仿真和用户模式仿真以新颖的方式,增强过程仿真提供高兼容性,如系统模式仿真和高吞吐量作为用户模式仿真。
2、FirmFuzz
https://github.com/HexHive/FirmFuzz
FirmFuzz通过监控固件运行所生成的日志以检测漏洞,侧重挖掘命令注入、缓冲区溢出和空指针引用等。FirmFuzz在模拟层面基于QEMU,支持MIPS和ARM架构。
3、EMBArk
https://github.com/e-m-b-a/embark
EMBArk 是一个用于集中固件分析的工具。扫描、识别、跟踪、报告。构建简单但功能强大。很多在线固件分析工具就是基于EMBArk去开发的。
来源
https://www.douban.com/note/851702722/?_i=6695293GEKzi9U,6696346GEKzi9U