物联网固件仿真环境的搭建

在做物联网设备分析的时候,我们可能需要在模拟环境中运行提取的固件, 本文主要基于firmware-analysis-toolkit搭建,最后使用Netgear的路由器固件进行测试。 firmware-analysis-toolkit是基于以下现有工具和项目构建的:

  • FIRMADYNE:FIRMADYNE是一个自动化的可扩展系统,用于对基于Linux的嵌入式固件执行仿真和动态分析。

  • Binwalk:是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具

  • Firmware-Mod-Kit:功能和binwalk工具的类似

  • MITMproxy

  • Firmwalker

系统: Ubuntu14.04

笔者在使用kali以及Ubuntu 16都会存在各种奇葩问题,后来看到GitHub中指明使用14.04

0x00 递归克隆存储库并安装依赖

递归克隆Firmware Analysis Toolkit存储库并安装依赖

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/attify/firmware-analysis-toolkit.git

克隆firmware-analysis-toolkit仓库

cd firmware-analysis-toolkit/binwalk

sudo ./deps.sh

sudo python setup.py install

安装依赖及binwalk

sudo -H pip install git+https://github.com/ahupp/python-magic

sudo -H pip install git+https://github.com/sviehb/jefferson

如果你是使用的python2,还需要安装以上库

测试是否安装成功:

firmadyne@ubuntu:~/firmware-analysis-toolkit/binwalk$ binwalk


Binwalk v2.1.2-c036535

Craig Heffner, ReFirmLabs

https://github.com/ReFirmLabs/binwalk


Usage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...


Disassembly Scan Options:

-Y, --disasm Identify the CPU architecture of a file using the capstone disassembler


... ...

-s, --status=<int> Enable the status server on the specified port

进入Firmadyne目录,然后打开firmadyne.config,修改 FIRMWARE_DIR的路径为当前Firmadyne目录的绝对路径

0x01 安装Firmadyne

sh ./download.sh

安装postgresql数据库

sudo apt-get install postgresql


# 用户的密码设置为:firmadyne

sudo -u postgres createuser -P firmadyne


sudo -u postgres createdb -O firmadyne firmware


# 注意这里的数据库文件是在firmadyne/目录下,也就是该命令要在根目录firmware-analysis-toolkit/目录下执行

sudo -u postgres psql -d firmware < ./firmadyne/database/schema

启动postgresql数据库,确认其正在运行。

sudo service postgresql start


sudo service postgresql status

0x02   安装Qemu

QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛。

sudo apt-get install qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils

将firmware-analysis-toolkit/目录下的fat.py和reset.py移动到firmadyne/目录下:

mv fat.py ./firmadyne

mv reset.py ./firmadyne

修改fat.py中的执行权限、firmadyne的路径firmadyne_path以及root密码root_pass

chmod +x fat.py

0x03 下载固件并运行

下载要模拟的固件WNAP320:

wget http://www.downloads.netgear.com/files/GDC/WNAP320/WNAP320%20Firmware%20Version%202.0.3.zip

我这里将固件重命名为 netgear.zip,并放在/home/ firmadyne/ firmware/ 目录下

firmadyne@ubuntu:~/firmware-analysis-toolkit/firmadyne$ ./fat.py


__ _

/ _| | |

| |_ __ _ | |_

| _| / _` | | __|

| | | (_| | | |_

|_| \__,_| \__|

Welcome to the Firmware Analysis Toolkit - v0.2

Offensive IoT Exploitation Training - http://offensiveiotexploitation.com

By Attify - https://attify.com | @attifyme

[?] Enter the name or absolute path of the firmware you want to analyse : /home/firmadyne/firmware/netgear.zip

[?] Enter the brand of the firmware : Netgear

[+] Now going to extract the firmware. Hold on..

[+] Firmware : /home/firmadyne/firmware/netgear.zip

[+] Brand : Netgear

本文参考链接如下:

https://paper.seebug.org/639/

https://www.freebuf.com/column/169425.html

https://blog.attify.com/getting-started-with-firmware-emulation/

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章