导语:D-Link DIR-882路由器属于802.11ac Wave 2级别产品,2.4GHz与5GHz双频段设计,支持160MHz频带和4x4 MU-MIMO技术,理论带宽为800Mbps+1733Mbps,属于AC2600级别路由器。
D-Link DIR-882路由器属于802.11ac Wave 2级别产品,2.4GHz与5GHz双频段设计,支持160MHz频带和4x4 MU-MIMO技术,理论带宽为800Mbps+1733Mbps,属于AC2600级别路由器。D-Link DIR-882路由器基于联发科MT7621AT处理器打造,这是一颗主频为880MHz的双核处理器,在路由器领域中属于中端产品;内存则是来自南亚的DDR3,容量为128MB;闪存容量则比较少,只有16MB;2.4GHz频段与5GHz频段则通过联发科MT7615N进行扩展,每个频段各有一颗芯片。从这个配置来说,D-Link DIR-882路由器在AC2600级别产品中只能算是中端水平,而且可玩性也不算高,并不适合路由器领域的“硬核玩家”,但用在日常家用环境甚至是对游戏爱好者来说已经足够了。
解密固件的最简单方法是在固件中寻找解密例程,如果路由器可以解密新固件以进行更新,则解密例程必须位于旧固件映像中的某个位置。如果遇到加密的固件,请访问供应商网站并查找固件的存档版本,下载所有旧版本并开始四处浏览。
以下是三种常见的固件发行方案:
固件发布方案1
设备固件出厂时未加密,也不包含任何解密例程。解密例程与固件的未加密版本一起以更高版本(v1.1)一起提供,以用于将来的加密固件更新,随后的固件版本将被加密。
固件发布方案1
在这个方案中,我们可以从固件v1.1获取解密例程,并使用它来解密最新的固件1.2版本。
固件发布方案2
设备固件在原始发行版中已加密,供应商决定更改加密方案,并发布包含新解密例程的未加密过渡版本v1.2。
固件发布方案2
与方案1相似,我们可以从v1.2映像获取解密例程,并将其应用于最新的加密固件。阅读固件版本的发行说明可能有助于识别未加密的过渡版本。发行说明通常会指导用户在升级到最新版本之前先升级到中间版本,中间版本很可能是未加密的过渡固件。
固件发布方案3
设备固件在原始版本中是加密的。但是,供应商决定更改加密方案,并发布包含新解密例程的未加密过渡版本。
固件发布方案3
在这种情况下,来获得解密例程就很困难了。一种方法是购买设备并直接从硬件中提取未加密的固件。另一种可能的方法是对固件进行更多的分析,以期“破解加密”。
打开十六进制编辑器
在十六进制编辑器中快速滚动浏览固件可以使我们直观地了解正在处理的内容。你可以选择是以二进制模式查看还是以十六进制模式查看。查看是否存在0xFF字节或0x00字节的字段?文件中是否有模式?它是一个由随机十六进制字节组成的同质blob吗?在这种情况下,固件很有可能不是一个简单的带有静态键的XOR。查看直方图,是否有一个十六进制字节比其他字节出现得更多?
压缩、加密还是混淆?
熵为了解固件提供了重要的信息,固件的一部分具有较高的熵,建议进行加密。低熵字节的一部分表明低随机性、结构和可预测性。当与其他分析结合使用时,它可以让我们确定是否进行了压缩、加密或混淆。在此分析阶段,binwalk提供的大量选项可能会变得有用。
Binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。 具体来说,它被设计用于识别嵌入固件镜像内的文件和代码。 Binwalk使用libmagic库,因此它与Unix文件实用程序创建的魔数签名兼容。 Binwalk还包括一个自定义魔数签名文件,其中包含常见的诸如压缩/存档文件,固件头,Linux内核,引导加载程序,文件系统等的固件映像中常见文件的改进魔数签名。
现在,让我们将Binwalk应用于解密D-Link DIR-882固件映像:
binwalk无法识别固件映像中的任何内容
在供应商的FTP服务器上,我们可以找到该路由器的所有旧固件。如果我们使用binwalk检查最早的固件版本v1.00B07,它将正确检测到uImage标头和LZMA压缩数据:
早期DIR-882路由器固件的binwalk扫描结果
这表明我们使用的是固件发布计划的方案1,在查看了固件映像的所有可用版本之后,我们发现固件的v1.04B02是一个过渡版本,它包含在v1.10B02固件包中。你还可以计算图像的熵,以快速确定已加密的图像。
未加密的过渡版本和第一个加密固件的binwalk结果
然后,使用binwalk从v1.04B02固件中提取文件系统。
binwalk解压固件版本1.04B02的根文件系统
成功提取后,我们可以开始调查固件更新过程,并确定如何解密固件。幸运的是,在快速浏览文件系统时,在/bin目录中发现了一个看起来很有希望的二进制文件imgdecrypt。
提取的文件系统的/ bin目录内容
我们在主机和二进制文件之间的处理器体系结构上存在差异的小问题,幸运的是,我们可以使用QEMU执行跨架构的chroot。为此,首先我们将qemu-mipsel-static二进制文件复制到固件根文件系统的/usr/bin/目录中,我们还将加密的固件复制到未加密的固件文件系统。最后,我们将chroot插入固件根目录并获得一个有效的shell。特别感谢chung96vn研究人员向我们展示了这种跨架构的chroot技术。
使用QEMU执行跨架构的chroot并解密固件
使用可运行的shell,我们可以运行imgdecrypt并对解密的固件进行解密。
binwalk成功检测到解密固件的不同部分
总结
以上就是你如何处理加密固件的方法,如果你遇到第三种加密方案,不要惊慌。家用路由器的计算能力通常是有限的。这种限制排除了较慢、较难破解的非对称加密(如RSA)。此外,供应商有时对多个路由器使用相同的加密方案。事实上,imgdecrypt二进制文件还可以用于对DIR-878和DIR-867的固件进行解密。
本文翻译自:https://www.thezdi.com/blog/2020/2/6/mindshare-dealing-with-encrypted-router-firmware如若转载,请注明原文地址