运行环境安装配置之前须了解你所使用的Linux系统的版本以及Qemu的版本,因为这直接影响着你后续选择安装各种依赖包、mips qemu镜像等的版本,各种版本都对应上,最终系统才能正确运行。本次漏洞分析的基础环境为前期的Ubuntu18.04虚拟机和基于qemu-4.0.0源码编译安装的Qemu运行环境:
从站点https://people.debian.org/~aurel32/qemu/mips/下载debianmips qemu镜像,由于虚拟机是Ubuntu linux,下载debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta即可:
MIPS系统网络配置
使用QEMU 模拟运行MIPS系统,需要将ubuntu虚拟机设置成桥接,这样以来ubuntu系统就可以和QEMU虚拟机进行通信和数据传输(此操作类似配置VMware Workstation的桥接用以与物理机的通信)。
获取安装依赖,执行以下命令:
sudo apt-get install bridge-utils uml-utilities
修改ubuntu主机网络配置,将ubuntu的网络接口配置文件 /etc/network/interfaces 修改为如下内容并保存、关闭:
sudo gedit /etc/network/interfaces
修改QEMU的网络接口启动脚本,重启网络使配置生效,执行以下命令:
sudo gedit /etc/qemu-ifup
在脚本文件/etc/qemu-ifup结尾增加如下内容:
保存文件/etc/qemu-ifup 以后,赋予可执行权限,然后重启网络使所有的配置生效:
sudo chmod a+x /etc/qemu-ifup
sudo /etc/init.d/networking restart
QEMU启动配置
Qemu运行之前先启动桥接网络,在本地ubuntu命令行终端执行以下命令(注意:ens33为ubuntu默认网卡):
sudo ifdown ens33
sudo ifup br0
QEMU MIPS虚拟机启动
进入前面下载的mips镜像目录,执行以下命令:
sudo qemu-system-mips -M malta -kernelvmlinux-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 -nettap
输入root/root便可登入qemu mips虚拟机,为了更便操作mips虚拟机,可在unbuntu中新开启一个终端,ssh连接到qemu mips:
固件模拟运行
从DLink官网下载包含漏洞版本的路由器固件:ftp://ftp2.dlink.com/PRODUCTS/DIR-859/DIR-859_REVA_FIRMWARE_v1.05B03.zip,使用binwalk -Me直接解压固件可得到文件系统文件:
固件模拟运行由两种方式可以考虑:① 将文件系统上传到qemu mips虚拟机中运行;② 借助firmadyne工具运行固件(当然也可以尝试使用AttifyOS VM):
① 使用scp命令将squashfs-root目录上传到qemu mips虚拟机:
chroot /root/squashfs-root sh
② 借助firmadyne工具运行固件
Firmadyne是一款自动化和可裁剪的嵌入式Linux系统固件分析框架,它支持系统固件逆向QEMU嵌入式系统模拟执行,使用其可模拟路由器固件、执行路由器。安装和使用方法详见https://github.com/firmadyne/firmadyne。注意:Firmadyne安装之前,先安装firmware-analysis-toolkit,安装方法详见https://github.com/attify/firmware-analysis-toolkit,安装完成之后在firmware-analysis-toolkit目录中创建firmadyne目录并下载安装Firmadyne。各自全部安装完成后如下所示(注意两个工具须完全按照步骤安装完成,否则后续固件运行会出错):
首先将firmware-analysis-toolkit目录下的fat.py和reset.py文件移动到firmadyne目录;接着进入firmadyne修改firmadyne.config设置路径如下:
将固件bin文件拷贝至firmadyne目录,继续执行以下命令:
rm -rf images*
python3 reset.py
sudo -u postgres createdb -O firmadyne firmware
sudo -u postgres psql -d firmware < ./database/schema
./sources/extractor/extractor.py -b Dlink -sql 127.0.0.1 -np-nk "DIR859Ax_FW105b03.bin" images
./scripts/getArch.sh ./images/1.tar.gz
./scripts/makeImage.sh 1
./scripts/inferNetwork.sh 1