无法启动 ARM 磁盘映像

逆向工程 手臂 奇木
2021-07-02 16:36:32

我想对 Netgear R8300 - Nighthawk 夜鹰 X8 AC5000 智能 WiFi 路由器/R8300 的固件进行逆向工程(可在此处下载)。

我能够使用 提取图像的内容binwalk,但是我希望在“实时”情况下测试一些可执行文件。为了做到这一点,我尝试使用 QEMU。

可悲的是,无论如何,我的系统崩溃了。
我开始于:

$ qemu-system-arm -M vexpress-a9 -hda R8300-V1.0.2.100_1.0.82.chk 
Warning: Orphaned drive without device: id=scsi0-hd0,file=R8300-V1.0.2.100_1.0.82.chk,if=scsi,bus=0,unit=0
qemu: fatal: Trying to execute code outside RAM or ROM at 0x04000000

据我所知,QEMU 有一个驱动程序,但他不知道如何处理。所以我尝试手动指定更多参数:

qemu-system-arm -M vexpress-a9 \
   -drive file=R8300-V1.0.2.100_1.0.82.chk,format=raw \
   -device scsi-hd,id=scsi0-hd0

qemu-system-arm: -device scsi-hd,id=scsi0-hd0: No 'SCSI' bus found for device 'scsi-hd'

我尝试使用一些不同的设备类型,但似乎找不到正确的总线。
我什至试图将图像分割成不同的部分(内核和文件系统),但我仍然崩溃了。

我对逆向工程还很陌生,我可以就如何启动固件映像提供一些提示或建议吗?

编辑稍微使用该命令,我能够收到不同的错误消息:

$ qemu-system-arm -M vexpress-a9 -cpu cortex-a9 \
   -redir tcp:8888::80 -m 512 \
   -drive file=R8300V1.0.2.100_1.0.82.chk,format=raw \
   -device scsi id=scsi0-hd0,if=ide-hd

qemu-system-arm: -device scsi: drive with bus=0, unit=0 (index=0) exists  

我尝试指定不同的总线、单位和索引,但错误仍然相同

1个回答

在分析目标系统时,我通常会尽量避免启动整个嵌入式操作系统。相反,尝试使用qemu-system-arm -E PATH="/bin:/usr/bin" -E OTHERENVVARS=foo -g 10000 ./myTargetBinary.

在我的演示文稿中查看幻灯片 27+ https://files.sans.org/summit/hackfest2015/PDFs/IoT-Devices-Fall-Like-Backward-Capacitors-Or-the-Month-Josh-Was-Forced-to-Wear -裤子-乔什-赖特.pdf您可能需要chrootmyTargetBinary. 通常,运行二进制文件时出现的错误需要更多的分析来识别丢失的 conf 文件、必要的环境变量、特定的硬件访问等,在运行时分析之前需要一些初步的静态反汇编。