MIPS调试环境搭建

在师傅们的推荐下,看了点《揭秘家用路由器0day漏洞挖掘技术》的内容,此篇总结调试环境的搭建过程以及搭建过程中遇到的问题。

环境搭建

  • MIPS交叉编译环境
  • binwalk、sasquatch
  • QEMU
  • QEMU模拟运行MIPS相关配置

MIPS交叉编译环境

在这里我们使用了buildroot工具,Buildroot 是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。

sudo apt-get install libncurses5-dev patch libncurs*
wget https://buildroot.org/downloads/buildroot-2020.05.tar.bz2
tar -jxvf buildroot-2020.05.tar.bz2
cd buildroot/
make clean
make menuconfig
sudo make

make menuconfig的界面,根据揭秘家用路由器0day漏洞挖掘技术书中描述的参数进行配置文件的更改。

  1. Target Architecture改为MIPS(little endian)
  2. ToolchainKernel Headers改为主机Linux的版本

然后就是漫长的等待,经过几十分钟到一个小时,编译完成。在output中的就是编译出来的文件,在buildroot/output/host/usr/bin可以找到生成的交叉编译工具。

binwalk、sasquatch

binwalk

sudo apt-get install binwalk

sasquatch

sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev
sudo git clone https://github.com/devttys0/sasquatch
cd sasquatch & sudo ./build.sh

QEMU

sudo apt-get install qemu binfmt-support qemu-user-static

QEMU模拟运行MIPS相关配置

网络配置

配置本地网卡

sudo vim /etc/network/interfaces

写入

auto lo
iface lo inet loopback
auto ens33
iface ens33 inet manual
up ifconfig ens33 0.0.0.0 up
auto br0
iface br0 inet dhcp
bridge_ports ens33
bridge_stp off
bridge_maxwait 1

配置 qemu 虚拟机的网卡

echo "Executing /etc/qemu-ifup"
echo "bridge networking"
echo "Bringing up $1 for bridge mode"
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0"
sudo /sbin/brctl addif br0 $1
sleep 3

开启br0网卡,并重启网卡配置

sudo ifup br0
sudo /etc/init.d/networking restart

配置MIPS虚拟机

镜像网站: 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 -net tap -nographic

在虚拟机中查看网卡,如果无法连接主机,查看网卡名字,网络接口如果为eth1,则将/etc/network/interfaces 文件中的eth0改为eth1。
可以通过scpsquashfs传到MIPS虚拟机中。