如何使用 Squashfs 映像和 uBoot 内核映像使用 QEMU 执行完整的 MIPS 系统仿真?

逆向工程 固件 数据库 米普 奇木 路由器
2021-07-10 04:41:46

特尔;博士:

需要借助从固件文件中提取的 squashfs 映像文件和 uBoot 内核映像文件,使用 QEMU 模拟 MIPS-BE 系统的技巧。

长版:

- 我有的:

  1. 一个便宜的不受欢迎的 GPON(光纤 ONU)设备,我有 root shell 访问权限。
  2. 一台电脑
  3. 初学者技能(binwalk、gdb、基本的stackoverflow等)
  4. 对黑客的高度热情

- 我想要的是:

路由器运行一个名为Boa的古老网络服务器这有几个公开的漏洞。但是,我已经针对目标路由器测试了每一个;但没有一个奏效。固件于今年发布;所以,我几乎可以肯定供应商已经修补了它们。但是,我已经发现了一个漏洞,我已向供应商披露了该漏洞。但是,我不想就此止步,因为我很确定这个网络服务器包含大量其他漏洞。我的研究发现供应商已将 Web 服务器二进制文件预编译为剥离文件,并且所有服务器端处理功能都编译为剥离自定义库文件。我想要的是动态分析库文件并使用gdb捕获从网络服务器到库文件的函数调用。为此,我尝试了以下步骤:

  • 放置一个预编译的 gdbserver 二进制文件并尝试直接在路由器中运行它。但是,每当我尝试这样做时,它都会自动被杀死。(很可能是由于内存不足)
  • 尝试使用 QEMU 用户模式执行 webserver 二进制文件。但是,因自定义错误消息而失败。这些自定义错误消息不是很具有描述性,并且在整个 Internet 上都没有可用的文档
  • 经由QEMU(使用Debian内核映像和驱动图像从模拟一个MIPS体系这里)中,从固件QEMU,chroot的成复制的文件系统,并从固件文件系统执行的BusyBox壳复制extraced文件系统。即使 BusyBox shell 在 QEMU 内工作,我也无法在 QEMU 内启动 web 服务器,因为它会抛出与以前相同的自定义错误。
  • 尝试使用 Ghidra 静态分析库。但是,由于符号被剥离,这对我来说根本没有任何意义。
  • 将 rootfs 转换为 qcow2 映像并将其与 debian 内核映像一起使用,但 QEMU 无法从中启动,因为它无法检测到磁盘映像。

就我的研究而言,我动态分析 Web 服务器的唯一选择是使用我从固件中提取的内核映像和 rootfs 映像使 Web 服务器在 QEMU 中运行。那么,我的下一步是什么?如何使用 Squashfs 映像和 uBoot 内核映像通过 QEMU 执行完整的系统仿真?

0个回答
没有发现任何回复~