无论是公网连接还是独立的网络,固件都是控制嵌入式设备的核心。因此,必须要了解如何分析固件以执行未授权的功能。要开始进行安全测试和固件逆向,在即将进行评估时,请使用以下方法作为指导。该方法包括九个阶段,旨在使安全研究人员,软件开发人员和信息安全专业人员能够进行固件安全测试研究。
以下各节将在适用的情况下通过支持示例进一步详细介绍每个阶段。
原文报告如下:
https://scriptingxss.gitbook.io/firmware-security-testing-methodology/
可以通过以下链接下载 Ubuntu 虚拟机(EmbedOS),其中包含在本文档中使用的固件测试工具。有关 EmbedOS 工具的详细信息,可以在以下存储库 https://github.com/scriptingxss/EmbedOS 中的 GitHub 上找到。
https://tinyurl.com/EmbedOS-2020
https://github.com/scriptingxss/EmbedOS
0x01 信息收集
在此阶段,收集有关目标的尽可能多的信息,以了解其基础技术的总体组成。奇热尝试收集以下内容:
· 支持的 CPU 架构
· 操作系统平台
· 引导程序配置信息(Bootloader configurations)
· 硬件原理图
· 数据表
· 代码行(LoC)估计
· 源代码存储库位置
· 第三方组件
· 开源许可证(例如 GPL)
· 更新日志
· FCC ID
· 设计和数据流程图
· 威胁模型
· 以前的渗透测试漏洞报告
· 漏洞平台放出的漏洞(例如 BugCrowd 或 HackerOne)
上面列出的信息应在安全测试工作之前收集好,确保利用内部产品线开发团队来获取准确和最新的数据。了解应用的安全控制以及项目资料,已知的安全问题以及与漏洞有关的信息。
在可能的情况下,使用开源情报(OSINT)工具和技术来获取数据。如果使用开源软件,需要下载存储库,并根据代码库执行手动和自动静态分析。有时,开源软件已经使用了提供扫描结果的供应商提供的免费静态分析工具,例如 Coverity Scan 和 Semmle 的 LGTM。例如,下面的截图显示了 Das U-Boot 在 Coverity Scan 中的信息摘要。
https://scan.coverity.com/
http://www.denx.de/wiki/U-Boot/WebHome
图片:U-Boot 覆盖率扫描
图片:U-Boot 覆盖率扫描分析
以下是 LGTM 在 Dropbear 的分析结果截图。
https://github.com/mkj/dropbear
图片:LGTM Dropbear 分析
图片:LGTM Dropbear 分析结果
掌握了这些信息后,应进行威胁建模,以分析出攻击面和影响范围。