안녕하세요~ Messager 입니다. 오늘은~

<실전 악성코드와 멀웨어 분석> 책의 실습 문제 1-2 을 분석해보고자 합니다.

분석환경은 Windows XP / Vmware 9.0.3 build 입니다.

 

1. 바이러스 토탈에서 악성코드 여부 확인하기

분석하고자 하는 파일은 책에서 제공하는 실습용 악성코드 Lab01-02.exe 입니다.

19군데에서 악성코드라고 진단하였습니다.

 

 

   

2. 패킹되거나 난독화된 징후 찾기

먼저 PEView로 확인해보겠습니다... 패킹이 되어 있지 않다고 뜨네요.

근데.. EP Section에 UPX1은 뭘까요? PEVIEW로 구조를 살펴봐야겠습니다.

PEVIEW로 살펴보니 의심스러운게 한두군데가 아닙니다.

PE구조 끝마다 붙은 UPX0,1,2 등등이 더 의심스럽게 만듭니다. 파일의 가상크기와 실제크기를 확인해 보겠습니다.

 

Virtual Size는 4000인 반면에, 실제크기인 Size of Raw Data는 0 군요.. 패킹이 되어있는것 같습니다.

아무래도 PEID가 만능은 아닌 모양입니다.

UPX 툴을 이용하여 언패킹하였습니다.

 

3. 임포트를 보고 악성코드의 기능 알아내기

Dependency Walker으로 파일을 분석한 결과 총 4개의 DLL을 임포트 하고 있습니다.

KERNEL32.DLL, MSVCRT는 프로그램들이 흔하게 사용하는 DLL이지만

ADVAPI32.DLL, WINNET.DLL은 살펴볼 필요가 있겠습니다.

(물론 실습 1-1에서 KERNERL32.DLL의 CreateFileA, FindFirstFIleA, FindNextFileA 함수들이 악성행위를 하는데

사용됐으니 모든 DLL 파일을 의심의 눈초리로 봐야겠습니다..방심은 금물!)

 

의심스러운 API들은 아래와 같습니다.

KERNEL32.DLL : GetMoudleFileNameA, CreateThread (다른 API들과 사용될 경우 후킹, 인젝션등에 사용될 가능성)

ADVAPI32.DLL : CreateServiceA (윈도우 서비스 생성 - 보이지 않지만, 윈도우 부팅시 항상 실행되는 프로그램)

WINNET.DLL : InternetOpenA, InternetOpenUrlA(Open함수로 세션 생성, Url함수로 특정 URL로 접속할 가능성)

 

  

   

 

4. 감염된 시스템에서 악성코드를 인식하는데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는지

임포트 함수 분석 시 가장 의심스러웠던 CreateService, InternetOpenA, InternetOpenUrlA 위주로

올리디버그를 이용한 분석에 들어갑니다.

올리디버그의 [우클릭 - Search for - All(Found)l intermodular calls] 기능을 이용하여 해당 API들을 추적합니다. 

7번째쯤 CreateServiceA API가 보이고, 13번째쯤 InternetOpenA API가 보입니다. 

CreateServiceA 부터 더블클릭하여 살펴봅니다.

Malservice란 서비스 이름과 SERVICE_AUTO_START 인자가 눈길을 끕니다.

SERVICE_AUTO_START의 경우 시스템이 시작될 때 자동으로 실행되는 옵션입니다.

그 다음으로 InternetOpenA API를 추적합니다.

InternetOpen API를 통하여 Internet Explorer 8.0 으로 세션을 연결한뒤

바로 뒷부분에서 InternetOpenUrlA API를 통해 ASCII코드로 저장해 두었던

특정 URL로(http://www.malwareanalysis....) 접속을 하는군요.

 

 

posted by Red_Message