😇
牛牛的安全 Odin
  • 个人介绍
  • 数据安全
  • 工控安全
    • 工控概念
  • 车联网安全合规
    • R155
    • CSMS\VTA
    • GDPR认证
  • 车联网安全
    • 漏洞订阅
    • 汽车攻击时间轴
    • 汽车信息安全研究
      • 车厂安全需求 Custom Requirement
      • 安全威胁
      • 参考文章
      • Who’s Behind the Wheel?
      • 安全研究基础
      • 智能网联汽车安全渗透指标
      • 智能网联汽车软件安全测试关键技术研究
      • 基于硬件在环的整车控制器功能安全测试技术研究
      • 智能网联汽车信息安全解决方案
      • 自动驾驶汽车的安全性-识别挑战
    • ECU逆向案例
      • 特斯拉攻击链
      • 汽车动力系统ECU固件逆向工程初探
  • 物联网安全
    • IoT 技术和协议
    • 智能设备常规测试思路总结
    • 各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
    • QEMU 系统仿真
      • 如何“用 QEMU 模拟它”
      • 处理加密的路由器固件
    • 自动分析Automated Approach
    • IOT渗透测试(一)
    • 物联网安全目录
  • 固件分析案例
    • 智能门锁、手环
      • MCU固件反汇编
      • 云丁鹿客门锁中bootloader和FreeRTOS的分析
      • 云丁鹿客门锁BLE通信的分析(下)
      • 云丁鹿客门锁BLE通信的分析(中)
      • 云丁鹿客门锁BLE通信的分析(上)
      • 华为智联旗下小豚AI摄像头的完整分析(下)
      • 华为智联旗下小豚AI摄像头的完整分析(上)
      • 海康萤石智能门锁的网关分析(4)
      • 海康萤石智能门锁的网关分析(3)
      • 海康萤石智能门锁的网关分析(2)
      • 海康萤石智能门锁的网关分析(1)
      • idapython编写和调试
      • 果加智能门锁的全面分析(下)
      • 果加智能门锁的全面分析(中)
      • 果加智能门锁的全面分析(上)
      • BLE智能手环
      • 耶鲁智能门锁的简单测试(下)
      • 耶鲁智能门锁的简单测试(上)
      • 耶鲁门锁漏洞
      • 对一款BLE灯泡的分析
      • BLE协议栈与Android BLE接口简介
    • 在IoT设备中查找端口对应进程的四种方法
    • 路由器命令执行
    • 对基于Philips TriMedia CPU的网络摄像机进行逆向工程
    • 从Microsoft Band以及 Hello Sense 设备中提取自己的历史数据
    • CVE-2021-22909- 深入研究 UBIQUITI 固件更新错误
    • 复现|摄像头固件重打包
    • Dlink_DWR-932B路由器固件分析
    • 针对小米九号平衡车的无接触式攻击
    • 记一次智能印章设备的漏洞挖掘
  • APP 逆向
    • Go二进制文件逆向分析从基础到进阶——综述
    • Switch APP逆向分析
  • 传统静态代码分析
    • 静态分析案例
      • ELF恶意软件的静态分析原理和方法(上)
      • ELF恶意软件的静态分析原理和方法(下)
    • 静态代码分析工具清单
    • 企业级静态代码分析工具清单
  • 应用安全测试
    • DAST、SAST、IAST
    • IAST 工具初探
  • 芯片架构
    • ARM指令集概念
    • ARM指令集
    • 冯·诺伊曼结构
    • 指令集
    • 处理器架构、指令集和汇编语言,三者有何关系?
  • 病毒分析
    • 熊猫烧香
  • 编程知识
    • REST API 教程
  • 流量分析工具
    • 卡巴斯基开源的智能手机流量劫持工具
    • 利用 Burp Suite 劫持 Android App 的流量(二)
    • 利用 Burp Suite 劫持 Android App 的流量(一)
  • 区块链安全
    • 安全多方计算
    • Chainalysis 团队从区块链的角度分析发现 2020 年最大的 4 起勒索软件攻击实现存在关联
  • 攻击案例
    • 特斯拉Powerwall网关可能受到黑客攻击
  • 移动应用
    • Mac上使用Charles抓包
    • 手机抓包工具汇总
    • APP渗透测试流程和技巧大全
    • 加壳和脱壳
    • 浅谈 Android Dex 文件
    • 移动应用漏洞分析样例分享
    • 移动应用常见漏洞分析
    • 移动应用漏洞分析工具介绍
    • 渗透测试流程详解 及 移动APP安全测试要点
    • Frida Android hook
  • 安全设计
    • 【软件安全设计】安全开发生命周期(SDL)
