安全-二进制文件分析工具
分析工具
1. binwalk
binwalk是一个文件的分析工具,旨在协助研究人员对文件进行分析,提取及逆向工程。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展。支持python 扩展, 支持插件扩展,支持文件提取,速度快
优点
- 多系统平台支持
- 扩展性强
缺点
Windows 支持弱
支持系统
- Linux
- OSX
- FreeBSD
- windows
参考
https://github.com/devttys0/binwalk/wiki
http://www.freebuf.com/sectool/15266.html
2. Firmwalker
在固件文件系统中进行搜索和提取敏感内容
优点
- 在固件文件中遍历,查找敏感内容, 可扩展,支持多种文件格式
缺点
- 功能单一
参考
https://github.com/misterch0c/firmwalker
3.Firmware Modification Kit
该项目包含一组脚本和工具用来提取和重新构建基于 Linux 的固件。
优点
-对固件进行提取, 修改 , 重建
参考
https://code.google.com/archive/p/firmware-mod-kit/wikis/Documentation.wiki
4. angr
angr是一个多架构的二进制分析平台,具备对二进制文件的动态符号执行能力(例如Mayhem,KLEE等)和多种静态分析能力。
- 装载二进制文件到到分析平台
- 转换二进制文件为中间语言(intermediate representation)(IR)
- 转换IR为语义描述(即它做什么而不是它是什么)
- 部分或者全部的静态分析(即依赖分析,程序分片)
- 对程序状态空间的符号探索(比如“我们能否一直执行它直到我们找到了一个溢出?”)
- 对上述的情况的一些混合(比如“让我们执行一部分可导致内存写的内存切片,来发现一个溢出”)
优点
- 装载二进制 转换二进制文件 转换为语义描述
- 执行深入静态分析(依赖分析 程序分片)
- 动态分析 对程序状态进行探索
- 可以进行动态静态混合分析 执行部分程序分片的能力
参考
https://github.com/a7vinx/angr-doc-zh_CN/blob/master/docs/overview.md
5. The Binary Analysis Tool
二进制分析工具(BAT)使得查看二进制代码,查找合规性问题以及在部署免费和开源软件时减少不确定性变得更加便宜和便宜。它是一个模块化框架,通过使用版权所有者采用相同类型的方法来发现消费电子产品中的问题,从而协助遵守和尽职调查活动。BAT可以在Apache许可证下免费使用,以便每个人都可以使用,学习,分享和改进它。
BAT可以打开超过30种类型的压缩文件,文件系统和媒体文件,搜索Linux内核和BusyBox问题,识别动态链接库并使用从源代码提取的信息的数据库扫描任意ELF,Android Dalvik和Java类文件找出什么软件在里面
优点
-可以打开超过30个类型的压缩文件,文件系统, 媒体文件
- 检索内核问题 识别动态链接库
- 在不进行逆行工程的情况下 进行二进制分析
- 可自定义知识库 提高扫描效率
参考
http://www.binaryanalysis.org/en/home
6. Firmadyne
Firmadyne是一款自动化分析嵌入式Linux系统安全的开源软件,由卡内基梅隆大学的Daming D. Chen开发完成的。它支持批量检测,整个系统包括固件的爬取、root文件系统的提取、QEMU模拟执行以及漏洞的挖掘
优点
- 批量检测
- 支持多固件模拟 并进行修改
- 可使用脚本进行自动化分析
参考
https://github.com/firmadyne/firmadyne
7. Damn Vulnerable Router Firmware
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘
优点
可以对非x86_64的cpu体系架构进行分析
缺点
路由器固件 可定制能力低
参考
https://github.com/praetorian-inc/DVRF
设备的固件漏洞:
- 过期的核心组件
- 不支持的核心组件
- 使用过期的或自签名的证书
- 在多个设备上使用相同的证书
- Admin的Web接口
- 使用硬编码或容易猜测是认证凭据
- 敏感信息泄露
- 敏感URL泄露
- 加密密钥曝光
- 后门账户
- 有漏洞的服务(web,ssh,ftp,tftp等)
工控漏洞
- 内存溢出区内的操作不正确的限制
- 不正确的输入验证
- 限制目录路径名的不正确规则
- 权限和访问控制
- 信息曝光
- 凭证管理
- 验证不正确
- 资源管理错误
- 页面生成过程中的不正确(跨站脚本)
- 数字错误