AFL记录

写在前面

记录AFL的使用和代码阅读

AFL窗口

  • Process timing: Fuzzer运行时长、以及距离最近发现的路径、崩溃和挂起经过了多长时间。

  • Overall results:Fuzzer当前状态的概述。

  • Cycle progress:我们输入队列的距离。

  • Map coverage:目标二进制文件中的插桩代码所观察到覆盖范围的细节。

  • Stage progress:Fuzzer现在正在执行的文件变异策略、执行次数和执行速度。

  • Findings in depth:有关我们找到的执行路径,异常和挂起数量的信息。

  • Fuzzing strategy yields:关于突变策略产生的最新行为和结果的详细信息。

  • Path geometry:有关Fuzzer找到的执行路径的信息。

  • CPU load:CPU利用率

Preparation

afl-1

afl-1

Crash Classification

  • collection_dir is the directory of cleaned crashes.
  • crashes is the AFL output directory
    1
    afl-collect -d crashes.db -e gdb_script -r -rr ./crashes ./collection_dir -- ./src/upx.out @@

Use AddressSanitizer

1
2
3
export AFL_USE_ASAN=1
make clean all
./afl-fuzz -m none ...

Useful Paper

  • https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9251057
    • 基于locality特性进行变异:如果一个byte变异有效,那么对附近的byte变异也可能有效,可以多加一些关注
    • 在AFL陷入无效deterministic变异时,及时打断它
    • 识别测试例中的hotspot字段(如header中各字段),然后优先变异这些字段。

参考资料

文章目录
  1. 1. 写在前面
  2. 2. AFL窗口
  3. 3. Preparation
  4. 4. Crash Classification
  5. 5. Use AddressSanitizer
  6. 6. Useful Paper
  7. 7. 参考资料
|