1. 前言
简单记录下QEMU的安装与搭建,主要是桥接网卡的配置,之前因为QEMU版本问题没法通外网,导致一直以来的配置不太规范,这里直接写了俩sh
脚本用于一键启停。当然,写的不好还请见谅。
2. 安装
编辑了两个sh
脚本,直接运行脚本即可模拟环境。同时需注意下QEMU版本,版本太低会导致模拟出来的环境无法访问外网,且无IP。另外,这里不推荐Ubuntu16,版本太低装QEMU时组件更新到崩溃。
1 | QEMU emulator version 6.1.1 |
首先是一些库的安装,自行下载安装即可(或者后面安装QEMU的时候,缺啥装啥也成)
1 | build-essential |
QEMU下载(下不下来的也可以看最后,有放的网盘链接)
1 | wget https://download.qemu.org/qemu-6.1.1.tar.xz |
QEMU编译安装,安装时缺啥补啥就行,没必要提前安装软件一类的,有些前提组件可能虚拟机里已经符合配置了。
1 | sudo ./configure |
启动脚本
1 | sudo tunctl -t tap0 |
停止脚本
1 | sudo brctl delif br0 ens33 |
3. 模拟
比如这里,我们拿TOTOLINK来做个模拟测试。下面是启动的参数,当然,也可以根据自己需求自定义参数。
1 | sudo qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic |
记得加sudo,以root权限运行才可。
1 | 账密:root/root |
环境搭建完成后测试下通信效果,分别ping了宿主机以及外网,Good!
至此,我们的环境是构建完成了。但是我们还需要把我们的固件丢到虚拟机里跑起来才行,首当其冲的肯定是先把我们的固件下载下来。
1 | https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html |
接着使用binwalk
进行递归解包
1 | binwalk -Me TOTOLINK_C834FR-1C_NR1800X_IP04469_MT7621A_SPI_16M256M_V9.1.0u.6279_B20210910_ALL.web |
这里插一句,有些时候binwalk
没办法成功解出来固态中的数据,这时候需要我们来修复下binwalk
1 | 附件复制到虚拟机里 |
修复完成后,原来无法分离出有效文件的固件也可以成功分离了。
前置条件已经准备好了,接下来就是将我们的固件copy到QEMU虚拟机里运行了。
1 | sudo scp -r squashfs-root/ root@192.168.7.37:/root/ |
这里提一句,Squashfs
是一套供Linux
核心使用的GPL
开源只读压缩文件系统,多用于嵌入式系统中。可以简单的理解为嵌入式系统的核心运行代码,所有的服务都由它来启动。
讲完上面的,就是运行我们的服务了(每个服务的启动方式或启动文件都不一样,需要自行搜索或判断)
1 | chroot ./squashfs-root/ /bin/sh |
到这里环境的搭建及模拟就已经结束了,可以根据需要去测试漏洞了。关于GDB联调的话,可以参考我Tenda-AC15栈溢出漏洞复现(CVE-2018-5767)这篇帖子。system态的GDB联调后面有空再补吧。
4. 附件
1 | QEMU压缩包 |
5. 参考链接
1 | https://sabersauce.github.io/2016/07/28/squashFS-%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/ |
发布时间: 2022-11-24
最后更新: 2022-12-14
本文标题: QEMU安装与搭建
本文链接: https://foxcookie.github.io/2022/11/24/QEMU搭建及模拟/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!