훈훈훈

디지털 포렌식 : : Volatility 도구를 이용한 메모리 분석 본문

정보보안/디지털포렌식

디지털 포렌식 : : Volatility 도구를 이용한 메모리 분석

훈훈훈 2018. 11. 16. 01:24


1. Volatility 소개

 Volatility 는 오픈 소스 기반으로 CLI 인터페이스를 제공하는 메모리 분석 도구이다.

비슷한 기능을 제공하는 도구로는 구글에서 제작한 ReKall, 멘디언트에서 제작한 Redline 등이 있다.


2. Volatility 플러그인 

 이번 분석에서 사용할 Volatility 플러그인 외 몇 가지 플러그인을 추가로 기능들을 정리했다.

- pstree  :  프로세스를 트리구조로 출력

- pslist  : 프로세스 리스트 출력, 리스트 워킹 (가상 주소)

- psscan  : 프로세스 리스트 출력, 패턴 매칭 (물리적 주소)

- psxview   :  프로세스 은닉을 탐지하기 위해 다양한 방식으로 프로세스 등을 조회

- procdump  :  프로세스 실행파일 추출

- memdump  :  프로세스가 사용한 전체 메모리영역 덤프

- filescan  :  메모리상의 파일 오브젝트 전체검색(패턴 매칭)  

- hivelist  :  메모리상의 파일

- cmdscan  :  cmd에서 실행한 명령어 확인

- cmdline  :  cmd에서 실행한 명령어 이력 확인

- netscan  :  네트워크 연결 등 확인


이외에 다른 플러그인 기능에 대한 설명은 밑에 주소에서 확인할 수 있다.

https://github.com/volatilityfoundation/volatility/wiki/Command-Reference


3. 메모리 분석 

 1) 분석 환경

   Windows 7 64bit 가상환경

 2) 분석 도구

  - Volatility 

    다운로드 링크 : https://www.volatilityfoundation.org/26

  - HxD

    다운로드 링크 : https://mh-nexus.de/en/hxd/

  - HashCalc 

    다운로드 링크 : https://download.cnet.com/HashCalc/3000-2250_4-10130770.html

 3) 분석 대상

   K-shield Jr 강의에서 제공된 RAT 에 감염된 시스템을 이미지한 파일을 사용했다.

 4) 분석 과정


[분석과정 - 1]

"volatility.exe -f RAT_MEM.raw imageinfo" 명령을 실행하면 해당 파일에 대한 정보가 출력된다.

이 다음 명령을 실행할때 "profile"에 대한 정보를 입력해야한다. 따라서 피해자 시스템 운영체제인는 Windows7 SP1 64bit 이므로

명령을 실행할때 "--profile=Win7SP1x64" 를 입력하자.


[분석과정 - 2]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 pstree" 명령을 실행하여 분석대상 시스템의 프로세스 트리를 살펴보자.

명령이 실행되면 위 그림과 같이 프로세스 트리르 출력되는 것을 확인할 수 있다.

이제 이 수 많은 프로세스 중에서 악성으로 의심되는 프로세스를 찾아보자.


[분석과정 - 3]

위 그림에서 빨간박스 체크된 부분을 살펴보자. cmd의 PID 는 3720 이고 PPID 는 864를 가지고 있다.

하지만 밑에 msdcsc.exe를 살펴보면 PID 는 864이고 PPID 는 cmd 의 PID인 3720을 갖고 있다.

게다가 explorer.exe 와 iexplore.exe의 PPID 또한 864이다. 이 부분을 분석해보았을때 msdcsc.exe가 악성 파일임을 추측할 수 있다.


[분석과정 - 4]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 cmdscan" 명령을 실행하여 분석대상 시스템에서 cmd에서 실행한 명령들을 

확인해보았다. 명령 실행 결과 cmd에서 실행된 명령어를 찾을 수 없었다.


[분석과정 - 5]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 netscan | findstr "msdcsc" 명령을 실행하여 msdcsc.exe 파일의 네트워크 연결 정보를 확인해보았다. 명령 실행 결과 의심스러운 IP와 네트워크 통신하는 것을 확인할 수 있다.


[분석과정 - 7]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 procdump -p 864 -D ./" 명령을 실행하여 

피해자 시스템의 PID 864(msdcsc.exe) 에 대해서 덤프파일을 생성한다. 명령이 실행이되면 해당 경로에 executable.864.exe 파일이 

생성되어 있다. 

만약 분석 PC 에 안티바이러스 프로그램이 동작하고 있다면 executable.864.exe 파일이 생성되자마자 삭제될 수 있다. 

따라서 실습을 할때 안티바이러스 프로그램을 종료하거나 검역소로 가서 복구를 하자.


[분석과정 - 8]

이제 HashCalc 툴을 이용하여 executable.864.exe 파일의 해쉬 값을 추출하여 바이러스토탈에 업로드 해보자.

필자는 MD5 값을 이용하였다.


[분석과정 - 9]

바이러스토탈 검색 결과 58/66 의 탐지 비율을 보았을때 악성 파일임을 알 수 있다. 

결과 부분을 살펴보면 Backdoor, Trojan, Keylogger 등의 악성 코드 기능들을 확인할 수 있다.


[분석과정 - 9]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 memdump -p 864 -D ./" 명령을 실행하여 메모리 덤프를 파일을 생성하자.

명령이 실행이 완료되면 864.dmp 파일을 확인할 수 있다.


[분석과정 - 10]

HxD 를 이용하여 864.dmp 파일의 문자열들을 확인해보자.

"net user"로 검색했을때 user name : bdr , password : 123 인 계정이 생성된 것을 알 수 있다. 

따라서 이 계정은 백도어 계정으로 추측할 수 있다.


[분석과정 - 11]

백도어 계정 정보를 획득 후 문자열들을 자세히 살펴본 결과 "dclogs" 라는 로그 파일이 있는 것을 알 수 있다.

이제 이 로그 파일에 대해 한번 살펴보자.


[분석과정 - 12]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 filescan | findstr "dclog" " 명령을 실행하자.

실행 결과 해당 파일에 대한 정보를 수집할 수 있다.


[분석과정 - 13]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 hivelist" 명령을 실행하여 각 하이브들의 오프셋을 확인하자.

출력된 하이브 중 "\??\C:\Users\User\ntuser.dat" 파일의 레지스트리 정보를 확인해보자.

ntuser.dat 은 사용자별 설정 정보를 확인할 수 있는 파일이다.


[분석과정 - 14]

"volatility.exe -f RAT_MEM.raw --profile=Win7SP1x64 printkey -o 0xfffff8a0018a2010 -K “Software\Microsoft\Windows\

CurrentVersion\Run" 명령 실행 결과 해당 파일의 레지스트리 정보를 확인할 수 있다.

확인 결과 msdcsc.exe 파일은 자동 실행이 등록되었음을 알 수 있다.






Comments