路由器破解初探之环境搭建

路由器破解初探之环境搭建

十一月 04, 2019

最近在学习iot安全,路由器的破解应该是入门点,而在路由器的漏洞挖掘过程中,环境搭建是一个坑点巨多的点,毕竟,贫穷使我选择仿真,本文记录一些我踩过的坑,希望能对想入坑的人提供一些帮助

环境搭建

注:我的安装环境是ubuntu 16.04(本来选择18.04的,结果18.04会有玄学问题2333

在linux下安装IDA

如何在ubuntu下安装IDA呢?
其实也不是很难,我这里直接采用wine模拟器来安装运行IDA

建议运行环境(ubuntu16.04,可支持IDA7.0,但是最好使用IDA6.8,可以使用更多的插件)

安装命令如下:

1
sudo apt-get install wine

安装wine后可以直接按安装IDA或者将物理机的IDA拉近虚拟机中即可
然后为了方便可以写一个启动脚本

1
2
#!bin/sh
wine pwd/idag.exe

当然,由于某些DLL文件的缺失可能会导致无法成功安装或启动,我们可以通过将本机的DLL文件放入IDA的根目录下来解决该问题,还有一些运行的报错可以通过错误信息来依次解决,因为原因可能有很多,这里就不再阐述

安装IDA的MIPS插件和脚本

  1. 下载插件

    1
    git clone https://github.com/devttys0/ida.git
  2. 复制脚本
    我们需要将plugins下的所有的python文件都复制到IDA的相同目录中,还需要把scripts也复制过去
    第一步的命令大概如下:

    1
    cp -r `find pwd/plugins -iname *.py` pwd/plugins/

ghidra

在反编译过程中,有时候IDA会有一些玄学问题,这里使用ghidra就可能会舒服很多,虽然爆出了很多后门,但是插件的数量以及在一些方面的优势还是不可小视的
下载地址

1
https://ghidra-sre.org/

这里也提供一个9.1版本的百度云链接吧,提取码:8upz

启动环境需要

1
2
3
4 GB RAM
1 GB storage (for installed Ghidra binaries)
Dual monitors strongly suggested

以及

1
Java 11 64-bit

binwalk

我们可以选择直接安装binwalk,但是这样安装的binwalk功能上可能会有些缺陷,有些固件会无法提取,因此这里采取下载源代码自己编译的方法来安装

  1. 直接安装方法

    1
    sudo apt-get install binwalk
  2. 下载源代码自己编译

    1
    2
    3
    4
    5
    6
    7
    8
    sudo apt-get install git build-essential autoconf
    sudo git clone https://github.com/devttys0/binwalk.git
    sudo apt-get install libqt4-opengl python-qt4 python-qt4-gl python-numpy python-scipy python-pip
    sudo pip install pyqtgraph
    sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev
    git clone https://github.com/devttys0/sasquatch
    cd sasquatch && sudo make && sudo make install
    sudo python setup.py install

sasquatch SquashFSt提取工具

1
sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev

qemu

和Binwalk相同,也有两种方法

  1. 直接安装一步到位

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sudo apt install libglib2.0-dev libgcrypt20-dev autoconf automake libtool 
    sudo apt-get install libglib2.0 libglib2.0-dev
    sudo apt install -y pkg-config
    sudo apt install -y libpixman-1-dev
    sudo apt install -y libfdt-dev
    sudo apt install libsdl2-dev
    sudo apt install libsnappy-dev
    sudo apt install libgtk-3-dev
    sudo apt install libjpeg-turbo8-dev
    sudo apt install libcurl4-openssl-dev
    sudo apt install libspice-server-dev
    sudo apt-get install qemu
  2. 自己编译

    1. git

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      git clone git://git.qqmu-project.org/qemu.git/qemu.git
      git submodule update --init pixman
      git submodule update --init dtc
      sudo apt install libglib2.0-dev libgcrypt20-dev autoconf automake libtool
      sudo apt-get install libglib2.0 libglib2.0-dev
      sudo apt install -y pkg-config
      sudo apt install -y libpixman-1-dev
      sudo apt install -y libfdt-dev
      sudo apt install libsdl2-dev
      sudo apt install libsnappy-dev
      sudo apt install libgtk-3-dev
      sudo apt install libjpeg-turbo8-dev
      sudo apt install libcurl4-openssl-dev
      sudo apt install libspice-server-dev
      sudo ./configure --static && sudo make -j8 && sudo make install

      注: 使用configure 使用static参数的时候,依赖可能会根据不同环境导致依赖缺失,可以根据报错来解决依赖问题
    2. wget
      可根据需求不同来选择不同的版本

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      sudo apt install libglib2.0-dev libgcrypt20-dev autoconf automake libtool 
      sudo apt-get install libglib2.0 libglib2.0-dev
      sudo apt install -y pkg-config
      sudo apt install -y libpixman-1-dev
      sudo apt install -y libfdt-dev
      sudo apt install libsdl2-dev
      sudo apt install libsnappy-dev
      sudo apt install libgtk-3-dev
      sudo apt install libjpeg-turbo8-dev
      sudo apt install libcurl4-openssl-dev
      sudo apt install libspice-server-dev
      sudo arm-softmmu
      wget https://download.qemu.org/qemu-4.1.0.tar.xz
      tar xvJf qemu-4.1.0.tar.xz
      cd qemu-4.1.0
      sudo ./configure --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --audio-drv-list=alsa,pa
      sudo make -j8
      sudo make install
  3. 这里也贴出官方的安装教程

    1. To download and build QEMU 4.1.0:

      1
      2
      3
      4
      5
      wget https://download.qemu.org/qemu-4.1.0.tar.xz
      tar xvJf qemu-4.1.0.tar.xz
      cd qemu-4.1.0
      ./configure
      make
    2. To download and build QEMU from git:

      1
      2
      3
      4
      5
      6
      git clone https://git.qemu.org/git/qemu.git
      cd qemu
      git submodule init
      git submodule update --recursive
      ./configure
      make
    3. Debian/Ubuntu:

      1
      apt-get install qemu

MIPS交叉编译环境

在x86平台上编译MIPS架构的应用程序,需要我们在Ubuntu下建立交叉编译环境,编译过程中,会下载一些依赖包,需要网络畅通,这里有一个点很难受,就是如果你的内核版本在选项中没有出现的时候,可能需要我们选择更高版本的内核版本

1
2
3
4
5
6
7
8
9
sudo apt-get install libncurses5-dev patch
sudo apt-get install libncurses-dev ncurses-devel
sudo apt-get install libncurs*
wget http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
tar -jxvf buildroot-snapshots.tar.bz2
cd buildroot/
make clean
make menuconfig
sudo make -j8

在make menuconfig那一步的时候,我们需要更改几个地方

  1. “Target Architecture”改为”MIPS(littke endian)
  2. “Target Architecture Variant”改成”mips32”
  3. “tool chains”->”Kernel Headers”改成机器环境的kernel版本,可使用uname -r查看
    本机内核版本,如果没有,可以选择4.4

笔者本机的内核版本是4.15,但是选项中没有4.15,因此我开始时选择了4.14,但是在编译过程中,4.14会在下载时报404,因此推荐选择4.4.x

然后sudo make -j8即可

注:这里需要保持网络联通,编译时间可能需要很久

firmadyne

一个非常简单的路由器运行环境,此环境下无法调试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap python-psycopg2 python3-psycopg2 snmp uml-utilities util-linux vlan
git clone --recursive https://github.com/firmadyne/firmadyne.git

之后要进入到文件夹内,修改firmadyne.config,将其中的

FIRMWARE_DIR=/home/vagrant/firmadyne/
修改为完整路径
然后可以执行安装
sudo ./download.sh
sudo -H pip install git+https://github.com/ahupp/python-magic
sudo -H pip install git+https://github.com/sviehb/jefferson
sudo apt-get install qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
sudo apt-get install postgresql
sudo -u postgres createuser -P firmadyne
sudo -u postgres createdb -O firmadyne firmware
sudo -u postgres psql -d firmware < ./firmadyne/database/schema

之后就可以利用这个模拟固件了

到此基本的环境就基本搭建完毕了,enjoy:)