已加密路由器固件的分析和解密过程详解
摘要:检查路由器的品牌和型号信息,然后访问相应制造商的官方网站以下载路由器的相应固件。下载完成后,将固件文件放入binwalk,以便我们可以在QEMU中模拟路由固件。
检查路由器的品牌和型号信息,然后访问相应制造商的官方网站以下载路由器的相应固件。下载完成后,将固件文件放入binwalk,以便我们可以在QEMU中模拟路由固件。
通常,需要以不同方式分析每个非binwalk友好的固件,因此我们无法为您提供所有类型的加密固件的通用动手教程。但是,在本文中,我们将向您展示几种常见的固件分析方案,并提供处理这种类型的加密固件的一般指南。此外将提供解密D-Link DIR-882固件的示例。
加密固件的三种方案
解密固件的最简单方法是在固件中寻找解密程序。那么我们该怎么办? 如果路由器可以解密并更新新固件,则解密程序必须在固件映像中的某个位置。如果遇到加密的固件,则可以访问制造商的官方网站并查找该固件的旧版本,然后下载所有旧固件并开始分析。
下面给出了三种常见的固件发行方案。
场景1
设备固件未加密,不包含任何解密过程。解密程序随附了较新版本(v1.1)的未加密版本的固件,用于将来的加密固件更新。此后发布的固件是加密的固件。
此时,我们可以从固件v1.1中获得解密程序,然后使用它来解密固件v1.2的最新版本。
场景2
设备固件已在原始版本中加密。制造商决定更改加密方案,并发布了未加密的转换版本v1.2,其中包括新的解密程序。
与方案1相似,我们可以从v1.2映像中获取解密程序,并将其应用于最新的加密固件。阅读固件版本的发行公告可以帮助我们识别未加密的转换版本。发行公告通常会指导用户在升级到最新版本之前先升级到中间版本,该最新版本可能是固件的未加密转换版本。
场景3
设备固件已在原始版本中加密。但是,供应商决定更改加密方案并发布包含新版本解密程序的未加密转换版本。
在这种情况下,可能难以获得解密程序。 一种方法是购买设备并直接从设备硬件中提取未加密的固件。另一种方法是对固件进行更深入的分析,以期“破解加密”。
场景4
通过使用十六进制编辑器查看固件的内容,我们可以快速,直观地了解正在处理的内容。查看二进制或十六进制模式的固件源代码,您是否看到0xFF或0x00字节的数据字段? 文件代码是否具有特定的模式?它们是由随机十六进制字节组成的同质块吗? 如果有,则固件源代码很可能已被带有静态密钥的简单XOR字段替换。您可以看到,是否有一个十六进制字节比其他字节出现得更频繁?
方案5:压缩,加密还是混淆?
熵可以帮助我们更好地分析固件。固件的某些部分具有具有高熵,表明这些位置已加密。低熵字节表示低随机性,结构和可预测性。与其他分析结合使用时,它可以帮助我们确定固件是否已压缩,加密或混淆。在此分析阶段,许多binwalk选项可能会有所帮助。
理论与实践
接下来,我们将刚刚学到的知识应用于加密的D-Link DIR-882固件映像:
我们可以从制造商的FTP服务器上找到该路由器固件的所有较旧版本。使用binwalk测试固件v1.00B07的最早版本,它将正确检测uImage标头和LZMA压缩数据:
这表明我们现在处于场景1中。浏览了固件映像的所有可用版本之后,我们发现固件的v1.04B02版本是转换后的版本,它包含在v1.10B02固件包中。此外,我们可以计算图像的熵,以快速确定已加密的图像。
接下来,使用binwalk从v1.04B02固件中提取文件系统:
提取成功后,我们可以开始分析固件更新过程,并确定解密固件的方法。幸运的是,在快速浏览文件系统后,我们在/ bin目录中找到了一个看似有趣的代码文件“ imgdecrypt”。
我们在主机设备和代码文件之间的处理器体系结构差异上遇到了一个小问题。幸运的是,我们可以使用QEMU执行跨体系结构的chroot。首先,我们需要将qemu-mipsel-static代码复制到固件根文件系统中的/ usr / bin /目录中,然后将加密的固件复制到未加密固件的文件系统中。最后,使用chroot输入固件根目录,然后获取可用的shell。
我们可以看到binwalk成功地检测到了解密固件中的不同区域。
总结一下
以上是处理加密固件的一般方法。值得一提的是,制造商有时会对多个路由器使用相同的加密方案,并且imgdecrypt文件也可以用于解密DIR-878和DIR-867固件。因此,当我们找到解密程序或解密方案时,可以使用它来尝试在同一产品系列中具有相同处理器体系结构的其他路由器产品。
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了