我们直奔主题!现在,查看你的路由器品牌及型号信息,然后去对应厂商的官方网站下载你路由器对应的固件。下载完成之后,把固件文件丢到binwalk里,这样我们就可以在QEMU中模拟路由固件了。此时,你将会看到如下图所示的画面:
发生了什么?
一般来说,每一个非binwalk友好的固件都要用不同的方法来进行分析,因此我们无法给大家提供一个针对所有类型加密固件的通用手把手教程。不过,我们将在这篇文章中给大家演示几种常见的固件分析场景,并提供一个处理这类加密固件的一般性指南。除此之外,沃恩还将提供一个解密D-Link DIR-882固件的示例。
加密固件的三种情形
解密固件最简单的方法就是在固件中寻找解密程序。那我们该怎么做呢?如果路由器可以解密新固件并进行更新,那么解密程序就肯定位于就固件镜像中的某个地方。如果你遇到的是加密固件,那你就可以访问厂商官网并寻找这个固件的旧版本,然后下载所有的旧版本固件并开始分析。
下面给出的是三种常见的固件发布场景。
场景1
设备固件在出场时未加密,也未包含任何解密程序。解密程序与较新版本(v1.1)中未加密版本的固件一起提供,以便将来进行加密固件更新。此后发布的固件为加密固件。
场景2
设备固件在原始版本中加密,厂商决定更改加密方案并发布一个未加密的转换版本v1.2,其中包含了新的解密程序。
**场景3 **
设备固件在原始版本中加密。但是,厂商决定更改加密方案,并发布包含新版解密程序的未加密转换版本。
**场景4 **
通过使用十六进制编辑器来查看固件内容,我们可以迅速且直观地了解我们正在处理的对象。使用二进制或十六进制模式查看固件源码,你看到了0xFF或0×00字节的数据域吗?文件代码有特定的模式吗?它们是由随机十六进制字节组成的同质块吗?如果有的话,很有可能固件源码已经被带有静态密钥的简单异或域取代了。你可以看看,是否有一个十六进制字节比其他字节出现得更加频繁呢?
**场景5:压缩、加密还是混淆处理? **
熵可以帮助我们更好地分析固件,固件中有一部分具有高熵,表明这些地方经过了加密处理。一段低熵字节代表的是低随机性、结构化和可预测性。 当与其他分析相结合时 ,它可以帮助我们确定固件是经过压缩得、加密得还是混淆处理得。在这个分析阶段, binwalk的大量选项 可能会提供帮助。
理论与实践
接下来,我们将刚学到的知识应用到加密的D-Link DIR-882固件镜像中:
每天都会有更新看过的朋友可以随手点波关注,对下图感兴趣的朋友可以评论私信哦。
**总结 **
以上就是处理加密固件的一般方法。值得一提的是,厂商有时会对多个路由器使用相同的加密方案,而且imgdecrypt这个文件还可以用来解密DIR-878和DIR-867的固件。因此,我们在找到一个解密程序或解密方案时,可以用它来试试同一产品线中具有相同处理器体系结构的其他路由器产品。