aflsmart小试

AFL-SMART 安装指南

AFL-SMART是一款结合Peach和AFL模式的模糊测试工具,科普下Peach和AFL两款工具

AFL是由美国谷歌公司安全研究人员开发的一款基于代码覆盖率的模糊测试工具,其核心部件是AFL-gcc 或 AFL-g++在编译器层面对代码进行插装,通过监控程序执行流程来实现对代码覆盖率的评估。AFL采用基于基于源码的插装模式进行模糊测试,在变异模块采用基于bit翻转、实现对crash结果的细节与动态跟踪,总而言之是一款优秀的灰盒测试工具

Peach是由美国Peach.tech公司开发的基于协议模糊测试工具,主要采用XML文件描述协议和文件格式

安装依赖

系统依赖安装

安装python、libtool、g++依赖包,基于ubuntu系统安装

1
sudo apt-get install build-essential automake libtool libc6-dev-i386 python-pip g++-multilib

如果在安装中出现python-pip版本问题:

1
2
3
4
5
6
7
8
9
10
The following information may help to resolve the situation:

The following packages have unmet dependencies:
python-pip : Depends: python-colorama but it is not going to be installed
Depends: python-distlib but it is not going to be installed
Depends: python-pip-whl (= 1.5.4-1ubuntu4) but 20.0.2-5ubuntu1.6 is to be installed
Depends: python-requests but it is not going to be installed
Recommends: python-dev-all (>= 2.6) but it is not installable
Recommends: python-wheel but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

(1)该问题是由于python-pip已经安装好,不需要再二次安装,直接在apt-get中去掉python-pip即可。

1
sudo apt-get install build-essential automake libtool libc6-dev-i386 g++-multilib

(2)安装支持C#的工具包;

1
sudo apt-get install mono-complete

(3)安装gcc和g++ 4.4版支持工具;

1
2
3
4
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt install gcc-4.4
sudo apt install g++-4.4

安装aflsmart文件

从github拉取工程文件,依次执行命令。

1
2
3
4
5
6
7
git clone https://github.com/aflsmart/aflsmart
cd aflsmart
make clean all
cd ..

export AFLSMART=$(pwd)/aflsmart
export WORKDIR=$(pwd)

安装peach文件

进入目录中,安装peach文件,修改部分cs文件,然后利用waf文件编译整个文件并安装。

1
2
3
4
5
6
7
cd $AFLSMART
wget https://sourceforge.net/projects/peachfuzz/files/Peach/3.0/peach-3.0.202-source.zip
unzip peach-3.0.202-source.zip
patch -p1 < peach-3.0.202.patch
cd peach-3.0.202-source
CC=gcc-4.4 CXX=g++-4.4 ./waf configure
CC=gcc-4.4 CXX=g++-4.4 ./waf install

设置系统环境变量

主要设置aflsmart运行目录、peach运行目录以及相关全局变量。

1
2
cd $AFLSMART
source $AFLSMART/setup_env.sh

详细使用方法

命令如下:

1
afl-fuzz -h -i in -o out -w peach -g <input model file> -x <dictionary file> <executable binary and its arguments> @@

  1. -h -i in :表示输入用in出入方法, -o out 表示使用标准输出方式
  2. -w peach 表示使用peach成成的目录,后跟的 -g <输入xml文件> ,-x表示输出字典文件、以及可执行文件名称、执行命令
  3. @@ 表示后台执行

测试实例

官方用法中只使用了wav测试作为例子使用

实例测试

官方例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(1)
root@vultr:~/aflsmart# sudo docker run -itd c26804edf98e /bin/bash
7d2ecfc25dab4d2b2c8915305c99ad5f8b0e9f848ccacf6ffb2ce031abe7c41c

docker exec -it c26804edf98e bash
docker exec –it bb244f620484 bash

(2)
root@vultr:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f81799889649 bb244f620484 "/bin/bash" 5 seconds ago Up 3 seconds pensive_spence




(3)
sudo docker attach f81799889649