Powered by GitBook
On this page
  1. 物联网安全
  2. QEMU 系统仿真

处理加密的路由器固件

https://www.zerodayinitiative.com/blog/2020/2/6/mindshare-dealing-with-encrypted-router-firmware

Previous如何“用 QEMU 模拟它”Next自动分析Automated Approach

Last updated 3 years ago

也许你阅读我们以前多次 漏洞研究,决定试一试。伟大的!您从供应商网站下载了家用路由器的固件,将其放入以便您可以。然后出现了下面的画面……

图 1. binwalk 把手举到空中,耸了耸肩,什么也没报告。

现在怎么办?

一般来说,每个非 binwalk 友好固件都将是一次冒险,因此无法提供破解所有类型加密固件的分步指南。本博客旨在通过一些常见场景并提供处理此类固件的一般指南。我们还将提供解密 D-Link DIR-882 固件的示例。

回首往事:加密固件发布的三种常见场景

解密固件的最简单方法是在固件中查找解密程序。“如何?” 你问。如果路由器可以解密新固件以进行更新,则解密例程必须位于旧固件映像中的某处。如果您遇到加密固件,请访问供应商网站并查找固件的存档版本,下载所有旧版本并开始浏览。

以下是三种常见的固件发布场景:

场景一

设备固件在出厂时未加密,也不包含任何解密程序。解密例程与未加密版本的固件一起提供,新版本 (v1.1) 用于将来加密固件更新。随后的固件版本被加密。

图 2:固件发布场景 1

在这种情况下,我们可以从固件 v1.1 中获取解密例程,并使用它来解密最新的固件版本 1.2。

场景二

设备固件在原始版本中是加密的。供应商决定更改加密方案并发布包含新解密例程的未加密过渡版本 v1.2。

图 3:固件发布场景 2

与场景1类似,我们可以从v1.2镜像中获取解密例程,并将其应用到最新的加密固件中。阅读固件版本的发行说明可能有助于识别未加密的过渡版本。发行说明通常会指导用户升级到中间版本,然后再升级到最新版本。中间版本很可能是未加密的过渡固件。

场景3

设备固件在原始版本中是加密的。但是,供应商决定更改加密方案,并发布包含新解密例程的未加密过渡版本。

图 4:固件发布场景 3

在这种情况下,没有简单的方法来获得解密程序。一种方法是购买设备并直接从硬件中提取未加密的固件。另一种可能的途径是对固件进行更多分析,以期“破解加密”。

场景 3:淘汰十六进制编辑器

在十六进制编辑器中快速滚动固件可以让我们直观地了解我们正在处理的内容。以二进制方式查看;以十六进制模式查看。是否有 0xFF 字节或 0x00 字节的字段?文件中有模式吗?它是随机十六进制字节的同质 blob 吗?在这种情况下,固件很有可能已经代替了带有静态密钥的简单 XOR。检查直方图,是否有一个十六进制字节比其他十六进制字节出现的频率更高?

场景 3:压缩、加密或混淆?

理论上有效,实践中也有效

图 5:binwalk 无法识别固件映像中的任何内容

