前言
固件(firmware)是一种写入硬件设备的软件,作用是对应用和各项系统功能实时控制。固件中包含底层代码,这些代码能实现软件对硬件的操作。当我们平常分析的时候,拿到的固件会有加密过后的情况,这时候需要采取方法去解密。
正文
针对加密后的固件,可以通过未加密的版本获得解密脚本,或者得到硬编码后的密钥。今天针对这两种方法,分别找到了对应的固件进行实践分析。
先从官网下载固件,一个是加密后的,一个是未加密的。
针对未加密的,直接使用binwalk -Me参数,根据文件信息进行提取。
查找解密有关
这里可以得到一个imgdecrypt
先对另外一个固件分析,现在是什么信息都没有。
先判断imgdecrypt文件信息,然后利用qemu模拟运行
继续用binwalk查看,发现已经解密完毕
这个就是利用其中一个未加密版本的固件解密脚本。
接下来是硬编码的密钥固件样本。
同样是先下载
gpg是一个为文件生成签名、管理密钥以及验证签名的工具。
先用binwalk查看两个的区别
对其中未加密的进行提取
这时候在ect目录下看到了keydata
利用gpg导入
用gpg解密
用binwalk查看,已经和原来的不一样了,能看到信息了,解密成功
原文始发于微信公众号(Th0r安全):加密固件的提取思路与实践