物联网设备固件模拟流程

Iot安全之漏洞挖掘。为了对智能设备进行渗透测试,固件模拟可以在没有设备的情况下对固件进行分析。


-
-
-


环境

  1. 操作系统:Ubuntu14.04.6,其他基于Debian的系统也可以。
  2. 安装Linux常用命令及软件
sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap python-psycopg2 python3-psycopg2 snmp uml-utilities util-linux vlan

工具安装

FIRMADYNE is an automated and scalable system for performing emulation and dynamic analysis of Linux-based embedded firmware. It includes the following components:

  • modified kernels (MIPS: v2.6.32, ARM: v4.1, v3.10) for instrumentation of firmware execution;
  • a userspace NVRAM library to emulate a hardware NVRAM peripheral;
  • an extractor to extract a filesystem and kernel from downloaded firmware;
  • a small console application to spawn an additional shell for debugging;
  • and a scraper to download firmware from 42+ different vendors.

Git上下载

$ git clone --recursive https://github.com/firmadyne/firmadyne.git

并下载所需的额外二进制文件

$ cd ./firmadyne
$ ./download.sh

安装其余依赖项

    1. sudo -H pip install git+https://github.com/ahupp/python-magic
    1. sudo -H pip install git+https://github.com/sviehb/jefferson
    1. sudo apt-get install qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
      设置firmadyne
      打开config文件,将firmadyne路径设置为正确路径
      image.png

  • 使用Extractor提取固件的文件系统(filesystem),Extractor依赖binwalk工具

Binwalk是一个固件分析工具,用于协助研究人员对固件进行分析,文件提取等。

    1. git clone https://github.com/devttys0/binwalk.git
    1. cd binwalk
    1. sudo python setup.py install

  • 安装配置数据库,注意数据库密码设为firmadyne
$ sudo apt-get install postgresql
$ sudo -u postgres createuser -P firmadyne, with password firmadyne
$ sudo -u postgres createdb -O firmadyne firmware
$ sudo -u postgres psql -d firmware < ./firmadyne/database/schema

模拟测试

  1. 下载你需要模拟的固件
wget http://www.downloads.netgear.com/files/GDC/WNAP320/WNAP320%20Firmware%20Version%202.0.3.zip
  1. 用extractor 提取filesystem
    ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "WNAP320 Firmware Version 2.0.3.zip" images

  2. 识别固件架构
    ./scripts/getArch.sh ./images/1.tar.gz
    可知为mips架构

    image.png

  3. 将固件系统内容存储到数据库的image表中
    ./scripts/tar2db.py -i 1 -f ./images/1.tar.gz

  4. 为固件创建qemu磁盘镜像
    sudo ./scripts/makeImage.sh 1

  5. 指定固件的网络配置
    ./scripts/inferNetwork.sh 1

    image.png

  6. 使用指定的网络配置模拟运行固件
    ./scratch/1/run.sh

    image.png

    系统运行成功,主机可以访问,日志记录到./scratch/1/qemu.final.serial.log
    image.png

接下里就可以使用snmp脚本探测固件信息,测试web接口;使用nmap扫描firmadyne虚拟环境运行的固件,使用nmap vuln脚本探测固件漏洞;并且使用msf对固件进行渗透等操作。

你可能感兴趣的:(物联网设备固件模拟流程)