处理加密的路由器固件
图1. binwalk将双手扔向空中,耸了耸肩,什么也没报告。
现在怎么办?
通常,每个非Binwalk友好的固件都是其自己的冒险之旅,因此不可能提供逐步指南来**所有类型的加密固件。该博客旨在介绍一些常见情况,并提供处理此类固件的一般指南。我们还将提供解密D-Link DIR-882固件的示例。
环顾四周:三种常见的加密固件版本
解密固件的最简单方法是在固件中寻找解密例程。“怎么样?” 你问。如果路由器可以解密新固件以进行更新,则解密例程必须位于旧固件映像中的某个位置。如果遇到加密的固件,请访问供应商网站并查找固件的存档版本,下载所有旧版本并开始四处浏览。
以下是三种常见的固件发行方案:
场景1
设备固件出厂时未加密,也不包含任何解密例程。解密例程与固件的未加密版本一起以更高版本(v1.1)一起提供,以用于将来的加密固件更新。随后的固件版本已加密。
图2:固件发布
方案1
在这种情况下,我们可以从固件v1.1获取解密例程,并将其用于解密最新的固件版本1.2。
方案2
设备固件在原始发行版中已加密。供应商决定更改加密方案,并发布包含新解密例程的未加密过渡版本v1.2。
图3:固件发布方案2
与方案1相似,我们可以从v1.2映像获取解密例程,并将其应用于最新的加密固件。阅读固件版本的发行说明可能有助于识别未加密的过渡版本。发行说明通常会指导用户在升级到最新版本之前先升级到中间版本。中间版本很可能是未加密的过渡固件。
场景3
设备固件在原始发行版中已加密。但是,供应商决定更改加密方案,并发布包含新解密例程的未加密过渡版本。
图4:固件发布方案3
在这种情况下,没有简单的方法来获得解密例程。一种方法是购买设备并直接从硬件中提取未加密的固件。另一种可能的途径是对固件执行更多分析,以期“打破加密”。
方案3:退出十六进制编辑器
在十六进制编辑器中快速滚动浏览固件可以使我们直观地了解正在处理的内容。以二进制模式查看;以十六进制模式查看。是否存在0xFF字节或0x00字节的字段?文件中是否有模式?它是随机十六进制字节的同质blob吗?在这种情况下,很有可能已经使用固件而不是使用静态**进行简单的XOR。检查直方图,是否有一个十六进制字节比其他字节出现得更多?
方案3:压缩,加密还是模糊?
熵提供了有关固件的重要见解。固件的一部分具有较高的熵,建议进行加密。低熵字节的一部分表明低随机性,结构和可预测性。当与其他分析结合使用时,它使我们能够确定是否进行了压缩,加密或混淆。在此分析阶段,binwalk的大量选项可能会变得有用。
在理论上工作,也在实践中工作
让我们将新发现的知识应用于加密的D-Link DIR-882固件映像:
图5:binwalk无法识别固件映像中的任何内容
在供应商的FTP服务器上,我们可以找到该路由器的所有旧固件。如果我们使用binwalk检查最早的固件版本v1.00B07,它将正确检测到uImage标头和LZMA压缩数据:
图6:早期DIR-882路由器固件的binwalk扫描结果
这表明我们处于固件发布计划的方案1中。浏览完固件映像的所有可用版本之后,我们发现固件的v1.04B02是过渡版本,并且包含在v1.10B02固件包中。您还可以计算图像的熵,以快速确定已加密的图像。
图7:未加密过渡版本和第一个加密固件的binwalk结果
然后,使用binwalk从v1.04B02固件中提取文件系统。
图8:binwalk解压固件版本1.04B02的根文件系统
成功提取后,我们可以开始调查固件更新过程,并确定如何解密固件。幸运的是,文件系统的快速浏览中发现一个名为看好看的二进制imgdecrypt
的/bin
目录。
图9:提取的文件系统的/ bin目录内容。
只是一个小问题
我们在主机和二进制文件之间的处理器体系结构上存在差异的小问题。幸运的是,我们可以使用QEMU执行跨架构的chroot。为此,首先我们将qemu-mipsel-static
二进制文件复制到/usr/bin/
固件根文件系统的目录中。我们还将复制已加密的固件到未加密的固件文件系统。最后,我们将chroot插入固件根目录并获得一个有效的shell。特别感谢chung96vn研究人员向我们展示了这种跨架构的chroot技术。
图10:使用QEMU执行跨架构的chroot并解密固件
使用有效的外壳,我们可以运行imgdecrypt
和解密加密的固件。
图11:binwalk成功检测到解密固件的不同部分
结论
在那里,您拥有了!这就是您处理加密固件的方式。如果遇到方案3,请不要惊慌。消费类路由器通常在计算能力上受到限制。此限制排除了较慢,更难以**的非对称加密,例如RSA。此外,供应商有时会对多个路由器使用相同的加密方案。实际上,该imgdecrypt
二进制文件还可用于解密DIR-878和DIR-867的固件。寻找与同一产品线,处理器架构相同的路由器。环顾四周,您可能会碰到千斤顶。无论如何,我希望您能在硬件黑客方面取得成功,并期待看到您的提交!