转载:nosec作者:0nise
固件安全评估,英文名称firmwaresecuritytestingmethodology简称FSTM。该指导方法主要是为了安全研究人员、软件开发人员、顾问、爱好者和信息安全专业人员进行固件安全评估。
我们基于FSTM进行测试流程如下:
id阶段描述1信息收集固件的相关技术文档的详细使用说明2获取固件使用本文中介绍的多种办法获取固件3分析固件固件的功能、特性4提取文件系统从固件中获取文件系统5分析文件系统内容静态分析提取的文件系统的配置文件和二进制文件中的漏洞6仿真固件模拟固件文件和组件7动态分析根据固件和应用程序接口进行动态测试8运行时分析在设备运行时分析编译的二进制文件9二进制利用利用上述手段发现的漏洞实现命令执行
0x01:信息搜集
可搜集与固件相关的如下基础信息:
CPU架构操作系统平台引导程序配置硬件原理图数据表代码行估计源代码存储库位置第三方组建开源许可证(GPL)变更日志FCCID设计和数据流程图威胁建模渗透测试报告之类一些测试平台的测试(Jira、错误赏金平台bugcrowd或hackerone)搜集方法:
利用开发团队及其内部产品线获取准确和最新的数据,及其项目设计原理和应用的安全设置,进而判断出与安全风险有关的信息和某些特定功能点。开源情报(OSINT:Opensourceintelligence)技术手段来获取数据在搜集信息中遇到开源软件的处理方式:
下载开源软件存储库,并根据代码库执行手动和自动静态分析开源软件有其自身的静态分析工具,Example:Coverity对DasU-Boot进行的分析
semmle的LGTM对Dropbear的分析:
获取如上信息后便可进行粗略的威胁建模:标识出可攻击功能点和影响范围,方便测试时进行漏洞点的贯穿使用。
0x02:获取固件
直接从开发团队、制造商/供应商或用户获取使用制造商提供的项目从头编译从供应商的support网站获取从共享平台(Dropbox、box、Googledrive)根据二进制文件扩展名获取从用户为了解决问题而上传固件到论坛、博客,或官方评论中获取设备更新进行中间人(MITM)获取云提供商存储位置(如:AWS,全称AmazonWebServicesS3buckets)下载构建版本通过UART、JTAG、PICit等直接从硬件中提取嗅探“硬件组件中的串行通信”中的更新服务器请求通过移动应用程序中的硬编码接口将固件从引导加载程序(如:U-boot)转储到闪存或通过tftp的网络转储从主板卸下闪存芯片(如:SPI)或MCU,以进行离线分析和数据提取需要相应的芯片编辑器来存储flash/MCU0x03:分析固件
获取固件后需要分析其特征信息:固件文件类型、潜在的根文件元数据、固件编译平台,使用binutils分析过程如下:
filebinstringsstrings-n5binbinwalkbinhexdump-C-nbinhexdump.outhexdump-Cbin
head#mightfindsignaturesinheader若使用上述方法未提取出有用信息,可能由于以下原因:
二进制文件可能是Baremetal二进制文件可能仅适用于带有自定义文件系统的实时操作系统(RTOS)平台二进制文件可能是加密的判断二进制文件是否加密:
通过命令:binwalk-Ebin,判断其熵低熵:不太可能被加密高熵:可能被加密(或以某种方式压缩)也可以使用其他程序或在线程序(如:binvis)