声明:本文主要目的为供自己今后参考
参考文章一: 通过qemu复现路由器漏洞 (参考部分:安装binwalk)
相关命令:
git clone https://github.com/devttys0/binwalk.git
sudo apt-get install qemu qemu-system qemu-user-static binfmt-support
sudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev
git clone https://github.com/devttys0/sasquatch.git
cd sasquatch
chmod +x build.sh
./build.sh
上述第一条命令的作用为:安装C/C++编译器、liblzma、liblzo 和 zlib 相关依赖库。
参考文章二:CSDN-使用qemu进行路由器环境的虚拟搭建-梵歆
binwalk -Me XXXXX.bin
之后会在当前文件夹得到_XXXXX.bin.extracted_
文件,其中的squashfs-root
文件就是硬件设备的root
文件(这个文件夹就可以理解成目的设备)。
验证一下 输入tree
命令,
出现如下的效果图
找squashfs-root
中的一个可执行文件用file
命令查看下其属性(为后续配置搜集信息)
(解释:一会儿启动虚拟机的命令为qemu-system-mips
,该命令分为三部分,上图中如果出现MSB
第三个部分就用mips
,如果是LSB
则用mipsel
,如果上图不是MIPS32
而是MIPS64
,第三个部分为相应的mips64
和mipsel64
,这表示接下来qemu进行虚拟环境搭建的时候需要选择MIPS的内核,如果不是MIPS
而是ARM
或其他的,第三个部分为arm
或其他的。)
在该网址下载mips内核等两个资源,本次搭建过程使用的是vmlinux-2.6.32-5-4kc-malta
和debian_squeeze_mips_standard.qcow2
,这两个文件如果接下来过程不放在_XXXXX.bin.extracted_
文件的同级目录下,就要放在qemu
的一个文件夹底下(好像是qemu/bin
)。
参考文章三:一步一步PWN路由器之环境搭建 - 先知社区
参考部分:配置网络-方法一
建议在当前_XXXXX.bin.extracted_
文件夹下创建init.sh
文件(sh文件,名字自己起)
放入如下代码:(注意,IP地址需改为自己网络的ip地址)
#!/bin/sh
sudo brctl addbr virbr0
sudo ifconfig virbr0 192.168.1.55/24 up
sudo tunctl -t tap0
sudo ifconfig tap0 192.168.1.56/24 up
sudo brctl addif virbr0 tap0
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" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic
保存.sh
文件后,在当前文件夹下的终端键入如下命令:
chmod +x init.sh
./init.sh
此代码也可以一行一行键入,不过电脑重启后,网络配置环境会丢失,需要重新键入,而.sh
文件直接执行就可以。
如果最后一行代码不加-nographic
就会弹出qemu
虚拟机窗口。
登录root用户,密码为root
在虚拟机里配置ip
ifconfig eth0 192.168.1.57/24 up
此时就应该可以ping通主机。
参考文章二:CSDN-使用qemu进行路由器环境的虚拟搭建-梵歆
回到_XXXXX.bin.extracted_
文件夹的终端下,键入如下命令:
cd _XXXXX.bin.extracted_
tar -czvf root.tar squashfs-root/
scp root.tar [email protected]:/root/
输入密码:root
建议创建init.sh
文件,该文件的作用是完成虚拟机内网络配置及相关文件的挂载,因为重启虚拟机后,原来的网络配置不能保存。(如果想直接通过该文件启动硬件设备相关功能也可以自定义该文件,本次init.sh文件不做涉及),init.sh文件内容及上传至虚拟机的命令如下:
#!/bin/sh
ifconfig eth0 192.168.1.57/24 up
mount -o bind /dev ./squashfs-root/dev
mount -t proc /proc ./squashfs-root/proc/chroot ./squashfs-root/ sh
保存并退出
输入:
scp init.sh [email protected]@192.168.1.57:/root/
回到虚拟机内
tar –zxvf root.tar
chmod +x init.sh
./init.sh
如果没有上传init.sh文件,则键入如下命令:
tar –zxvf root.tar
mount -o bind /dev ./squashfs-root/dev
mount -t proc /proc ./squashfs-root/proc/chroot ./squashfs-root/ sh
此时,界面由
变为
且没有任何报错,说明成功。
华为路由器启动路由器设备参考:
./bin/upnp
./bin/mic
目前还没有启动我所用硬件硬件路由器的服务,因为与华为路由器系统文件的内容不一样,没有上述命令中的两个文件,也没有实现ping通外网(例如www.baidu.com)。仅实现了和本机通信。