D-Link错误:固件加密密钥在未加密映像中暴露

2020-07-23 02:11:51

安全研究人员已经展示了一种方法,可以解密嵌入在D-Link路由器中的专有固件和图像。

固件是为硬件设备上的低级功能供电的代码。它通常是只读存储器中的硬编码数据。

公司对其移动设备中的固件映像进行加密,以防止竞争对手和威胁行为者对其进行反向工程,并防止他们的客户(或者更好的是恶意软件)使用定制的安全固件在设备上闪存。

“制造商通常会对固件进行加密,以防止人们分析其中的二进制文件。此外,如果操作正确,加密固件映像可以防止未经授权的、修改过的固件映像能够在设备上闪存,“安全研究员Nick Starke在接受BleepingComputer采访时解释道。

要解密任何东西,要么需要秘密的解密密钥,要么需要破解加密算法的手段。如果固件映像真的是加密的,怎么会这么容易破译呢?

在分析开始时,Starke已经从他们的支持网站下载了最新版本的D-Link固件(1.11B02),并开始使用Binwald软件进行分析。

有趣的是,解压从同一D-Link支持站点获得的较早版本的1.02B03&34;显示了两个固件文件:

出现以";..._uncrypted.bin";结尾的二进制文件直接表明它可能是未加密的,而另一个可能是加密的。

上述信息告诉研究人员,该图像包含未加密的固件二进制文件,然后他们可以提取并分析存储的解密密钥。

";Bingo、uImage标头和附带的文件系统。我们可以使用binwald-em DIR3040A1_FW102B03_uncrypted.bin解压缩它。在查看文件系统时,我做的第一件事就是查找证书,Starke在他的博客文章中解释道。

经过进一步分析,他的怀疑是正确的,并发现解密和加密密钥都嵌入在二进制文件中。

除了密钥和证书文件外,还提供了一个名为/bin/imgdeccrypt的程序,这是加密图像的解密工具。

";有一些从局部堆栈变量派生的键,它不是直接反转的。因此,与其花费数小时试图弄清楚生成密钥的代码到底做了什么,为什么我们不试着运行二进制文件,将我们想要解密的固件映像传递给它呢?

在采取了一系列步骤后,研究人员能够将环境升级到足以解密最新的1.11B02固件版本。

它不仅输出用于解密固件文件映像的密钥,而且还将解密的版本放入/tmp/.firware.orig,";阅读博客帖子。

这意味着反向工程师现在可以继续分析以其他方式加密的固件映像。

“越来越多的设备制造商正在转向加密固件,然而,大多数都是从未加密的固件映像开始的。这通常意味着必须有一个未加密的固件映像,其中存储有密码或密钥。如果你能找到最后一张未加密的图像,你通常就能找到密码,从而解密任何后续的加密图像,“斯塔克进一步告诉beepingcomputer。

本月早些时候,另一位安全研究员里克·桑切斯(Rick Sanchez)也使用了同样的技术,他在一篇由多部分组成的博客文章中对解密算法进行了深入的静态分析。

桑切斯最初发现了这个漏洞,他依赖于购买物理D-Link设备,正如他在帖子第一部分中解释的那样,这款设备的价格可能高达200美元。

由于所有加密固件映像(在任何设备上)的密钥保持相同,因此从支持站点获取较早的映像将实现相同的目标。

两位研究人员都是在不同的时间独立发现了这一缺陷,他们的研究方法和使用的工具也存在明显的差异。

这些发现强调,如果存在获得守护秘密的密钥的微不足道的手段,即使是加密技术也是徒劳的,并通过模糊不清变成了安全。

在D-Link的案例中,即使是最新的固件映像也向好奇的研究人员开放,供他们分析,他们可以从D-Link的网站上获得较旧的固件映像。