Contents
  1. 1. 安装 binwalk
    1. 1.1. 方法一
    2. 1.2. 方法二(推荐)
  2. 2. 安装 jeb
  3. 3. 安装 QEMU
  4. 4. 安装 sasquatch
  5. 5. 安装 MIPS 交叉编译环境 buildroot
    1. 5.1. 添加PATH
    2. 5.2. 测试交叉编译环境 demo.c
  6. 6. MIPS 系统网络配置
    1. 6.1. 下载mips虚拟机
    2. 6.2. 法一
    3. 6.3. 法二(推荐)
    4. 6.4. 法三

网络上有很多安装教程,也看了《揭秘家用路由器 0day 漏洞挖掘技术》,但是由于版本等原因,与其他作者的安装还是略有不同,会遇到很多问题,以下参考我自己安装遇到的问题进行。

我的环境

1
2
ubuntu:16.04
内核:4

安装 binwalk

方法一

1
sudo apt-get install binwalk

方法二(推荐)

1
sudo git clone https://github.com/devttys0/binwalk.git

安装 jeb

https://www.pnfsoftware.com/jeb2/mips 下载试用版,但是不知道为啥我的下载速度很慢。
也可以使用吾爱破解的破解版 https://down.52pojie.cn/Tools/Android_Tools/JEB_3.0.0.201808031948_Pro.zip ,亲测内部可以进行复制粘贴。
需要安装java环境,可以参考:https://blog.csdn.net/lyhkmm/article/details/79524712 进行安装。

安装 QEMU

有两种方法,一种是直接下载,另一种是通过官网下载包,然后再安装。经过H4lo师傅的踩坑,2.4.0版本最好。
方法一:

1
sudo apt-get install qemu

我这样下载下来的是2.5.0版本,我决定先用一段时间…
方法二:

1
2
3
4
5
https://download.qemu.org/      # 自选版本进行下载

./configure
sudo make -j8 # -jx x=内核*2
sudo make install

安装 sasquatch

1
2
3
4
sudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev
git clone https://github.com/devttys0/sasquatch
cd sasquatch
./build.sh

使用sasquatch工具的时候,直接命令行输入 sasquatch加对应的参数就可以执行。

安装 MIPS 交叉编译环境 buildroot

这个我卸载安装了好几次..因为安装的版本编译会出错(我搜索没有找到较好的解决办法),使用会出现头文件找不到等等问题。推荐下面的版本

1
2
3
4
5
sudo apt-get install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev exuberant-ctags g++ texinfo patch vim libtool   //升级一下系统的包
wget http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
tar -jxvf buildroot-snapshot.tar.bz2
cd buildroot
make menuconfig


查看kernel版本:

1
uname -r

最后使用

1
make

进行编译

添加PATH

法一:将PATH添加到/etc/profile末尾,再source /etc/profile,网上很多都说有效…对我无效,只是暂时性的
法二:将PATH添加到~/.bashrc末尾,再source

1
export PATH="/home/kk/tools/buildroot/output/host/bin:$PATH"        # 填自己的编译器所在路径

测试交叉编译环境 demo.c

1
2
3
4
5
#include<stdio.h>
int main(){
puts("demo");
return 0;
}
1
2
3
4
5
kk@ubuntu:~/Desktop/iot$ mipsel-linux-gcc -static demo.c -o demo
kk@ubuntu:~/Desktop/iot$ ls
demo demo.c
kk@ubuntu:~/Desktop/iot$ file demo
demo: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, not stripped

LSB –> 小端序

MIPS 系统网络配置

下载mips虚拟机

https://people.debian.org/~aurel32/qemu/mips/ 自行选择大小端格式mips系统【mips大端机,mipsel小端机】

法一

1
2
sudo apt-get install uml-utilities bridge-utils         # 安装依赖文件
sudo vim /etc/network/interfaces # 修改主机配置

写入

1
2
3
4
5
6
7
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface br0 inet dhcp
bridge_ports eth0
bridge_maxwait 0

创建qemu网络接口启动脚本

1
sudo vim /etc/qemu-ifup

将原来内容注释,并写入

1
2
3
4
5
6
7
8
#!/bin/sh
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 2

更改qemu-ifup权限,重启使配置生效

1
2
sudo chmod 777 /etc/qemu-ifup
sudo /etc/init.d/networking restart

失败,在网上查询之后,找到了比较好的解决方法


网卡中并没有叫eth0的。
将上面两个文件中的eth0改为ens33,再次sudo /etc/init.d/networking restart,成功.

  • 我认为也可以将网卡名更改为eth0,不过我没有用这种方式,可以参考:https://blog.csdn.net/openbox2008/article/details/80051259 我觉得有些麻烦
    执行:
    1
    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

登录

1
2
3
4
- Hostname:       debian-mips
- Root password: root
- User account: user
- User password: user

查看

eth0没有ip,手动设置ifconfig eth0 xxx.xx.xx.xx,mips虚拟机的ip要和主虚拟机ip在同一网段
很麻烦…我这还遇见这么多错误…

法二(推荐)

第二种方法,是直接使用tunctl命令来建立一个虚拟网卡,与模拟的 mips 虚拟机进行通信

1
2
3
sudo tunctl -t tap0 -u `whoami`  # 为了与 QEMU 虚拟机通信,添加一个虚拟网卡
sudo ifconfig tap0 10.10.10.1/24 # 为添加的虚拟网卡配置 IP 地址
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 # 开启mips虚拟机

在mips虚拟机中登录后执行

1
ifconfig eth0 10.10.10.2/24

可以互相ping通说明配置成功

法三

和方法二差不多,也可以参考这篇
https://wzt.ac.cn/2019/09/10/QEMU-networking/
最后如果在mips虚拟机中ifconfig没有分配ip,可以同方法一,与宿主机同一段分配一个ip即可,如:

1
ifconfig eth0 192.168.95.160

参考:
https://blog.csdn.net/QQ1084283172/article/details/68942660
https://xz.aliyun.com/t/3826#toc-2
https://xz.aliyun.com/t/6071#toc-2
https://blog.csdn.net/youyudehexie/article/details/7583657
https://xz.aliyun.com/t/462#toc-6
感谢BufSnake 知世