首页
论坛
课程
招聘
[自动化挖掘] [Fuzz] [Linux] [原创]用AFL++对ARM固件进行模糊测试
2021-4-17 12:12 1372

[自动化挖掘] [Fuzz] [Linux] [原创]用AFL++对ARM固件进行模糊测试

2021-4-17 12:12
1372

1、安装AFL++

参考 https://github.com/AFLplusplus/AFLplusplus

sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools
# try to install llvm 11 and install the distro default if that fails
sudo apt-get install -y lld-11 llvm-11 llvm-11-dev clang-11 || sudo apt-get install -y lld llvm llvm-dev clang 
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-dev
git clone https://github.com/AFLplusplus/AFLplusplus && cd AFLplusplus
cd AFLplusplus
make distrib
sudo make install


2、编译arm qemu,重新编译AFL++

sudo apt install qemu

# 进入AFL++下的qemu_mode
cd aflplusplus/AFLplusplus/qemu_mode/
export CPU_TARGET=arm
./build_qemu_support.sh

# 回到AFL++根目录,重新编译AFL++,如果不重新编译的话可能会影响afl-fuzz模式的执行
cd ..
make clean
make
sudo make install

3、准备arm固件的文件系统

https://github.com/AFLplusplus/AFLplusplus/files/5943851/squashfs-root.tar.gz


afl++的qemu mode目前还不支持MIPS,找了一个arm的,不过有点问题。


下载解压到home目录下

cd
cd squashfs-root
./bin/busybox

报错 /lib/ld-uClibc.so.0: No such file or directory

原因:没有设置QEMU_LD_PREFIX

export QEMU_LD_PREFIX=$PWD
./bin/busybox


报错 /lib/ld-uClibc.so.0: Invalid ELF image for this architecture

链接问题


原因:原文件的问题,链接文件的格式全错了,按下面的命令把所有文件分别链接。

以其中一个为例,如果全部链接完成,busybox就能顺利执行了。

cat ld-uClibc.so.0
rm ld-uClibc.so.0
ln -s ld-uClibc-0.9.33.3-git.so ld-uClibc.so.0cd


ls -l
../bin/busybox

链接全部完成,busybox就能正常执行了

# 回到squashfs-root目录下
cd ..
rm -rf fuzz_*

afl-fuzz -i inputs -o outtt -Q -- .binbusybox awk '{print$1}'


注意:

1、要是出现  Fork server handshake failed 或者 发现不了新路径,尝试重复第二步。

2、不要把squashfs-root安装在afl++目录下面,可能会出问题。


主要参考  https://github.com/AFLplusplus/AFLplusplus/issues/733



第五届安全开发者峰会(SDC 2021)议题征集正式开启!

最后于 2021-4-17 21:12 被wx_左撇子编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回