VERA(Visualization of Executable for Reversing and Analysis)는 컴파일된 코드를 분석하기 위한 툴로 언패킹을 위한 유용한 정보를 제공한다.

[+] VERA 다운로드 및 설명법 : http://csr.lanl.gov/vera/

VERA는 Entropy(정확한 의미는 모르겠지만 system call, oriented graph 등을 의미한다고 한다.) 기반으로 packer, encryptor의 unpacked, decrypted code를 쉽게 식별할 수 있다.

   

VERA는 Intel PIN monitoring Framewark을 이용하여 응용 프로그램의 동작 상태를 추적하게 된다.

[+] Pin Tool Guide : http://www.pintool.org/docs/39599/Pin/html/

VERA를 설치하게 되면 설치 폴더에 pin.exe, pinvm.dll, taipin.dll, veratrace.dll 등의 파일이 생성되며, pin.exe 명령어를 이용하여 trace 파일을 생성해야 한다.

   

이 과정은 실제로 run-time에서 trace 파일이 생성되므로 가상환경에서 실행하는 것이 안전하며 명령어는 다음과 같다.

[+] trace 파일 생성 명령어 : pin.exe -t veratrace -- "file path"

위의 명령을 실행하고 나면 VERA 설치 폴더에 "[파일명]-[pid].trace" 파일이 생성되는 것을 확인할 수 있다.

(아직까지는 pin.exe는 32bit 환경에서만 지원되는 듯 하다.)

   

이제 생성된 trace 파일을 VERA를 이용하여 오픈한다. 파일을 오픈하는 과정에서 [그림 1]과 같이 원본 실행 파일의 위치와 GML 파일이 저장될 경로를 지정해 주어야 한다. VERA는 trace 파일의 내용을 읽어 GML 형태의 데이터로 해당 정보를 저장한다. GML 파일은 Geography Markup Language의 약자로 그래픽 데이터에 대해서 상호 교환 가능한 표준의 포멧을 만들기 위해서 XML Scheme 형태로 저장되는 데이터를 말한다,
[+] GML File Extension : http://www.fileinfo.com/extension/gml

[그림 1]

   

[그림 2]는 upx로 실행압축된 notepad.exe를 VERA를 이용하여 확인한 모습이다. 붉은 색으로 표시된 부분이 unpacking routine을 의미하며 각각의 색이 의미하는 바는 다음과 같다.

• Yellow – Normal uncompressed low-entropy section data

• Dark Green – DLL / API / Section not present

• Light Purple – SizeOfRawData = 0

• Dark Red – High Entropy

• Light Red – Instructions not in the packed exe

• Lime Green – Operands don't match

 

[그림 2]



빨간색으로 표시된 부분에서 밝은 보라색으로 전환되는 지점의 entropy 지점을 확대해 보면 unpacking routine이 끝나는 지점임을 유추해 볼 수 있다.

 

[그림 3]



IDA를 이용하여 실제 해당 지점을 확인해 보면 unpacking routine이 끝난 뒤 OEP로 jmp하는 지점임을 알 수 있다.

 

[그림 4]

VERA는 위와 같이 쉽게 언패킹을 할 수 있을 뿐만 아니라 VERA IDA plugin을 통해서 IDA와의 연동이 가능하다. VERA 설치 후 생성된 vera_ida.plw 파일을 IDA plugins 폴더에 복사한 뒤 vera_ida plugin을 로딩하면 VERA와의 연동이 가능하다.

 

[그림 5]

   

기본적으로는 2005 포트를 사용하며 [그림 6]과 같이 VERA의 IDA 모양의 아이콘을 클릭하여 피눈물(?)을 흘리는 모양으로 바뀌면 IDA와 연동이 가능하며, VERA에서 이동하고 싶은 entropy에서 마우스 오른쪽 버튼으로 더블클릭을 하면 IDA에서 해당 주소로 이동이 가능하다.

 

[그림 6]

   

아래 그림은 notepad를 ASPack으로 패킹한 뒤 VERA를 이용해 확인해 본 모습이다.

 

[그림 7]

   

VERA를 이용하면 해당 프로그램의 런타임 시의 흐름에 대해서 Visual 하게 확인이 가능하며, 언패킹을 위한 OEP 를 찾는 과정이 좀 더 수월할 수 있다.

신고
Posted by By. PHR34K