iot漏洞复现,首先说一下qemu的环境配置。简单介绍一下qemu是个什么东西

虚拟机版本:kali-linux-2019.1a-amd64.iso

qemu结构图来自于CloudDeveloper的简书
师傅配置qemu的两个博客地址
https://www.freebuf.com/vuls/160040.html
https://blog.csdn.net/QQ1084283172/article/details/69652258
brctl:Burnov

qemu是由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛

默认支持多种架构。可以模拟 IA-32 (x86)个人电脑,AMD 64个人电脑,MIPS R4000, 升阳的SPARCsun3 与PowerPC(PReP 及 Power Macintosh)架构

最关键是他是纯软件化实现硬件结构,做出这些东西的人真的不是人,牛逼

经常跟kvm一起来使用的,KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化

整个程序的结构运行图
结构图1
下图为qemu的翻译原理,guest code是模拟的cpu架构的字节码,通过翻译成中间TGC代码,在最后翻译成host代码也就是x86体系的代码
结构图2
简单来说就是一个虚拟机但是可以模拟不同的cpu架构,这是vm所做不到的,其中MIPS是固件用到的比较多的一种架构,所以可以用qemu来进行路由器模拟等等操作,逆向分析的一种小利器,但我现在还是入门,对很多工具了解的不是很多,需要再多多的去努力。

然后就简单配置一下qemu,这里师傅们的博客都很全面,我在这里照搬一些,主要是说一下中间我遇到的一些问题。配置原理我打算之后好好看一下linux操作系统,疫情期间,网课还是很有用的

安装:

sudo apt-get install qemu 

sudo apt-get install qemu-user-static

sudo apt-get install qemu-system

这个期间我出现了一个智商小插曲,apt-install之后我竟然自己通过命令行直接运行qemu,发现没反应,就开始怀疑了会人生。。。。这个程序本来就不能直接输命令行调用的,我镜像都没,用个泡泡茶壶

安装网络配置工具(主要用来连接网络的)

apt-get install bridge-utils uml-utilities

bridge-utils的一些介绍

这里就是我的个人理解了,没有找到对uml-utilities的具体解释,但知道bridge-utils(brctl)的一些功能,创建我们之后要用到的在虚拟机里配置的网桥br0,还创建了要配置的虚拟机网卡,保证虚拟机可以与外界通讯
brctl的的一些可行操作

#添加虚拟网桥
brctl addbr br0
#将物理接口eno16777736添加到br0上
ifconfig addif br0 eno16777736
#为br0配置网络地址,这个地址在后面可以作为虚拟机的网关地
ifconfig br0 192.168.238.130/24 up
#为网桥指定网关地址,在这个实验环境下,这个地址就是vmnet8的地址,作为网关地址
route add default gw 192.168.238.1

回归正题

修改/etc/network/interfaces的内容,直接在后面添加就行

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
# ubuntu 16.04的系统用ens33代替eth0
auto eth0
iface eth0 inet manual
up ifconfig eth0 0.0.0.0 up
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 1

这里被坑了一点点就是那个eth0,因为之前没改,我用的kali版本系统用的eth0,而当时师傅的代码上写的是ens33所以就一直没有连接成功

然后在/etc/qemu-ifup保存如下内容

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /sbin/brctl addif br0 $1
sleep 3

chmod赋予文件可执行权限,然后重启网络

sudo /etc/init.d/networking restart

关闭eth0启动桥br0

sudo ifdown eth0  

sudo ifup br0

镜像下载https://people.debian.org/~aurel32/qemu/mips/
这里我跟师傅用的一样的debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta

启动虚拟机

sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic,macaddr=00:16:3e:00:00:01 -net tap

这时候成功就会登进去
登录界面
如果你没有登录进去失败的话,看看镜像有没有错,登录密码和用户名都是root

查询本机ip地址ifconfig,如果出现error,就想之前一下查询interfaces,把里面的eth0改成eth1,然后 ifup etf1,ip地址就有了。中间有个nano操作,nano interfaces进行修改,ctrl+x退出
修改eth1效果图
之后通过ssh连接虚拟机

ssh root@虚拟机ip

通过scp将固件传送到虚拟机里,就可以开始分析啦

scp -r /root/cve/wr940-root  root@虚拟机ip:/root/

ps:scp是通过ssh进行copy指令的,-r意思是文件迭代复制,就是全都复制过去,前面是发送方路径(千万记得加/root) 后面是接收方,空格也不要错,记得提前在目标虚拟机里mkdir一个root文件,什么名字都可以我这里跟师傅的博客取得一致。然后就复制上去了,就可以运行分析啥的啦,然后就是后面博客的事情啦~~~~


一个好奇的人