1.相关琐碎
上一节中简单演示了利用attifyos附带的工具模拟路由器固件,这一章演示另一种方法。
2.工具准备
qemu
下载地址:https://github.com/qemu/qemu
qemu是一个用C语言编写的开源虚拟化软件,主要对单片机或者嵌入式常用的一些处理器模拟,嵌入式开发中使用广泛,比如arm,mips, sparc,riscv等架构处理器。
qemu的架构如下图所示,由几个基本的组件组成:
图 QEMU架构图(图来源时间之外沉浮事)
如图所示,qemu由以下几个部分组成:
Hypervisor控制仿真
Tiny Code Generator(TCG)在虚拟机器代码和宿主机代码之间进行转换。
软件内存管理单元(MMU)处理内存访问。
磁盘子系统处理不同的磁盘映像格式
设备子系统处理网卡和其他硬件设备
本次实验的固件是mips32位架构的因此,需要安装qemu-system-mipsel,
安装命令:
apt install qemu-system-mipsel
HG532固件
链接:https://pan.baidu.com/s/1vZt-Ww7NAFdFSbDivNHM0w
提取码:tnie
binwalk
安装教程:https://blog.csdn.net/qq_50854790/article/details/123391951
binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。具体来说,binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展。
网上很多安装教程,安装时注意要成功安装.deps.sh 脚本中的binwalk依赖,否则提取出的固件会不完整。
linux内核和硬盘映像
下载地址:https://people.debian.org/~aurel32/qemu/mipsel/
根据要模拟固件的是32或64位架构下载对应的内核和硬盘映像
3.开始实验
使用binwalk提取固件中的文件系统
命令:
binwalk -Me DIR645A1_FW103RUB08.bin
-M 递归提取固件
-e 自动提取已知文件类型
在提取出的文件夹中,即可找到固件的文件系统
设置网络环境
为了与模拟出的路由器进行通信,需要虚拟网卡,做如下设置:
sudo brctl addbr Virbr0
sudo ifconfig Virbr0 192.168.153.1/24 up
sudo tunctl -t tap0
sudo ifconfig tap0 192.168.153.11/24 up
sudo brctl addif Virbr0 tap0
模拟路由器环境
使用qemu-system-mips模拟路由器环境,创建启动脚本start.sh并执行
命令:
sudo qemu-system-mipsel \
-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
登陆名和密码均为root,设置qemu虚拟机中网络环境
ifconfig eth0 192.168.153.2/24
确认主机能与qemu虚拟机通信
挂载固件文件系统
路由器环境已经备好,将binwalk提取出的固件文件系统,使用scp命令将文件系统传入qemu虚拟机
命令:
scp -r ./squashfs-root root@192.168.153.2:/root/
然后挂载文件系统
命令:
mount -o bind /dev ./squashfs-root/dev/
mount -t proc /proc/ ./squashfs-root/proc/
chroot squashfs-root /bin/sh
成功挂载文件系统
4.开启服务
在qemu虚拟机中重现http服务,在/bin下开启upnp和mic服务,因为开启之后qemu虚拟机网络会改变,因此需要ssh远程开启服务
命令:
ssh root@192.168.153.2
chroot squashfs-root /bin/sh
./bin/upnp
./bin/mic
然后在以上qemu虚拟机中重新设置网络
ifconfig eth0 192.168.153.2/24 up
ifconfig br0 192.168.153.11/24 up
最后就可以在本机中访问模拟出的路由器网站