图 6:早期 DIR-882 路由器固件的 binwalk 扫描结果

这表明我们处于固件发布时间表的场景 1。在浏览了固件镜像的所有可用版本后,我们发现固件的 v1.04B02 是过渡版本,它包含在 v1.10B02 固件包中。您还可以计算图像的熵以快速确定哪个已加密。

图 7:未加密过渡版本和第一个加密固件的 binwalk 结果

然后我们使用 binwalk 从 v1.04B02 固件中提取文件系统。

图 8:binwalk 提取固件版本 1.04B02 的根文件系统

图 9:提取的文件系统的 /bin 目录内容。

只是一个小问题

图 10:使用 QEMU 执行跨架构 chroot 并解密固件

图 11:binwalk 成功检测到解密固件的不同部分

结论

你有它!这就是您处理加密固件的方式。如果您遇到场景 3,请不要惊慌。消费者路由器通常在计算能力方面受到限制。此限制排除了更慢、更难破解的非对称加密,例如 RSA。此外,供应商有时会为多个路由器使用相同的加密方案。事实上,imgdecrypt二进制文件也可用于解密 DIR-878 和 DIR-867 的固件。寻找属于同一产品线、具有相同处理器架构的路由器。环顾四周,您可能会中大奖。无论如何,我祝你在你的硬件黑客努力中好运,并期待看到你的提交!

参考资料和进一步阅读

熵提供了对固件的重要见解。具有高熵的固件部分建议加密。低熵字节的一部分表明低随机性、结构和可预测性。,它允许我们确定是否被压缩、加密或混淆。在这个分析阶段,的可能会变得有用。

让我们将新发现的知识应用于加密的 D-Link DIR-882 固件映像:

从供应商的,我们可以找到该路由器的所有旧固件。如果我们用 binwalk 检查最早的固件版本 v1.00B07,它将正确检测到 uImage 标头,以及 LZMA 压缩数据:

成功提取后,我们可以开始调查固件更新过程并确定固件是如何被解密的。幸运的是,快速浏览文件系统后imgdecrypt,在/bin目录中发现了一个看起来很有前途的二进制文件。

我们有主机和二进制之间处理器架构差异的小问题。幸运的是,我们可以使用 QEMU 执行跨架构的 chroot。为此,首先我们将qemu-mipsel-static二进制文件复制到/usr/bin/固件根文件系统的目录中。我们还将加密的固件复制到未加密的固件文件系统。最后,我们 chroot 进入固件根目录并获得一个可以工作的 shell。特别感谢名为 chung96vn 的研究人员向我们展示了这种跨架构的 chroot 技术。

有了一个工作外壳,我们就可以运行imgdecrypt和解密加密的固件。

你可以在 Twitter 上找到我,并关注获取最新的漏洞利用技术和安全补丁。

当与其他分析相结合时
binwalk
大量选项
@TrendyTofu
团队
https://wzt.ac.cn/2019/09/18/D-Link_BUG/
https://www.itcodemonkey.com/article/13631.html
https://ownyourbits.com/2018/06/13/transparently-running-binaries-from-any-architecture-in-linux-with-qemu-and-binfmt_misc/
博客
帖子
上的
路由器
binwalk 中,
在 QEMU 中模拟它
FTP 服务器
图 5:binwalk 无法识别固件映像中的任何内容
图 1. binwalk 把手举到空中,耸了耸肩,什么也没报告。
图 3:固件发布场景 2
图 2:固件发布场景 1
图 4:固件发布场景 3
图 6:早期 DIR-882 路由器固件的 binwalk 扫描结果
图 7:未加密过渡版本和第一个加密固件的 binwalk 结果
图 8:binwalk 提取固件版本 1.04B02 的根文件系统
图 10:使用 QEMU 执行跨架构 chroot 并解密固件
图 9:提取的文件系统的 /bin 目录内容。
图 11:binwalk 成功检测到解密固件的不同部分