使用QEMU模拟IOT固件

简介

在IOT设备测试中,有很多时候可以拿到设备的固件去做进一步的测试。这时就需要某种方式将固件中的程序运行起来,为下一步渗透测试做进一步的准备。

注意:

1.使用qemu不能直接运行固件,也就是不能直接将固件当作Linux启动,只能运行固件中的程序,例luci(User-mode模式模拟运行)。例如,现在有一个tp-link xxx摄像头,在tp-link网站中下载固件,使用firmware-mod-kit解压缩固件。并使用qemu运行其中/bin/uhttpd。即可成功启动web管理界面。因为只是单独启动IOT设备的web管理界面,没有启动其他相应的运行程序,故模拟的效果不是很理想。

操作

1. 获取固件

1.设备的支持网站上查找关于设备的离线升级包

2.使用设备的系统升级功能,抓包分析升级请求包。一般IOT升级下载固件的操作都是使用http,抓包可以获取到下载链接,然后自行使用wget下载

2.解压缩固件

1.使用firmware-mod-kit,执行 extract.sh 即可成功解压,解压缩后的文件目录结构类似于Linux。

2.如果更改固件的内容,可以使用build.sh重新打包固件

3.使用qemu运行固件

qemu的两种运行方式

  • User mode模拟模式,亦即是用户模式。QEMU能引导那些为不同中央处理器编译的Linux程序。而Wine是其主要目标。
  • System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上模拟不同虚拟电脑。

一般使用用户模式较多,在确定系统架构后,使用sudo chroot. ./qemu-mips-static bin/busybox即可运行固件中的某一程序。

常见问题
  1. 某些设备的运行程序需要从nvram中获取配置,可以使用nvram-faker这个库去模拟nvram https://github.com/zcutlip/nvram-faker

你可能感兴趣的:(使用QEMU模拟IOT固件)