#퍼징 #AFL-FUZZ #Win-AFL
리눅스에서는 AFL-FUZZ 를 사용했듯이 윈도우 환경에서도 Win-AFL 을 통해 퍼징을 진행할 수 있다.
GUI 바이너리에도 가능하고, 커스텀해서 퍼징도 가능한듯..? 하다.
무엇보다도 단순 AFL-FUZZ 보다 확장된 기능이 있는데, Syzygy 를 통한 정적 명령어 삽입, DynamoRIO 를 이용한 동적분석 시 명령어 삽입, 하드웨어 트레이싱 등등... 이 있다고 한다.
일단은 빌드 부터 해보기로! 매우 쉽다.
1. CMAKE 설치
Win-AFL 을 빌드하는데에는 CMAKE 가 필요하다. DynamoRIO 기능을 cmake 를 통해 넣어주는 부분에서 필요한 것 같다.
위 링크에 가서 자기한테 맞는 걸로 다운받으면 되겠다.
2. DynamoRIO 다운
DynamoRIO 는 동적 분석 시에 프로세스에 명령어를 주입해서 특정 행위를 하도록 할 수 있게하는 프레임워크이다. 이러한 성질을 이용해서 코드 커버리지 분석 시에 많이 사용되는 것 같다. (특정 코드 블럭에 로깅하는 명령어를 넣는다던지..?)
아무튼 DynamoRIO - Github DynamoRIO Github 의 Releases 탭에서 맞는 OS 의 DynamoRIO 를 받으면 된다. (cmake 폴더는 Windows 버전에만 들어있으니 유의)
3. Win-AFL 다운
Win-AFL 은 직접 빌드할거라서 Release 가 아닌 직접 소스코드를 clone 떠오면 된다.
여기까지 하면 준비는 완료 되었다.
4. 빌드하기
Visual Studio 를 설치하면 기본적으로 제공되는 개발자 쉘을 통해 빌드를 진행한다. 여기서 비트는 퍼징을 진행할 대상 바이너리의 비트에 따라 갈리게 되는데 저는 64 비트 대상으로 퍼징할거라 x64 bit shell 로 진행하겠습니다 ^^
일단은 쉘은 켜둔채로 냅두고
Win-AFL 폴더로 가서 이름 아무거나 좋으니까 빈 폴더를 만들어두자. 필자는 build64
로 정했다.
그리고 다시 VS 쉘로 돌아와서 cmake --help
명령어로 cmake build 시 사용할 수 있는 generator 를 살펴볼 수 있다.
여기서 본인의 Visual Studio 버전에 맞는 녀석을 기억해놓자.
그리고!! 아까 받아놓은 DynamoRIO 의 cmake 폴더 경로도 기억해두자.
마지막 단계만 남았다.
cmake -G"Visual Studio 15 2017 Win64" .. -DDynamoRIO_DIR=..\path\to\DynamoRIO\cmake -DINTELPT=1
cmake --build . --config Release
명령어 두개만 치면된다. Generator 와 DynamoRio 경로만 알아서 잘 바꿔주고 빌드하면 필자 기준으로는 \build64\bin\Release
에 afl-fuzz.exe 로 빌드가 잘 되어있을 것이다.
끝이다!
'<보안 study> > 시스템' 카테고리의 다른 글
[PoC] log4shell(CVE-2021-44228) (0) | 2021.12.12 |
---|---|
[CodeGate_OpenCTF] csurself (0) | 2019.03.29 |
RTL기법이란? (Return To Library) (0) | 2018.07.26 |
함수 프롤로그(prologue) 에필로그(epilogue) (0) | 2018.07.26 |
[linux]리눅스 명령어 (0) | 2018.07.24 |