본문 바로가기

study/악성코드분석&리버싱

기초 동적 분석에 필요한 도구

728x90

이전 포스팅까지는 정적 분석을 통해 악성코드를 보았습니다.

정적 분석하는 것을 아직 모르시는 분들은 이전 포스팅을 통해 알고 오시면 되겠습니다.

각 실습 예제 파일별로 여러가지의 분석도구들을 사용하였으니 참고하기시 바랍니다.

2020/04/16 - [study/Reversing] - 기초 정적 분석, lab01-01.exe, lab01-01.dll 분석하기

 

기초 정적 분석, lab01-01.exe, lab01-01.dll 분석하기

2020/04/16 - [study/Malicious code basic, Reversing] - 기초 정적 분석에 필요한 도구 기초 정적 분석에 필요한 도구 악성코드의 기능을 파악하기 위해서 코드나 프로그램의 구조를 분석해보아야 합니다. 하지..

hxxyxxn-1238.tistory.com


동적 분석이란, 악성코드를 실행한 후 수행하는 점검 과정입니다.

주로 난독화나 패킹이 되어있을 경우, 정적분석의 한계에 이르렀을 때, 악성코드가 실행되는 시점을 모니터링하거나 수행 이후의 시스템 변화를 모니터링해야하는 경우에 동적 분석을 사용합니다.

이를 통해 악성코드의 기능을 확인할 수 있습니다.

만약, 악성코드에 키로깅 기능이 있다면 키로거의 파일 위치 확인과 종류, 송신지 해독이 가능하겠습니다.

 

하지만 악성코드를 동적분석하는 것은 실제 코드가 실행되는 것이기 때문에 주의해야합니다. 

시스템과 네트워크를 망가뜨릴 수 있기 때문에 , 가상머신을 통해 동적분석을 진행해야합니다.

스냅샷 기능을 사용할 수 있는 버전의 가상머신으로 사용하시기 바랍니다.

 

악성코드를 위해 가상머신을 검색해보면 샌드박스라는 것이 결과값으로 뜨는 경우가 있습니다.

샌드박스는 악성코드, 의심 사이트에 대한 시뮬레이션 환경을 제공하는 가상머신입니다.

대표적으로는 GFI sandbox가 있는데요, 

 

샌드박스를 통해 볼 수 있는 것들은 다음과 같습니다.

[Analysis Summary section]: 정적 분석 정보와 상위 수준의 동적 분석 결과

[File Activity section]; 악성코드 실행결과 연관된 프로세스들의 오픈, 생성, 삭제된 파일 목록

[Created Mutexes section]; 악성코드가 생성한 뮤텍스(실행한 변화들)

[Registry Activity section]; 레지스트리 변경 사항

[Network Activity secion]; 악성코드가 설정한 리스닝 포트나 DNS 요청

[VirusTotal Result section]; virustotal 실행결과

 

언뜻 보면 이걸로 다 분석이 될 것 같고, 굳이 다른 거 찾아보지않아도 될거같지만,, 단점도 존재합니다.

1. 단순 실행만 지원하기 때문에 악성코드 명령어 옵션이 필요한 경우에는 실행되지 않을 수도 있습니다.

2. 악성코드 명령제어 패킷으로 생성되는 백도어는 실행되지 않습니다.

3. 악성코드가 대부분 다중 sleep()을 처리하는데, 이 다중 sleep()처리가 어렵습니다.

4. 악성코드가 샌드박스 자체를 탐지해서 실행하지 않는 경우도 존재합니다.

5. 악성코드가 dll이면 정상실행이 되지 않을 수도 있습니다.

6. 샌드박스 os가 악성코드를 실행하기도 합니다.

7. 악성코드의 행위는 제공하지 않음. 

이러한 ,, 이유로,, 저는 VirtualBox를 설치하고 Window XP에서 진행합니다.

 

#include <Windows.h>

void main() {
	MessageBoxA(NULL, "test", "test", 0);
	Sleep(300);
}

메시지 박스가 뜨는 간단한 코드의 실행파일을 분석해보겠습니다. 

 

1. Process Monitor- 프로세스 모니터

- 특정 레지스트리, 파일 시스템, 네트워크, 프로세서와 스레드 행위를 모니터링

- 대부분 FileMon+ RegMon과 함께 사용함. 

- 모든 시스템 호출 감시- 램을 이용해 이벤트를 수집하기 때문에 가상머신의 메모리가 다운될 수도 있음

- 특정시간 동안 모니터링 수행

필터 설정이 가능해서, 보고싶은 부분만 설정한 뒤 볼 수 있습니다. 

 

2. Process Explorer

- 현재 메모리상에 띄워져있는 프로세스중에서 프로세스의 디테일한 정보들 제공.

- 서비스(분홍색), 프로세스(파란색), 새로운 프로세스(녹색), 종료된 프로세스(빨강색)

해당 파일을 실행하는 동안에 사용되는 DLL목록들을 확인할 수 있습니다.

더블클릭을 하면 11개의 더 자세한 정보들을 보실 수 있습니다.

실행되는 경로, 폴더 등을 알 수 있습니다.

string정보들도 제공이 되고 있습니다.  우리가 사용한 API함수인 MESSAGEBOX도 볼 수 있습니다.

 

3. Dependency walker

- API함수들의 리스트를 볼 수도 있지만, process explorer에서 보이는 정보와 대조해서 보는 경우로도 사용할 수 있습니다.

4. Regshot

- 코드 실행 전후의 레지스트리 스냅샷을 찍어서 비교

파일 실행 전과 후를 1,2 스냅샷으로 찍고 compare합니다. 

비교한 결과를 이렇게 보실 수 있습니다. 


이제 메모장을 통해 다시 동적 분석을 해보겠습니다. 

1. ProcMon

메모장 필터를 해두고 실행해줍니다. createfile시에 쓰이는 notepad.exe에 접속하는 것을 확인할 수있습니다.

2. Process explorer

더블클릭하여 본 디테일부분입니다. 

3. depends

메모장에 쓰이는 dll들 입니다. 

 

728x90
반응형