手把手玩转路由器漏洞挖掘系列 – 固件加解密
手把手玩转路由器漏洞挖掘系列 – 固件加解密
原创 nil 山石网科安全技术研究院 2023-09-07 11:26
1. 背景
伴随着物联网规模的迅速发展,越来越多的物联网设备被曝出存在大量安全漏洞,这不仅仅给诸多的用户隐私及网络环境带来较大影响,同事也给诸多知名厂商口碑带来巨大挑战。为了防止安全研究人员对固件直接进行解压分析,诸多厂商采用固件加密方式来对抗研究人员的分析和研究。
2. 固件分析
2.1 加解密方式
目前设备厂商加密固件方式为以下三种:
– 初始版本未加密,后续某个版本附带解密程序
设备厂商某个型号设备固件出厂时未加密,也没有包含任何解密程序,后续发布新的固件,会发布一个过渡固件(未加密的固件附带解密程序)。后续设备大版本更新的时候就可直接使用解密程序。
– 初始版本有加密,后续厂商发布未加密的过渡版本固件
设备厂商某个型号设备固件出厂时加密,中间版本更改一种加密方式并发布一个为加密的中间过渡版本,其中包含了新版本的解密程序。
– 历史版本有加密,后续更换加密方式,中间替换新的解密程序
设备厂商某个型号设备固件出厂时加密,中间版本更改一种加密方式并发布一个加密的中间过渡版本,后续发布的加密固件可使用新版本加密程序进行解密。
2.2 获取固件方式
- 厂商官网下载
- 芯片夹读取
- 串口读取
2.3 判断固件加密
工具: Binwalk
查看固件熵值进行判断,熵值是对随机性的一种度量,它的数值在0到1之间,数值越高代表随机性越好,接近1的数值被称为高熵。压缩和加密的数据具有较高的熵值,我们可以通过「binwalk」以图形化的形式查看加密和未加密的固件的变化。
2.4 常见加密方式
- GPG(非对称加密)
GPG采用非对称加密方式,用公钥加密文件,用私钥解密文件
– 自定义解密程序
设备厂商采用自定义程序,通常加密方式主要是异或加密、非对称加密、自定义加密算法。
3. 实例分析
3.1 Linksys设备固件分析
3.1.1 判断文件是否加密
- 熵值分析
- 官方固件下载页面提示
3.1.2 中间过渡固件分析
- 发现敏感文件信息
- 文件内容
3.1.3 解密固件
- 导入密钥
- 解密固件
3.2 Dlink设备固件分析
3.2.1 判断设备固件是否加密
- 熵值分析
- 官方固件下载页面提示
3.2.2 中间过渡固件分析
- 搜索关键字
发现自带程序解密程序
3.2.3 解密固件
4. 总结
固件加解密的操作在诸多设备上都已普遍运用,不同设备厂商采用不同加密方式,这就需要安全研究者能够熟悉不同加密方式来深入挖掘固件加密背后存在的安全隐患。