1. 论文参考(先敬大佬)
Yaowen Zheng, Ali Davanian, Heng Yin, Chengyu Song, Hongsong Zhu, Limin Sun“FIRM-AFL:通过增强过程仿真对物联网固件进行高吞吐量灰盒模糊测试”,USENIX 安全研讨会,2019 年。
源码:GitHub - zyw-200/FirmAFL: FIRM-AFL is the first high-throughput greybox fuzzer for IoT firmware.
2. 项目部署
2.1. 部署环境
ubuntu 16.04 (18.04碰壁了,摆烂!!!)
2.2. 导入源码
git clone https://github.com/zyw-200/FirmAFL
2.3. 编译QEMU和插件文件
需要基本的环境(gcc,pkg-config,zlib1g-dev libglib2.0-dev)
sudo apt install gcc pkg-config zlib1g-dev libglib2.0-dev python
sudo apt-get install autoconf automake libtool
sudo apt-get install libffi-dev
2.3.1. 用户模式编译
cd user_mode/
./configure --target-list=mipsel-linux-user,mips-linux-user,arm-linux-user --static --disable-werror
make
2.3.2. 系统模式编译
注意:需要先编译/sleuthkit和pixmax包,不然无法通过(3h)
sudo apt-get install binutils-dev libtsk-dev libboost-dev
cd qemu_mode/DECAF_qemu_2.10/
./configure --target-list=mipsel-softmmu,mips-softmmu,arm-softmmu --disable-werror
make
2.3.2.1. 编译问题
解决方法:
进入pixman目录,然后重新编译
./configure
make
此时会出现sleuthkit问题
cd /home/gjj/FirmAFL/qemu_mode/DECAF_qemu_2.10/shared/sleuthkit/
./configure
make
2.4. 导入Firmadyne
2.4.1. 安装firmadyne的部署流程走一遍
所有的操作都是没有报错和状态即可
2.4.2. 修改位置(不同的位置)
2.4.2.1. 修改所有的路径变量地址
vi ./firmadyne/firmadyne.config
2.4.2.2. 将 scripts/makeImage.sh 替换为目录中修改firmadyne_modify脚本
2.4.2.3. 导入数据库
(如果已经导入了原始的schma,需要删除表格,重新导入sudo -u postgres dropdb firmware,sudo -u postgres createdb -O firmadyne firmware)
sudo -u postgres psql -d firmware < ./firmadyne/database/data
AFL,QEMU,py,Frim,sh,复现,firmadyne,9050,qemu From: https://blog.csdn.net/gromatic/article/details/142827168