AFL은 Windows를 지원하지 않는다. 따라서 AFL을 fork 해서 Windows에서 AFL과 다른 instrumentation approach로 fuzzing이 가능하도록 WinAFL이 개발되었다.
Windows 10 64bit VM
WinAFL github에서 zip 파일 다운로드 후 압축해제하여 원하는 작업 경로에 위치시킨다.
cd winafl
mkdir build
cd build
cmake -G"Visual Studio 17 2022" -A Win32 .. -DDynamoRIO_DIR=C:\Users\johan\DynamoRIO-Windows-9.0.19174\DynamoRIO-Windows-9.0.19174\cmake
cmake --build . --config Release
target이 32bit인 경우 WinAFL build
cd winafl
mkdir build32
cd build32
cmake -G"Visual Studio 17 2022" -A Win64 .. -DDynamoRIO_DIR=C:\Users\johan\DynamoRIO-Windows-9.0.19174\DynamoRIO-Windows-9.0.19174\cmake
cmake --build . --config Release
-i dir test case가 있는 input directory
-o dir output directory
-t msec fuzzing 실행에 대한 timeout → -t 1000 이면 test case 당 timeout이 1초이고, 1초가 지나면 time out error 발생
-D dir dynamoRIO 바이너리 (drrun, drconfig)가 위치한 directory 경로
target function을 선택하고 application을 fuzz 하는 경우 WinAFL 통한 target 실행 과정
WinAFL의 fuzzing 대상은 target 내 특정 function이다. target function을 반복적으로 실행하며 퍼징을 진행한다.
이때 target function은 몇 가지 조건을 충족해야 WinAFL의 fuzzing 대상으로 사용할 수 있다.
WinAFL은 3가지 instrumentation mode를 지원한다.
[Fuzzing] WinAFL target function offset 자동으로 넣어주기 (0) | 2022.07.08 |
---|---|
[Fuzzing] WinAFL fuzzing HncAppShield (0) | 2022.07.08 |
[Fuzzing] AFL fuzzing dact (0) | 2022.06.28 |
[Fuzzing] AFL++ 설치 (0) | 2022.06.28 |
[Fuzzing] AFL 설치 (0) | 2022.06.28 |