IOT漏洞挖掘 | 路由器固件仿真配置​(二)

安全入门
2023-02-22 18:01
129573

1.相关琐碎

上一节中简单演示了利用attifyos附带的工具模拟路由器固件,这一章演示另一种方法。

2.工具准备

qemu

下载地址:https://github.com/qemu/qemu

qemu是一个用C语言编写的开源虚拟化软件,主要对单片机或者嵌入式常用的一些处理器模拟,嵌入式开发中使用广泛,比如arm,mips, sparc,riscv等架构处理器。

qemu的架构如下图所示,由几个基本的组件组成:

image.png
图 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位架构下载对应的内核和硬盘映像

image.png

3.开始实验

使用binwalk提取固件中的文件系统

命令:
binwalk -Me DIR645A1_FW103RUB08.bin
-M 递归提取固件
-e 自动提取已知文件类型

image.png

在提取出的文件夹中,即可找到固件的文件系统

image.png

image.png

设置网络环境

为了与模拟出的路由器进行通信,需要虚拟网卡,做如下设置:
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

image.png

image.png

模拟路由器环境

使用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

image.png

image.png

image.png

登陆名和密码均为root,设置qemu虚拟机中网络环境

ifconfig eth0 192.168.153.2/24

image.png

确认主机能与qemu虚拟机通信

image.png

image.png

挂载固件文件系统

路由器环境已经备好,将binwalk提取出的固件文件系统,使用scp命令将文件系统传入qemu虚拟机
命令:

scp -r ./squashfs-root root@192.168.153.2:/root/

image.png

然后挂载文件系统
命令:
mount -o bind /dev ./squashfs-root/dev/
mount -t proc /proc/ ./squashfs-root/proc/
chroot squashfs-root /bin/sh

image.png

成功挂载文件系统

4.开启服务

在qemu虚拟机中重现http服务,在/bin下开启upnp和mic服务,因为开启之后qemu虚拟机网络会改变,因此需要ssh远程开启服务
命令:

ssh root@192.168.153.2
chroot squashfs-root /bin/sh
./bin/upnp
./bin/mic

image.png

然后在以上qemu虚拟机中重新设置网络

ifconfig eth0 192.168.153.2/24 up
ifconfig br0 192.168.153.11/24 up

image.png

最后就可以在本机中访问模拟出的路由器网站

image.png

参与评论

0 / 200

全部评论 2

focus的头像
如果是aarch 64 要如何去仿真呢?https://people.debian.org/~aurel32/qemu 并没有aarch64 相关内核
2023-03-20 16:13
zebra的头像
学习大佬思路
2023-03-19 12:15
投稿
签到
联系我们
关于我们