实践1: AFL 使⽤用示例例
1. 安装 AFL
(1)下载 AFL lcamtuf.coredump.cx/afl/
(2)解压 AFL tar -xvf afl-latest.tgz
(3)进⼊入 AFL 所在⽬目录 cd afl-2.51b
(4)安装 AFL 命令 ~$ make; sudo make install
2. 安装待分析⽬目标软件
(1)⾸首先进⼊入下载⽬目标程序⽬目标 cd libexif-0.6.21
(2)编译安装⽬目标程序,此处编译命令如下:
~$ export AFL_USE_ASAN=1
~$ CC=afl-gcc CFLAGS="-fsanitize=address" CXX=afl-g++ CXXFLAGS="-fsanitize=address" ./configure --disable-shared
~$ make; make check
(3)测试是否安装成功 ./test/test-mnote
PS. 以libexif为例例介绍
PS. 安装成功后会在test⽬目录下有可执⾏行行程序 test-mnote 等
PS. 如有需要查看README或者INSTALL⽂文件查看安装说明
3. 使⽤用AFL对⽬目标进⾏行行模糊测试
(1)准备测试集,使⽤用输⼊入⽬目标程序的种⼦子⽂文件,放在 in ⽬目录下,该⽬目录⾃自⼰己创建和命名。
(2)测试⽬目标程序 afl-fuzz -i in -o out -m none ./test/test-mnote @@
(3)正确启动后会进⼊入运⾏行行界⾯面,显示运⾏行行过程数据。
4. 测试结果查看
(1) out ⽬目录下有执⾏行行过程中各种输出⽬目录
(2) out/crashes ⽬目录下是测试⽣生成的异常样本⽬目录,可以对其下⾯面的异常样本进⾏行行复现和分析。
(3) out/queue ⽬目录下是产⽣生新覆盖的测试样本,可以⽤用来进⾏行行同类⽬目标软件的测试。
5. 异常分析
5.1 安装 rr 调试器器
(1) rr 调试器器相关介绍和说明⻅见官⽹网http://rr-project.org/
(2) rr 安装
cd /tmp
wget https://github.com/mozilla/rr/releases/download/5.0.0/rr-5.0.0-Linux-$(uname -m).deb
sudo dpkg -i rr-5.0.0-Linux-$(uname -m).deb
5.2 使⽤用 rr 分析异常
(1)记录异常执⾏行行 rr record ./test/test-mnote crash_case
(2)复现分析 rr replay
(3)分析过程可以使⽤用 gdb 调试命令 b 、 n 、 s 、 c 、 bt 、 info b 、 disable b 、 ignore 、 watch 等,可以使⽤用 rc 逆向
执⾏行行等。
6 其他说明
(1)分析调试⼯工具不不限制 rr 还是 gdb ,都可以达到分析⽬目的,看个⼈人习惯。
(2)分析时⽬目标程序单独安装复现分析(⽅方便便分析),编译选项最好采⽤用 -O0
(3)Good Luck!