FirmFuzz安装教程

一、FirmFuzz简介

FirmFuzz是基于Linux的固件模糊测试方法,创新点在于通过Web端进行模糊测试。官方关于FirmFuzz的安装教程较为粗略,因此本文在此给出较为详细的安装步骤。
开源仓库链接:https://github.com/HexHive/FirmFuzz

二、环境

Ubuntu 16.04(论文中的实验环境,推荐此)
Python3.7、Python2.7

三、安装过程

根据github中README中的指示,主要分为“Setup instructions”和“Run instructions”两部分

3.1 启动

  1. 克隆FirmFuzz
sudo git clone https://github.com/HexHive/FirmFuzz.git
  1. 安装依赖库(可能这里列举的不全,根据提示安装即可)
sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap python-psycopg2 python3-psycopg2 snmp uml-utilities util-linux vlan
  1. 编译
    进入到FirmFuzz根目录,运行setup.py
sudo ./setup.py
  1. 修改路径
    (1)修改./framework/scripts/env_var.config下的TEST_PATH路径,值为你的系统变量PATH
    (2)修改cleanup_fs.sh中的ROOT_DIR指向你的FirmFuzz根目录

3.2 运行

在官方的说明中,这部分是包含三个步骤的:文件系统提取、固件仿真、模糊测试

3.2.1 文件系统提取

文件系统这里使用到的是firmadyne,其实与Firm-AFL中的文件系统提取是一样的,下面给出步骤

  1. 克隆firmadyne
sudo git clone --recursive https://github.com/firmadyne/firmadyne.git
  1. 回退一下firmadyne的版本,新版本有问题,我是回退后解决了该问题(给出我回退的版本,仅供参考)
git log
git reset 74a99a5715a7602e0cc3950fa2759bf7dac56ac2
  1. 安装binwalk
    需要注意的是deps.sh脚本中的好多链接都失效了,需要注意修改,并确定是否各个模块成功安装
sudo git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo ./deps.sh
sudo python ./setup.py install
For Python 2.x, sudo apt-get install python-lzma
sudo -H pip install git+https://github.com/ahupp/python-magic
sudo -H pip install git+https://github.com/sviehb/jefferson
  1. 安装数据库
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. 进入firmadyne下载所需的文件
cd ./firmadyne
./download.sh
  1. 下载固件并提取固件文件系统
sudo wget http://www.downloads.netgear.com/files/GDC/WNAP320/WNAP320%20Firmware%20Version%202.0.3.zip
sudo ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "WNAP320 Firmware Version 2.0.3.zip" images

3.2.2 固件仿真

  1. 把上一步提取到的文件(.tgz类似结尾的)放到一个名为IMAGE_DIR的文件夹下,这个文件夹名可以是随意的
  2. 运行脚本
sudo ./run_batch_fs.sh IMAGE_DIR

如果说成功提取了,将会在final文件夹下生成一个scratch_ffs的文件夹
3. 进入scratch_ffs文件夹下,进入对应的固件镜像编号下,运行run.sh启动仿真

sudo ./run.sh

3.2.3 模糊测试(Fuzzing)

  1. 先安装一些依赖
sudo apt-get install python-pip python-dev 
libffi-dev libssl-dev libxml2-dev 
libxslt1-dev libjpeg8-dev zlib1g-dev g++

sudo pip install "mitmproxy==0.18.2"
sudo pip install "numpy"
sudo pip install "selenium==3.4.3"
  1. 运行模糊测试
  • 启动selenium
java -jar selenium-server-standalone-3.4.0.jar
  • 启动仿真
sudo ./run.sh
  • 启动代理(-R参数是仿真启动后运行的地址)
sudo mitmdump -R http://192.168.10.1 -s proxylogger.py
  • 运行模糊测试(检测CI漏洞)
sudo python fuzzer.py -d ~/location/of/emulated/firmware/ -u http://0.0.0.0:8080 -v 1 -a 1

3.2.4 运行截图

最后贴一张图
在这里插入图片描述

问题汇总

升级Python3.5 到Python3.7

sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-  dev libdb-dev libpcap-dev xz-utils libexpat1-dev
sudo apt-get install liblzma-dev libffi-dev libc6-dev
wget 'https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz'
tar zxvf Python-3.7.3.tgz                                  #解压源码
cd Python-3.7.3                                               #进入到解压文件
sudo mkdir -p /usr/local/python3                     #新建Python3.7的工作目录
./configure --prefix=/usr/local/python3  --enable-optimizations          #配置
make                                                                       #编译
sudo make install                                                     #安装
cd /usr/bin          #进到python可执行目录
ll -a|grep python3    #查看python3的版本
ll -a|grep pip3    #查看pip3的版本
sudo rm -rf /usr/bin/python3
sudo rm -rf /usr/bin/pip3
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
Python3 -V
Pip3 -V

安装过程中会遇到各种未知错误,仔细确认之前的步骤是否出错
(随记2024.7.17)

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值