使用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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,893评论 0 5
  • 如果你看完书中的所有例子,你很可能已经做完你的实验和在已经越狱的iPhone上的研究。因为和许多人一样,几乎所有的...
    fishmai0阅读 16,298评论 2 42
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,468评论 9 467
  • 之前作Cell定制,以Image为背景,遇到此问题。搜索良久..今转载留存,供大家参考 传送门:HOW TO SE...
    RichyLeo阅读 3,612评论 3 3