徒然ネル

LinuxカーネルとかeBPFとか

AFL++動かしてみた

はじめに

AFL++ってファザーを動かしてみたので、動かした過程と結果のメモ

目次

参考

IPAのAFL資料 qiitaの記事:AFLでファジングやってみた

動かしてみた

準備

AFL++インストール

aptでAFL++をインストール

$ sudo apt update
$ sudo apt install afl++ afl++-clang afl++-doc

RAMディスク作成

$ mkdir -p /tmp/afl-ramdisk && chmod 777 /tmp/afl-ramdisk/
$ sudo mount -t tmpfs -o size=512M tmpfs /tmp/afl-ramdisk/
$ cd /tmp/afl-ramdisk/

テスト対象コード

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char** argv)
{
  char buf[8];

  if(read(0, buf, 8) < 1)
  {
     exit(1);
  }

  printf(buf);
  exit(0);
}

コンパイル

example.cをafl-gccでコンパイル

$ afl-gcc -o example example.c

ファジング

テストケースダウンロード

$ wget -O - https://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz | tar zxvf -

ファジングテスト実行

$ afl-fuzz -i afl-2.52b/testcases/others/text/ -o out/ ./example

afl++実行時の画面 IPAの資料にあるAFLの実行時の項表示項目の説明と項目名が多少違うが内容は同じだと思われる。 実行時のシステムモニターをみると、CPU1の実行が100%に貼り付いてる。