路由器固件解密思路

学习思路来源于zdi:https://www.zerodayinitiative.com/blog/2020/2/6/mindshare-dealing-with-encrypted-router-firmware

关于如何判断是否加密在另一篇文章有提到: https://p1yang.github.io/2022/04/02/iot/iot学习感悟/

一般来说固件加密有三种情况:

  1. 初始版本未加密,后续某个版本加密了 在加密与初始版本中间某个版本附带了解密程序

image-20220427111553846

​ 获取中间版本,从中分析解密程序。

  1. 老版有加密,后续更换加密方式,中间发布未加密的过渡版本固件

image-20220427113725651

​ 与1类似,也是同样获取带有解密程序的过渡版本固件分析提取解密程序

  1. 老版有加密,后续更换加密方式,中间更换了新的未加密的解密程序

image-20220427114528196

​ 如果清楚早期加密方式,或者拥有早期解密程序,可以去分析更换解密程序的中间版本,来获取解密程序。

​ 如果没有早期相关解密信息,则无法使用上面方式,更多是购买设备,从硬件直接提取未加密的固件。

​ 理论上,可以使用二进制对比分析工具,来分析尝试提取复原解密程序。

这是选用了经典的Dlink-DIR882的固件进行分析:

ftp:ftp://ftp2.dlink.com/PRODUCTS/DIR-882/REVA/

从固件时间顺序往早期查验

image-20220427115925211

image-20220427120035013

发现DIR882A1_FW104B02_Middle_FW_Unencrypt.bin就是我们所说的过渡版本。

提取,分析,我们要通过他来查找解密程序。

或者复现根据升级路径来查找。

这里比较幸运通过关键字查到在bin下的imgdecrypt,但我们不能确定他一定是正确的解密程序

image-20220427143219538

我们尝试执行他。

image-20220427151046949

image-20220427151221942

image-20220427151356109

跟上面对比,正确能够被识别出文件。

尝试将其他固件也都测试下

image-20220427152259592

image-20220427152314636

上面是命名比较规范的一种,有些命名不规范可能需要去根据前端升级去寻找相应的功能。


路由器固件解密思路
http://example.com/article/876237c8.html
Author
p1yang
Posted on
July 20, 2022
Licensed under