路由器固件解密思路
学习思路来源于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类似,也是同样获取带有解密程序的过渡版本固件分析提取解密程序
- 老版有加密,后续更换加密方式,中间更换了新的未加密的解密程序
如果清楚早期加密方式,或者拥有早期解密程序,可以去分析更换解密程序的中间版本,来获取解密程序。
如果没有早期相关解密信息,则无法使用上面方式,更多是购买设备,从硬件直接提取未加密的固件。
理论上,可以使用二进制对比分析工具,来分析尝试提取复原解密程序。
这是选用了经典的Dlink-DIR882的固件进行分析:
ftp:ftp://ftp2.dlink.com/PRODUCTS/DIR-882/REVA/
从固件时间顺序往早期查验
发现DIR882A1_FW104B02_Middle_FW_Unencrypt.bin
就是我们所说的过渡版本。
提取,分析,我们要通过他来查找解密程序。
或者复现根据升级路径来查找。
这里比较幸运通过关键字查到在bin下的imgdecrypt,但我们不能确定他一定是正确的解密程序
我们尝试执行他。
跟上面对比,正确能够被识别出文件。
尝试将其他固件也都测试下
上面是命名比较规范的一种,有些命名不规范可能需要去根据前端升级去寻找相应的功能。
路由器固件解密思路
http://example.com/article/876237c8.html