많은 사람들이 reverse engneering을 위해 winDBG를 사용하고 있습니다.

이 중 프로그램의 위험도를 분류해주는 !exploitable이라는 도구를 소개합니다.

두 도구는 모두 MicroSoft사에서 제작된 도구입니다.


!exploitable는 프로그램에서 크래시가 발생한 경우, 현제 메모리상태나 레지스터 상태 등을 고려하여 위험도를 판단합니다.

이 정보는 크래시를 통해 취약점을 찾는 방법에 사용됩니다.


1. Fuzzer를 이용하여 크래시가 날만한 입력파일을 생성한다.

2. 발생한 크래시가 위험한지 !exploitable로 검사한다.

3. 취약하다고 판단된 크래시를 분석해 원인을 찾고, exploit이 가능한지 판단한다

4. exploit 을 만든다.


이 중 2번에 해당하는 내용인 !exploitable 사용법에 대해 다루도록 하겠습니다.

( 1,3,4 모두 상당한 전문적인 지식이 필요합니다. )




사용법 (Windows 7 , i7-4790K , 16G DDR3 RAM)


1. 파일을 다운로드합니다.

2. winDBG 설치 장소인 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\winext 경로에

  !exploitable plugin인 msec.dll 을 넣습니다.


3. 크래시가 발생하는 입력파일을 준비합니다. ( fuzzer 등을 활용)

4. winDBG로 입력파일을 실행하고 크래시를 확인합니다.


5. 아래 명령어로 !exploitable을 실행합니다,

!load msec               - 플러그인을 로드합니다.

!exploitable              - 플러그인을 실행합니다.



위험도는 총 4가지로 분류됩니다.

exploitable

probably exploitable

probably not exploitable

not exploitable


위 스샷에서는 probably exploitable로 분류되었습니다.



'Programming > Program Analysis' 카테고리의 다른 글

BinNavi 바이너리 분석도구  (0) 2016.11.03

BinNavi 는 zynamics에서 만든 바이너리 분석 도구이다.


주 목적은 disassembled code에서 취약점을 찾기위해 reverse engineering을 하는 것이다.


장점으로는 REIL 중간언어를 사용하여 x86, ARM, MIPS, PowerPC  형태로 되어있는 다양한 바이너리를 분석 할 수 있다는 점



사용법 


Binnavi 5.x 는 유료로 라이센스를 구입해야 했지만 2015년 8월경 부터 소스를 공개하였다. 

Git : https://github.com/google/binnavi


자세한 설치법 또한 Git에 나와 있다.


TIP : 

대부분 java로 구현되어 있으며 jdk를 설치해야 한다. 


IDA pro(유료)로 dissassemble정보, 함수정보 등이 들어있는 .idb 파일이 필요하다.


DB로 postgreSQL을 사용한다. - (다운로드는 아래 공식 홈페이지에서 받을 수 있다)

http://www.enterprisedb.com/products-services-training/pgdownload#windows




BinNavi graph window


zynamics는 2011년 구글이 인수하였다.


plug-in 으로 위에 나온 Basic Block과 assembly code 등을 활용할 수 있다.

이를 통해 다양한 코드분석을 할 수 있다.







+ Recent posts