지난번 글에서 Carnegie Mellon CERT - BFF (Basic Fuzzing Framework)를 소개하였다. 이를 직접 따라서 실습해보려하니, 친절하지 않은 설명 덕분에 ^^;; 살짝 삽질을 했다. 관련 과정을 정리해본다.

Github에는 certfuzz라는 이름의 프로젝트로 구성되어 있는데 이것이 아마 2.8 Version 인 것 같다. 하지만 다운로드 페이지 http://www.cert.org/download/bff/ 에 접속하면 위와같은 항목들이 있다. 여기에는 2.7 Version이 최신인 것으로 나오고 있다. 가상머신(VM)형태로 배포되는 것이 편리할 것 같아서 이 버전으로 시도해본다.


우선 주의해야 할 점은 UbuFuzz64.zip 뿐만 아니라 BFF-2.7도 별도로 설치해야 한다는 점이다. 즉, 가상머신은 테스팅을 수행할 환경을 구축하는 것이고 거기에는 Fuzzer가 설치되어 있지 않다. Fuzzer는 호스트 컴퓨터에 설치한 후 공유 폴더(Shared Folder) 기능을 통해 가상머신 내부에서 호스트의 Fuzzer 프로그램을 구동하는 방식이었다. 이 과정이 자세히 설명되어있지 않아서 잠시 혼동했었다;;


VMX는 기본적으로 Windows의 VMware Workstation에서 사용되는 확장자인데, Mac의 VMware Fusion 에서도 인식이 잘 된다. 여기에서는 Mac의 VMware Fusion 기준으로 따라해본다.(Windows VMware에서도 잘 되는 것 확인)


UbuFuzz64.zip을 다운받아 압축을 풀면 아래와 같이 파일이 들어 있다.

VMware Fusion의 상단 메뉴에서 File - Open을 선택하고 다운로드한 UbuFuzz64.vmx를 선택한다.

부팅을 시도하면 Ubuntu 12.04가 로딩된다.

부팅이 완료되면 아래와 같은 검은 배경에 터미널 윈도우가 실행되어 있다.


뭔가 있어보이긴하지만, 자세히 보면 실행이 제대로 된게 아니라 멈춰있다. 아까 다운로드 페이지로 되돌아 가서, 이번에는 BFF-2.7.zip 을 다운로드 한다. 압축을 풀면 아래와 같은 파일들이 들어있다.

윈도우의 경우 해당 폴더를 C:\fuzz 에 저장하면 되고, Mac 의 경우에도 원하는 위치에 적절히 저장한다. 또한, Mac용 설치파일인 BFF-2.7.dmg가 제공되는데 이걸로 설치하면 기본 경로가 /Users/계정명/bff 로 지정될 것이다.

이제 VMware에서 상단 Virtual Machine 메뉴의 Settings를 선택하고, Sharing 항목에 들어간다.

들어가보면 fuzz라는 이름으로 C:\fuzz 경로가 디폴트로 저장되어 있는데, 이것은 윈도우 기준이다. 만약 맥이라면 아래와 같이 설정을 바꾼다(기존 것은 삭제하고 새로 등록해야 함). 그리고 Enable Shared Folders에 체크하면 된다.

이제 재부팅을 하면 아래와 같이 퍼징 프레임워크가 자동으로 작동된다.

이 퍼징 프레임워크 VM은 이미 퍼징에 취약함이 입증된 내부 애플리케이션을 타겟으로 하는 것이기 때문에 결과물을 쉽게 확인할 수 있도록 한 예제라고 생각하면 된다. 좌측 상단에서 퍼징 작업이 계속 수행되고 있고, 만약 취약점을 발견하였거나 Error, Assertion 등의 상황이 발생하면 자동으로 해당 기록을 로그에 남겨두고, 다시 다른 퍼지 기법을 재수행하는 과정을 계속 반복한다. 


좌측 하단의 화면은 퍼징 프로세스의 PID를 알려주고 있으며 특이사항이 생길 경우 해당 PID를 참고하면 된다.

우측 하단에는 top 유틸리티가 실행되고 있는데, 현재 시스템에서 가동중인 프로세스들에 대한 모니터링을 위한 것이다. 

우측 상단에는 직접 타이핑하며 확인할 수 있는 쉘이 준비되어 있다. /bff/ 디렉토리를 살펴보면 result라는 곳이 있는데, fuzzer에 의한 crash 등을 확인할 수 있는 로그 파일들이 생성된다.

또한 bff.log 파일을 아래와 같이 모니터링하면 조금 더 효과적이다.


이제는 이러한 로그를 어떻게 효과적으로 분석할 수 있는지가 핵심이슈일 것이며 숙제로 남겨져있다. CERT/CC Blog에 아래와 같은 포스팅이 남겨져 있으니 참고.


CPUU님의 창작활동을 응원하고 싶으세요?