2014년 3월 4일 화요일

볼라틸리티(Volatility)를 이용한 메모리 분석 사례

오늘 공유하는 자료는 2013년 하반기 대략 3개월 정도 연구 및 분석을 통해 작성한 자료 입니다. 최초에는 PPT 슬라이드 파일로 작성해서 공유를 했었는데, 2013년 12월 초 즈음에 회사 내부 기획 업무를 담당하시는 분께서 원고를 하나 써달라고 말씀을 하셔서, 슬라이드를 다시 원고로 작성한 글 입니다.

그래서, 슬라이드와 원고가 모두 존재하는 몇 개 않되는 외부 발표 자료인데 최초 제가 정한 제목은 "Memory forensics with volatility"였는데, 원고 담당자 분께서 적절하게 "볼라틸리티를 이용한 메모리 분석 사례"로 변경 해주셨습니다. 그리고 원고 분량 슬라이드는 70 페이지, A4로는 44 페이지 정도 되어서 아래와 같이 나누어서 보기 좋게 정리를 해주셨습니다.


블로그에 정리에는 슬라이드와 2개의 원고를 모두 합쳐셔, 블로그 글만 보셔도 전체를 보실 수 있게 꾸며 봤습니다.

슬라이드 목차는 아래와 같으며, 가급적이면 슬라이드 내용만 보시고도 따라 하실 수 있도록 쉽게 정리 했습니다.

01 Memory Forensics
02 Windows Memory
03 Windows Memory Dump and Analysis
04 What is Volatility
05 Installing Volatility on Windows and BackTrack
06 Memory analysis using Volatility
07 Case Study and Hands-on Lab
08 Conclusion



이런 슬라이드 내용을 정리한 원고가 아래와 같이 정리 했습니다.

+---------------

컴퓨터 포렌식과 침해 사고 대응

일반적으로 컴퓨터 포렌식 또는 디지털 포렌식(Digital Forensic)은 범죄 수사에서 적용되고 있는 과학적 증거 수집 및 분석기법의 일종으로, 각종 디지털 데이터 및 통화기록, 이메일 접속기록 등의 정보를 수집, 분석하여 DNAㆍ지문ㆍ핏자국 등 범행과 관련된 증거를 확보하는 수사기법을 의미한다.

최근 발생하는 APT(Advanced Persistent Threat)를 포함한 침해 사고에서 악성코드(Malware, Malicious Code)는 조직 내부의 중요 기밀 데이터를 유출하는 과정에서 핵심적인 역할을 하고 있다. 그러므로, 피해의 시작과 범위를 조사하고 분석하기 위한 목적으로 포렌식은 반드시 필요한 보안 기술로 인정받고 있다. 즉, 기업의 내부 네트워크에서 발생한 침해 사고가 어떠한 경로로 이루어졌고, 어떠한 악성코드에 의해, 어떠한 데이터가 외부로 유출하였는지를 조사 및 분석하는 과정을 타임라인(Timeline)에 기반해 파악하기 위해서는 컴퓨터 포렌식 기법들이 가장 적합하고 효율적이기 때문이다.

이러한 특징으로 인해 침해 사고 대응과 분석에 사용되는 컴퓨터 포렌식 기법을 멀웨어 포렌식(Malware Forensic)이라는 표현으로도 자주 사용하고 있다.

다양한 멀웨어 포렌식(Malware Forensic) 기법

앞서 언급한 바와 컴퓨터 포렌식 기법들 중에서 멀웨어 포렌식(Malware Forensic) 분야에서 언급되는 기법들을 관점이나 기준에 따라 여러 가지 형태로 나눌 수가 있지만, 기술적인 면을 기준으로 나누어 본다면 크게 5가지 정도로 나눌 수 있다.

첫 번째는 메모리 포렌식(Memory Forensic)으로 휘발성이 강하지만 고유의 독특한 정보가 많이 존재하는 물리적인 램(RAM)에 남아 있는 악성코드 감염과 관련된 다양한 흔적(파일 실행, 네트워크 접속 및 프로세스 정보 등)을 분석하는 기법이다.

두 번째로는 레지스트리 포렌식(Registry Forensic)이다. 일반적으로 대부분의 악성코드는 감염된 시스템이 재부팅을 하거나 시스템 사용자가 특정 행위를 수행했을 때 악성코드 자신이 실행되기 위해 윈도 시스템의 레지스트리에 새로운 키(Key)를 생성 및 변경한다. 이러한 악성코드의 특징에 기반해 레지스트리를 중심으로 분석이 이루어지는 기법이 레지스트리 포렌식이다.

세 번째는 인터넷 포렌식(Internet Forensic)이다. 인터넷 사용이 보편화 됨에 따라 이메일 클라이언트(E-Mail Client), 메신저(Instant Messanger) 그리고 웹 브라우저(Web Browser)와 같이 인터넷 활동과 관련된 애플리케이션(Applications)으로 인해 악성코드에 감염되는 사례가 다수를 차지하고 있다. 그러므로 인터넷 관련 애플리케이션의 행위와 흔적(Artifact) 분석을 통해 악성코드의 감염 경로와 감염 매개체를 파악할 수 있다.

네 번째로는 네트워크 포렌식(Network Forensic)이다. 현재 발생하는 대부분의 악성코드는 어떠한 방식으로든 인터넷에 존재하는 시스템과 네트워크 연결이 이루어짐으로써 네트워크 패킷(Packet)에 기반한 분석을 통해 감염 경로와 함께 감염 시스템을 추적하고 분류할 수 있다.

그리고 마지막 다섯 번째로는 파일 시스템 포렌식(File System Forensic, 또는 디스크 포렌식(Disk Forensic)이다. 파일 시스템 포렌식은 전통적인 컴퓨터 포렌식 분야에서 중요하게 언급하는 기법 중 하나로 악성코드 감염이 의심되는 시스템의 디스크 이미징(Disk Imaging)을 통해 생성한 디스크 복사본을 인케이스(EnCase)나 FTK(Forensic ToolKit)와 같은 파일 시스템 분석 소프트웨어를 이용해 디스크 전체를 분석하는 기법이다.

메모리 포렌식(Memory Forensic)의 필요성

멀웨어 포렌식의 여러 가지 기술적인 분류 중에서 메모리 포렌식은 앞서 언급한 바와 같이 여러 가지 포렌식 소프트웨어를 이용하여 물리적인 램을 분석하는 일련의 과정이다.

메모리 포렌식은 최근 몇 년 사이에 주목을 받고, 그에 따른 연구가 활발하게 이루어지고 있다. 그 이유는 컴퓨터 시스템은 구조적으로 중앙처리장치(CPU, Central Processing Unit)에 의해 연산이 이루어지는데, 여기서 어떠한 소프트웨어라도 메모리인 RAM에 그 데이터와 코드가 적재되어야만 중앙처리장치에서 연산이 가능하기 때문이다. 이러한 컴퓨터 시스템의 특성으로 인해 메모리에는 하드디스크와는 다른 소프트웨어 또는 파일이 실행되는 과정이나 실행되었던 특유의 정보가 존재한다.

일반적으로 메모리 포렌식 과정에서 획득할 수 있는 메모리 분석 정보는 크게 4가지 정도로 나눌 수 있다.

1) 프로세스(Process)와 쓰레드(Threads) 정보

프로그램이나 파일이 실행 중이거나 이미 종료되었지만 메모리에 남아 있는 정보 추출

2) 모듈(Modules)와 라이브러리(Libraries) 정보

프로그램이나 파일이 실행 중이거나 이미 종료된 프로세스 관련 모듈과 라이브러리 정보 추출

3) 실행된 파일과 소켓(Sockets) 정보

실행 중이거나 이미 종료된 파일에 대한 정보와 네트워크 연결을 위해 사용되었거나 사용중인 소켓 정보 추출

4) 다양한 데이터 구조 정보

메모리에만 존재하는 운영체제, 소프트웨어 및 파일과 관련된 다양한 데이터의 구조 정보 추출

이렇게 메모리 포렌식 기법을 통해 획득할 수 있는 정보의 특성으로 인해 메모리 포렌식은 침해 사고 대응과 분석 과정에서 악성코드의 감염과 관련된 여러 주요 데이터를 확인할 수가 있다.

32비트 윈도 운영체제 메모리 구조와 분석 대상

메모리 포렌식에 대해 조금 더 구체적으로 논의하기 전에 일반적인 컴퓨터 시스템 구조상에서 메모리 역할과 메모리 포렌식에서 분석 대상되는 부분에 대해 살펴보자.

일반적으로 32비트 윈도 운영체제에서는 특정 파일이 실행되기 위해 생성하는 모든 프로세스는 기본적으로 4GB의 가상 메모리(Virtual Memory)를 할당 받게 된다. 모든 프로세스가 할당 받게 되는 4GB 가상 메모리에는 아래 [그림 1]과 같이 2GB 크기의 유저 모드(User Mode)와 2GB 크기의 커널 모드(Kernel Mode)로 나누어 사용된다.


이렇게 윈도 운영체제로부터 4GB의 가상 메모리를 할당 받는 모든 프로세스는 개별적인 가상 주소(Virtual Address)를 가지고 있으며, 개별적인 가상 주소 영역에 포함된 코드들은 연산을 위해 다시 물리 메모리에 적재된다. 그러나, 윈도우 운영체제의 메모리 관리 구조는 물리적 크기 제한이 존재하는 램으로 인해 [그림 2]와 같이 주기적으로 가상 메모리의 내용을 하드 디스크에 존재하는 페이지 파일(Page File)로 이동하는 과정인 페이징(Paging)이 발생하는 형태를 가지고 있다.


이러한 구조를 가지고 있는 32비트 윈도 운영체제에서 메모리 포렌식의 분석 대상이 되는 곳은 [그림 2]에 표시되어 있는 바와 같이 물리적인 메모리 영역으로, 다양한 메모리 덤프(Memory Dump) 소프트웨어를 이용하여 해당 영역을 분석이 가능한 파일 형태로 생성한다.

그 외에도 특정 메모리 덤프 소프트웨어의 경우에는 페이징이 발생하는 페이지 파일 자체도 분석이 가능한 파일 형태로 추출해내기도 한다.

다양한 메모리 덤프 파일 생성 및 분석 소프트웨어

현재 인터넷과 시중에는 메모리 포렌식을 위해 다양한 형태의 메모리 덤프 소프트웨어와 이를 분석하기 위한 메모리 분석 소프트웨어가 존재한다. 각각의 소프트웨어는 공개용인지 상용으로 판매되는 소프트웨어 인지에 따라 기능적으로 조금씩 다른 특징이 있다.

여기에서는 일반적으로 많이 사용되는 공개용으로 알려진 소프트웨어를 중심으로 살펴보면 다음과 같다.

1) Win(32/64)dd.exe

Win(32/64)dd.exe는 메모리 덤프를 위해 2007년 마티유 시우슈(Matthieu Siuche)가 개발한 공개용 소프트웨어이다. 하지만 32비트와 64비트 버전이 별도로 존재함으로 메모리 포렌식의 대상이 되는 컴퓨터 시스템에 설치된 운영체제의 버전을 미리 확인해야 한다.

그리고 2008년부터 현재까지는 Moonsols(http://www.moonsols.com)에서 MoonSols Windows Memory Toolkit(http://www.moonsols.com/resources/)에 포함되어 무료로 배포 중이다.


2) DumpIt.exe

DumpIt.exe는 2007년 마티유 시우슈가 개발한 Win(32/64)dd.exe를 응용하여 제작된 공개용 소프트웨어로, 가장 큰 장점으로는 32비트 및 64비트 운영체제 버전에 상관 없이 메모리 덤프 파일을 생성 할 수 있다는 것이다. 그리고 메모리 덤프 파일 생성을 위해 특정 인자 값 입력 없이 dumpit.exe 실행만으로 해당 소프트웨어가 존재하는 동일 경로에 메모리 덤프 파일을 생성하는 것이 장점이다.

해당 소프트웨어 역시 2010년부터 Moonsols(http://www.moonsols.com)에서 MoonSols DumpIt (http://www.moonsols.com/resources/)으로 무료로 배포하고 있다.


3) FTK Imager Lite

FTK Imager Lite는 액세스데이터(AccessData, http://www.accessdata.com/)라는 상용 컴퓨터 포렌식 소프트웨어개발 업체에서 개발하는 FTK(Forensic Toolkit)의 일부 기능을 제한하여 공개한 무료 버전 (http://www.accessdata.com/support/product-downloads)이다.

상용 버전에 비해 기능적인 한계는 존재하나 메모리 캡처(Capture Memory), 디스크 이미지 생성(Create Disk Image) 및 이미지 마운팅(Image Mounting)과 같은 기본적인 기능은 자유롭게 사용 가능하다.


액세스데이터에서는 현재 FTK Imager Lite 3.1.1.8 버전을 무료로 제공 중이며, 이 파일은 전체 약 75MB 크기로 USB에 복사하여 침해 사고가 발생한 것으로 추정되는 컴퓨터 시스템에 연결한 후 바로 사용이 가능하다.

4) 볼라틸리티(Volatility)

볼라틸리티는 파이선썬(Python) 프로그래밍 언어로 제작 된 메모리 분석에 많이 사용되는 공개용 소프트웨어이다. 현재 볼라틸리티는 볼라틸 시스템즈(https://www.volatilesystems.com/)에 의해 볼라틸리티 프레임워크(Volatility Framework)를 오픈 소스(https://code.google.com/p/volatility/)로 공개하고 있다.


볼라틸리티가 공개용 소프트웨어로 배포 중이어서, 메모리 분석과 관련된 다양한 기능을 가진 공개용 플러그인(Plugin) 파일이 개발되고 있다. 그리고, 침투 테스트(Pentest)를 목적으로 개발된 우분투 커널(Ubuntu Kernel) 기반 운영체제인 백트랙(BackTrack, http://www.backtrack-linux.org/downloads/) 및 칼리 리눅스(Kali Linux, http://www.kali.org/downloads)에도 포함되어 있다.

5) 맨디언트 레드라인(Mandiant Redline)

레드라인(Redline, https://www.mandiant.com/resources/download/redline)은 얼마 전 파이어아이(FireEye)에 인수된 침해 사고 대응을 전문으로 하는 보안 업체인 맨디언트(Mandiant)에서 개발해 무료로 공개한 메모리 분석 소프트웨어이다.

레드라인은 윈도 GUI(Windows GUI)를 기반으로 하는 메모리 분석 소프트웨어임으로 사용이 비교적 간단하며, 다른 공개용 메모리 분석 소프트웨어에 비해 비교적 빠르게 메모리 분석을 진행 할 수 있다.


그리고 레드라인에는 맨디언트에서 정의한 MRI(Mandiant for Intelligent Response) 기능으로 메모리 분석 과정에서 메모리 덤프 파일에 존재하는 악성코드로 의심되는 항목을 별도의 붉은색으로 표기하여 메모리 분석 시에 분석 시간 단축을 위해 효율성을 높이고 있다.

그러나 테스트 과정에서는 일부 악성코드로 판단되는 항목을 붉은색으로 표기하지 못하는 것을 발견했다. 그러므로 레드라인을 이용한 메모리 분석시에 MRI만을 전적으로 신뢰하기는 어려우니, 참고 용도로 사용하는 것이 좋다.


이 외에 메모리 덤프 파일에 존재하는 여러 데이터를 조합하여 시간 순서로 정렬한 타임라인 기능으로 인해 악성코드로 의심되는 항목이 최초 컴퓨터 시스템에 실행되었던 시각을 역으로 추적 할 수 있게 해준다.


그러나, 레드라인을 이용해 메모리 덤프 파일을 생성하고 분석하기 위해서는 설치 및 실행을 위해 닷넷 프레임워크(.NET Framework) 4.0의 설치가 필요한 단점이 있다.

6) VMWare를 이용한 메모리 덤프 파일 생성과 분석

VMWare는 악성코드 동적 분석에도 많이 사용되는 가상화 소프트웨어로서, 2008년 브렛 셰이버(Brett Shavers)의 논문 ‘Virtual Forensics: A Discussion of Virtual Machines Related to Forensics Analysis’을 통해 VMWare를 이용한 메모리 덤프 생성과 분석이 공개됐다.

일반적으로 VMWare 소프트웨어에는 다음의 주요 확장자 파일로 구성된다.

.Log – 가상 머신(Virtual Machine)에 대한 일반적인 활동 기록 파일

.VMDK – 게스트 운영체제(Guest OS)에 대한 실질적인 가상 하드 드라이브(Virtual Hard Drive)

.VMEM – 게스트 운영체제에 대한 실질적인 가상 페이징 파일(Virtual Paging File)

.VMSN – VMWare에서 생성하는 스냅샷(Snapshot) 파일로, 게스트 운영체제에 대한 상태 저장

.VMSD – VMWare에서 생성한 스냅샷 파일에 대한 메타데이터(Metadata) 기록 파일

.NVRAM – 게스트 운영체제에 대한 바이오스(BIOS) 정보 기록 파일

.VMX – 게스트 운영체제에 대한 설정 기록 파일

.VMSS – 게스트 운영체제를 일시 중지(Suspend) 상태로 변경할 경우, 당시의 게스트 운영체제 상태를 저장한 파일

VMWare가 가지고 있는 위와 같은 주요 확장자 파일들 중 VMWare 소프트웨어에서 게스트 운영체제 상태로 가동 중인 시스템의 메모리 분석 대상은 .VMEM 확장자를 가진 파일이다. 게스트 운영체제에서 .VMEM 확장자 파일을 추출하기 위해서는 실행 중인 게스트 운영체제를 일시 중지 시켜 현재 메모리 상태를 저장해야 한다.


그리고 .VMEM 확장자를 가진 파일을 별도로 복사하여 메모리 분석을 위한 소프트웨어를 이용하여 분석을 진행할 수 있다.


볼라틸리티 프로젝트와 프레임워크

현재 메모리 분석을 위해 가장 널리 사용되고 있는 볼라틸리티는 최초 2006년 아론 월터스(Aaron Walters)의 메모리 분석 관련 FATKit 프로젝트에서 출발하여 볼라툴즈 프로젝트(Volatools Project)로 발전한 사례이다.

그 이후 2007년 아론 월터스에 의해 볼라틸리티 프레임워크 개발팀인 볼라틸 시스템즈가 만들어지고 해당 팀에 의해 현재 볼라틸리티 프레임워크는 공개용 소프트웨어로 자리잡았다.

현재 볼라틸 시스템즈에서는 볼라틸리티 프레임워크 개발과 함께 다양한 기능을 가진 플러그인 사용 및 제작에 대한 전문적인 강의를 진행 중이다.

볼라틸리티는 현재 2.3.1 버전이 공개 중이나 필자는 이 글에서는 버전 2.2 (https://code.google.com/p/volatility/wiki/Release22)를 기준으로 설명할 예정이다. 볼라틸리티 프레임워크 2.2 에서는 다음 운영체제 버전에서 생성된 메모리 덤프 파일에 대한 분석이 가능하다.

1) Windows (x86)

Windows XP Service Pack 2 and 3
Windows 2003 Server Service Pack 0, 1, 2
Windows Vista Service Pack 0, 1, 2
Windows 2008 Server Service Pack 1, 2
Windows 7 Service Pack 0, 1

2) Windows (x64)

Windows XP Service Pack 1 and 2
Windows 2003 Server Service Pack 1 and 2
Windows Vista Service Pack 0, 1, 2
Windows 2008 Server Service Pack 1 and 2
Windows 2008 R2 Server Service Pack 0 and 1
Windows 7 Service Pack 0 and 1

3) Linux

32-bit Linux kernels 2.6.11 to 3.5
64-bit Linux kernels 2.6.11 to 3.5

그리고 볼라틸리티 프레임워크 버전 2.2는 분석이 가능한 메모리 데이터 영역을 5가지로 구분하고 그와 관련된 다양한 명령어들이 존재하나, 이 글에서는 아래 3가지 영역만을 다룰 예정이다.

1) Windows Core

* Image Identification - imageinfo, kdbgscan, kpcrscan

* Processes and DLLs - pslist,pstree, psscan, psdispscan, dlllist, dlldump, handles, getsids, cmdscan, consoles, envars, verinfo, enumfunc

* Process Memory - memmap, memdump, procmemdump, procexedump, vadinfo, vadwalk, vadtree, vaddump, evtlogs

* Kernel Memory and Objects - modules, modscan, moddump, ssdt, driverscan, filescan, mutantscan, symlinkscan, thrdscan

* Networking - connections, connscan, sockets, sockscan, netscan

* Registry - hivescan, hivelist, printkey, hivedump, hashdump, lsadump, userassist, shellbags, shimcache, getservicesids

* Crash Dumps, Hibernation, and Conversion – crashinfo, hibinfo, imagecopy, raw2dmp

* Miscellaneous – strings, volshell, bioskbd, patcher, pagecheck

2) Windows GUI

sessions, wndscan, deskscan, atomscan, atoms, clipboard, eventhooks, gahti, messagehooks, screenshot, userhandles, gditimers, windows, wintree

3) Windows Malware

malfind, yarascan, svcscan, ldrmodules, impscan, apihooks, idt, gdt, threads, callbacks, driverirp, devicetree, psxview, timers

윈도와 백트랙에서 볼라틸리티 설치

현재까지 볼라틸리티 프레임워크는 일반적으로 많이 활용되고 있는 운영체제인 윈도 버전과 리눅스 버전 2개를 구분하여 공개 중에 있다.

이 중에서 윈도 환경에서는 다시 2가지 버전으로 구분되는데, 이 차이는 윈도 운영체제에서 단독으로 실행되느냐 설치가 필요한 패키지 버전이냐의 차이이다.

1) 단독 실행 형인 volatility-2.2.standalone.exe

볼라틸리티 2.2 단독형 윈도 프로그램 (https://volatility.googlecode.com/files/volatility-2.2.standalone.exe)


2) 설치를 필요로 하는 volatility-2.2.win32.exe

볼라틸리티 2.2 윈도 모듈 인스톨러(https://volatility.googlecode.com/files/volatility-2.2.win32.exe)

윈도 운영체제에 설치를 필요로 하는 패키지인 volatility-2.2.win32.exe의 경우에는 기본적으로 제공되는 플러그인과 별도로 공개되는 플러그인 모두를 사용하기 위해서는 파이썬 2.6 또는 2.7 버전을 추가로 설치해야 한다.

리눅스를 지원하는 볼라틸리티 프레임워크의 경우에는 앞서 언급한 바와 같이 침투 테스트를 위한 우분투 기반 운영체제인 백트랙과 칼리 리눅스에는 기본적으로 볼라틸리티 2.2 버전이 포함되어 있다.


이 외에 SANS에 개발하여 공개 중인 SIFT(SANS Investigate Forensic Toolkit, http://computer-forensics.sans.org/community/downloads)라는 컴퓨터 포렌식 목적으로 제작된 우분투 기반 리눅스 운영체제에도 볼라틸리티가 기본적으로 포함되어 있다. 그러나 현재 공개 중인 SIFT 2.14 버전에는 볼라틸리티 프레임워크 2.0 버전이다. 하지만 2014년 상반기 중으로 SIFT 3.0 버전이 공개 예정이라고 하니, 볼라틸리티 버전 역시 변경 될 것으로 예상된다.

이렇게 윈도 및 리눅스 운영체제 모두를 지원하는 볼라틸리티 프레임워크는 일반적으로 윈도 운영체제에서의 사용을 권장하지 않는다.

그 이유는 마이크로소프트사에서 제공하는 보안 패치로 인해 볼라틸리티를 이용한 메모리 분석 과정에서 실제와 다른 오류가 발생할 수 있기 때문이다. 그러므로 일반적인 메모리 분석 과정에서는 백트랙과 같은 리눅스 환경에서 작업을 권장한다.
이러한 사유로 이후부터 다루는 볼라틸리티를 이용한 메모리 분석 전 과정은 백트랙 운영체제를 통해 진행되었다.

볼라틸리티를 이용한 메모리 분석 방법론

침해 사고가 발생해 악성코드 감염이 의심되는 시스템에서 생성한 메모리 덤프 파일을 분석하기 위해서는 [그림 14]와 같은 6단계의 절차를 이용하여 메모리 분석을 진행할 수 있다.


볼라틸리티를 이용한 각 단계별 분석 과정과 주요 프레임워크 명령어는 다음과 같다.

1) 운영체제 분석

메모리 덤프 파일을 생성한 운영체제가 어떠한 버전의 운영체제인지 확인하는 과정을 거치게 된다. 이 단계에서 확인한 운영체제 버전에 따라 향후 이루어지는 메모리 분석의 방향과 분석에 적용될 볼라틸리티의 명령어가 다르게 사용될 수 있다.

 imageinfo - 생성한 메모리 덤프 파일의 운영체제, 서비스 팩(Service Pack)과 하드웨어 정보 나열

2) 프로세스 분석

윈도 시스템에서 동작하는 악성코드는 다른 일반적인 윈도우 프로그램과 유사한 구조를 가지고 있으므로, 악성코드 역시 자신의 코드를 메모리에 적재한 후에 자신의 프로세스와 쓰레드를 생성하여야만 실행이 가능하다. 그러므로 확보한 메모리 덤프 파일에서 실행 중이거나 은폐된 프로세스 및 그와 관련된 정보를 분석한다.
   
 pslist - 실행 중인 프로세스 정보 나열

 psscan - 실행 중인 프로세스 정보와 함께 이미 종료된 프로세스 정보 나열

 psxview – pslist 및 psscan에서 확인한 프로세스 정보를 비교하여 나열함으로써, 은폐된 프로세스 정보 획득

 pstree - pslist와 유사한 정보를 보여주나 부모(Parent) 프로세스와 자식(Child Process) 프로세스 간의 상관 관계 나열

 procexedump – 프로세스의 메모리 영역에서 빈 공간(Slack space)를 포함하지 않고 바이너리(Binary) 형태로 추출

 volshell – 메모리 덤프 파일 분석 시에 Windbg와 유사한 명령 형식으로 분석

3) 네트워크 정보

최근 발견되는 대부분의 악성코드는 감염된 윈도 시스템에서 외부 네트워크와 접속을 시도한다. 특히 침해 사고에서 많이 발견되는 원격 제어 형태의 악성코드는 메모리 덤프 파일 내부에서 공격자가 접속한 원격 시스템을 확인할 수 있는 다양한 정보가 포함되어 있다.

 connections –활성화 상태의 네트워크 연결 정보 나열 (Windows XP, Windows 2003 Server 만 사용 가능)

 connscan - 활성화 상태의 네트워크 연결 정보와 함께 이미 종료된 네트워크 연결 정보도 나열 (Windows XP, Windows 2003 Server 만 사용 가능)
 netscan – 활성화 상태의 네트워크 연결 정보를 보여주나 윈도 비스타와 7 그리고 윈도 2008 서버에서만 사용 가능

4) DLL 및 쓰레드 분석

일부 악성코드의 경우에는 특정 프로세스에 자신이 생성한 DLL 파일을 인젝션(Injection) 하거나 특정 시스템 프로세스의 특정 메모리 쓰레드 영역에 자신의 코드를 삽입하는 경우가 있다.

 dlllist - 특정 프로세스에서 로드 한 DLL의 정보 분석

 ldrmodules - 특정 프로세스나 DLL에 의해 은폐된 DLL 정보 분석

 dlldump - 특정 프로세스에서 로드한 DLL을 바이너리 형태로 추출

 Malfind – 사용자 모드 형태로 은폐되어 있거나 인젝션된 코드 또는 DLL 정보 분석

 apihooks – 사용자 및 커널 모드에서 API 후킹 정보 분석

5) String 분석

악성코드에 감염된 것으로 추정되는 시스템에서 생성한 메모리 덤프 파일에 존재하는 특정 프로세스의 메모리 영역 전체 또는 인젝션된 DLL 및 쓰레드 영역을 바이너리 형태로 추출한다. 그 이후 바이너리 형태로 추출해 낸 파일에서 악성코드와 관련된 문자열 및 관련 IP 주소 등을 검색 할 수 있다.

 yarascan - YARA를 이용하여, 사용자 및 커널 모드 메모리 영역에 포함된 바이트(Byte) 순서, ANSI 및 유니코드 (Unicode) 문자열 검색

 string – 문자열 검색을 위해 백트랙에 기본적으로 포함된 프로그램

6) 레지스트리 분석

일반적으로 악성코드는 감염된 윈도 시스템이 재부팅 되더라도 자동으로 재시작하기 위해 윈도 레지스트리(Windows Registry) 영역에 특정 키(Key)를 생성하거나 특정 값(Value) 등을 변경한다. 그러므로 메모리 덤프 파일 내부에 남아 있는 레지스트리 관련 데이터의 분석을 통해 악성코드로 의심되는 파일을 추출할 수 있다.

 printkey - 특정 레지스트리 키에 포함되어 있는 하위 키(Subkeys) 값과 데이터를 검색하여 나열

 userassist – 메모리 덤프 파일에서 UserAssist 관련 레지스트리 키 정보 추출

지금까지 볼라틸리티를 이용해 악성코드 감염이 의심되는 시스템에서 생성한 메모리 덤프 파일을 이용해 분석을 진행하는 방법론과 6단계에 걸친 분석 과정을 소개했다. 다음은 볼라틸리티를 이용해 실제 악성코드에 감염된 시스템에서 생성한 메모리 덤프 파일을 이용해 분석한 사례를 살펴보자.

볼라틸리티(Volatility)를 이용한 메모리 분석 사례

지금부터 소개할 볼라틸리티를 이용한 메모리 분석 사례는 실제 악성코드에 감염된 윈도 시스템에서 생성한 메모리 덤프 파일을 대상으로 이루어졌다. 전체적인 메모리 분석 과정은 앞서 지난 호에서 언급한 6 단계의 메모리 분석 방법론에 따라 이루어졌다.

Backdoor/Win32.Rbot.R327
(a.k.a Win32/IRCBot.worm.variant, W32.IRCBot, Backdoor.Win32.Rbot.aftu)

해당 Backdoor/Win32.Rbot.R327는 몇 년 전 지속적으로 그 변형이 발견되었던, IRCBot 웜의 변형 중 하나이다. 일반적으로 IRCBot 웜 변형들은 감염된 윈도 시스템에서 리버스 커넥션(Reverse Connection)을 통해 인터넷에 존재하는 악성코드 제작자 또는 유포자가 개설한 IRC 채널로부터 다양한 악의적인 공격 명령을 수신하여 이를 실행한다.

IRCBot 웜에 감염된 윈도 시스템에서 생성한 메모리 덤프 파일을 백트랙 운영체제에 설치되어 있는 볼라틸리티의 ‘imageinfo’ 명령으로 [그림 1]과 같이 감염된 시스템의 윈도 버전과 메모리 덤프 파일의 생성 시각을 확인한다.

[그림 1] ‘imageinfo’ 명령으로 윈도 버전과 메모리 덤프 파일 생성 시각 확인

‘imageinfo’ 명령으로 확인한 윈도 운영체제 버전을 바탕으로 향후 분석 방향이 수립되었다면, [그림 2]와 같이 ‘psscan’ 명령과 ‘pslist’ 명령이 조합된 ‘psxview’ 명령을 이용하여 메모리 덤프 파일을 생성한 윈도 시스템에서 은폐 기능으로 동작하는 프로세스가 존재하는지 확인한다.

[그림 2] ‘psxview’ 명령으로 은폐된 프로세스가 있는지 확인

[그림 2]에서는 ‘pslist’와 ‘psscan’에서 모두 ‘True’가 검색 되었으므로, 해당 윈도 시스템에서는 은폐형 기능으로 동작하는 프로세스는 존재하지 않는 것으로 판단 할 수 있다.

또한 메모리 덤프 파일을 생성할 당시에 감염된 윈도 시스템에서 동작 중인 프로세스의 생성 시간과 이미 종료된 프로세스의 종료 시간 정보를 획득 할 수 있는 ‘psscan’ 명령으로 [그림 3]과 같이 프로세스와 관련 추가적인 정보를 획득한다.

[그림 3] ‘psscan’ 명령으로 프로세스와 관련된 추가 정보 획득

그리고, 실행 중인 프로세스의 상관 관계 정보를 획득하기 위해 [그림 4]와 같이 ‘pstree’ 명령으로 추가적인 정보를 획득한다.

[그림 4] ‘pstree’ 명령으로 프로세스의 상관 관계 정보 획득

[그림 4]에 존재하는 붉은색 박스의 프로세스 항목을 확인 해보면 의심스러운 사항이 발견된다. 일반적으로 윈도 시스템에서 실행 중인 시스템 프로세스는 트리(Tree) 구조에서 시스템(System) 이라는 부모 프로세스 항목에 자식 프로세스 구조를 가지게 된다.

하지만 붉은색 박스의 ssms.exe 프로세스는 다른 시스템 프로세스와 상관 관계를 가지고 있지 않으면서, 시스템 프로세스와 유사한 파일명을 가지고 있다. 이를 의심스러운 프로세스로 추정 해 볼 수 있다.

그 다음으로는 메모리 덤프 파일을 생성할 당시의 감염된 윈도 시스템에서 발생하였던 네트워크 접속 관련 정보들을 획득하기 위해 [그림 5]와 같이 ‘connections’ 명령을 실행한다.

[그림 5] ‘connections’ 명령을 통해 네트워크 연결 정보 획득

[그림 5]에 존재하는 붉은색 박스를 살펴보면, 악성코드에 감염된 윈도 시스템은 메모리 덤프 파일을 생성할 당시에 프로세스 아이디(PID) 240번 프로세스에 의해 외부 인터넷에 존재하는 87.117.252.150 시스템의 65146번 포트로 접속 중인 상태이다.

외부 인터넷에 존재하는 시스템과 접속 중인 PID 240번인 프로세스를 확인 하기 위해 [그림 5]를 다시 확인 해보면, 이는 최초 의심스러운 프로세스로 추정했던 ssms.exe 프로세스인 것을 알 수 있다.

앞서 PID 240번 프로세스인 ssms.exe가 외부 인터넷에 존재하는 시스템과 접속 중이며, 시스템 프로세스 구조상 의심스러운 부분이 있다는 것을 확인했다. 해당 의심스러운 프로세스가 실제 악성코드가 정확한지 확인하기 위해 메모리 덤프 파일에서 [그림 6]과 같이 “procexedump” 명령을 실행한다.

해당 명령은 특정 프로세스의 메모리 영역 전체를 파일 형태로 추출할 수 있으며, 볼라틸리티에 의해 추출된 파일명은 executable.[PID].exe 형태를 가지게 된다.

[그림 6] ‘procexedump’ 명령으로 특정 프로세스 메모리 영역을 파일 형태로 추출

여기에서 주의할 점은 특정 프로세스 메모리 영역 전체를 파일 형태로 추출 할 수 있다고 하여, 추출한 해당 파일을 다른 윈도 시스템에서 실행을 통해 동적 분석을 수행 할 수는 없다.

이는 일반적으로 메모리에 적재된 파일들을 메모리 덤프를 통해 추출 해 낼 경우, 실제 디스크상에 존재하는 파일의 PE(Portable Executable) 파일 형식에서 IAT(Import Address Table)가 손상되어 실제 윈도 시스템에서는 정상적으로 실행 되지 않기 때문이다.

그러므로, 메모리 덤프를 통해 추출해낸 파일의 경우에는 인위적으로 IAT를 보정해주는 과정을 거쳐야 한다. 하지만, 해당 과정에 대한 설명은 본 원고의 주제를 벗어나는 부분임으로 다루지 않도록 한다.

의심스러운 프로세스인 ssms.exe의 메모리 영역 전체를 ‘procexedump’ 명령을 통해 파일 형태로 추출한 executable.240.exe에서, 사람이 읽을 수 있는 문자열들을 추출하기 위해 [그림 7]과 같이 백트랙에 포함된 ‘string’ 명령을 이용하여 임의로 텍스트 파일을 생성한다.

[그림 7] ‘string’ 명령으로 파일 형태의 프로세스 메모리 영역에서 문자열 추출

사람이 읽을 수 있는 문자열을 추출해 낸 텍스트 파일을 열어보면, [그림 7]과 같이 일반적으로 IRC 채널 접속을 위해 사용하는 IRC 명령어와 함께 윈도 시스템에 존재하는 레지스트리 키를 발견하게 된다.

[그림 8] ‘string’ 명령으로 파일 형태의 텍스트 파일에서 발견된 문자열

해당 단계에서 발견된 IRC 명령어와 레지스트리 및 다른 관련 문자열을 조합해 볼 때 PID 240번 프로세스인 ssms.exe는 기존에 많이 발견되었던 IRCBot 웜의 변형 중 하나일 것으로 판단할 수 있다.

[그림 8]에서 발견한 IRC 관련 명령어를 [그림 9]과 같이 “yara” 명령어를 이용하여 PID 240번을 가지는 ssms.exe 프로세스 메모리 전체 영역을 검색 해보면, 기존에 많이 발견되었던 IRCBot에서 사용되는 문자열을 추가적으로 발견할 수 있다.

[그림 9] ’yara’ 명령으로 특정 프로세스 메모리 영역에서 문자열 검색

 그리고, 해당 IRCBot 웜 변형이 윈도 시스템의 레지스트리에서 어떠한 부분에 자신과 관련된 키를 생성하였는지 확인 하기 위해, 메모리 덤프 파일에 존재하는 윈도 레지스트리 관련 정보를 추출하는 ‘printkey’ 명령과 함께 인자 값으로 [그림 10]에서 추출한 윈도 레지스트리 관련 문자열을 사용했다.

[그림 10] ‘printkey’ 명령으로 의심스러운 프로세스를 생성한 윈도 레지스트리 키 검색

이 과정에서 [그림 10]과 같이 윈도 시스템에서 일반적으로 악성코드가 자동 실행을 위해 많이 사용하는 레지스트리 위치에 ‘윈도 업데이트(Windows Update)’라는 키를 생성하고 자신을 데이터로 생성한 것을 확인 할 수 있다.

Trojan/Win32.Oficla
(a.k.a Win-Trojan/Oficla.82432.C, Trojan.Sasfis, Trojan.Win32.Oficla.bv)

Trojan/Win32.Oficla는 기존에 알려진 브레도랩(Bredolab) 트로이목마 변형 중 하나로서, 금융 정보 탈취를 목적으로 제작 및 유포되는 제우스(Zeus)와 스파이아이(SpyEye)의 소스코드(Source Code)에서 파생되어 제작되어진 형태이다.

그리고, 정상 시스템 프로세스인 svchost.exe 또는 explorer.exe의 프로세스 메모리 영역 중 하나 또는 그 이상의 쓰레드 영역을 생성하여 자신의 코드 또는 전체를 코드를 인젝션하여 동작한다. 감염이 성공적으로 이루어지면 외부 인터넷에 악성코드 제작자 또는 유포자가 생성한 C&C(Command and Control) 시스템으로부터 명령을 수신하여 다른 악성코드 다운로드 후 실행하는 기능 등을 수행한다.

Oficla 트로이목마에 감염된 윈도 시스템에서 생성한 메모리 덤프 파일을 백트랙 운영체제에 설치되어 있는 볼라틸리티의 “imageinfo” 명령으로 [그림 11]와 같이 감염된 시스템의 윈도 버전과 메모리 덤프 파일의 생성 시각을 확인한다.

[그림 11] ‘imageinfo’ 명령으로 윈도 버전과 메모리 덤프 파일 생성 시각 확인

‘imageinfo’ 명령으로 확인한 윈도 운영체제 버전을 바탕으로 향후 분석 방향이 수립되었다면, [그림 12]와 같이 ‘psscan’ 명령과 ‘pslist’ 명령이 조합된 ‘psxview’ 명령을 이용하여 메모리 덤프 파일을 생성한 윈도 시스템에서 은폐 기능으로 동작하는 프로세스가 존재하는지 확인한다.

[그림 12] ‘psxview’ 명령으로 은폐된 프로세스 존재 여부 분석

[그림 12]에서는 ‘pslist’와 ‘psscan’에서 모두 ‘True’가 검색 되었으므로, 해당 윈도 시스템에서는 은폐 기능으로 동작하는 프로세스는 존재하지 않는 것으로 판단할 수 있다.

메모리 덤프 파일을 생성 할 당시에 감염된 윈도 시스템에서 동작 중인 프로세스의 생성 시간과 이미 종료된 프로세스의 종료 시간 정보를 획득 할 수 있는 ‘psscan’ 명령으로 [그림 13]과 같이 프로세스와 관련 추가적인 정보를 획득한다.

[그림 13] ‘psscan’ 명령으로 프로세스와 관련 추가 정보 획득

그리고, 실행 중인 프로세스의 상관 관계 정보를 획득하기 위해 [그림 14]와 같이 ‘pstree’ 명령으로 추가적인 정보를 획득한다.

[그림 14] ‘pstree’ 명령으로 프로세스의 상관 관계 정보 획득

[그림 14]에 존재하는 붉은색 박스의 프로세스 항목을 확인 해보면 의심스러운 사항이 발견된다. 일반적으로 윈도 시스템에서 실행 중인 시스템 프로세스는 트리(Tree) 구조에서 시스템(System) 이라는 부모 프로세스 항목에 자식 프로세스 구조를 가지게 된다.

하지만 붉은색 박스의 svchost.exe 프로세스는 다른 시스템 프로세스와 상관 관계를 가지고 있지 않으면서, 시스템 프로세스와 동일한 프로세스 명을 가지고 있음으로 이를 의심스러운 프로세스로 추정 해 볼 수 있다.

그 다음으로는 메모리 덤프 파일을 생성할 당시의 감염된 윈도우 시스템에서 발생하였던 네트워크 접속 관련 정보들을 획득하기 위해, ‘connections’ 명령을 실행했다. 하지만, 그 당시에 외부 인터넷에 존재하는 시스템에 접속 중인 활성화 상태의 프로세스는 존재하지 않았다.

추가적으로, 이미 종료된 네트워크 접속 상태 정보들을 획득하기 위해 [그림 15]와 같이 ‘connscan’ 명령을 통해, 외부 네트워크로 접속했던 프로세스 리스트를 확인했다.

[그림 15] ‘connscan’ 명령을 통해 네트워크 연결 정보 획득

이 과정에서 최초 [그림 14]에서 의심스러운 프로세스로 추정했던 PID 192번 프로세스인 svchost.exe가 외부 네트워크로 접속을 하였던 흔적이 발견되었다.

해당 의심스러운 프로세스가 실제 악성코드가 정확한지 확인하기 위해 메모리 덤프 파일에서 첫 번째 분석 사례에서 언급한 [그림 6]과 같이 의심스러운 프로세스인 svchost.exe의 메모리 영역 전체를 ‘procexedump’ 명령을 통해 파일 형태로 추출했다.

그 이후, 사람이 읽을 수 있는 문자열을 추출하기 위해 파일에서 첫 번째 사례에서 언급한 [그림 7]과 같이 백트랙에 포함되어 있는 ‘string’ 명령을 이용하여 임의로 텍스트 파일을 생성하여, 문자열을 확인했다. 그러나 특별히 악성코드로 의심 할 수 있는 문자열을 확인하지 못했다.

의심스러운 프로세스인 svchost.exe의 메모리 영역 전체가 악성코드가 아닐 수도 있음으로, 해당 프로세스 메모리 영역에 코드 인젝션이 발생 한 것을 확인 하기 위해, [그림 16]와 같이 “malfind” 명령을 통해 PID 192번의 의심스러운 프로세스인 svchost.exe의 메모리 영역을 검사했다.

[그림 16] ‘malfind’ 명령을 이용해 특정 프로세스 메모리 영역의 코드 인젝션 정보 획득

이 과정에서 svchost.exe의 메모리 영역의 0x90000 주소에서 특정 코드가 인젝션이 된 것이 발견되었다. 해당 프로세스 메모리 영역에서 발견된 코드 인젝션에 대한 추가 정보 획득을 위해 [그림 17]과 같이 ‘volshell’ 명령을 실행 한 후 ‘CC’ 명령으로 PID 192번 svchost.exe의 메모리 영역을 호출하였다.

[그림 17] ‘volshell’ 명령 실행 후 ‘CC’ 명령으로 PID 192번 svchost.exe의 메모리 영역 호출

그리고, ‘volshell’ 명령 창에서 [그림 18]과 같이 ‘db’ 명령을 실행하여, 앞서 언급한 [그림 16]에서 확인한 코드 인젝션이 시작되는 0x90000 주소부터 호출하는 메모리 크기를 조금씩 늘려나가며 분석을 진행하였다.

[그림 18] ‘volshell’ 명령 실행 후 ‘db’ 명령으로 0x90000에서 640 바이트만큼 호출

크기를 조금씩 늘려나가며 분석하는 과정에서, 640 바이트(byte) 크기만큼 호출한 영역에서 [그림 18]의 붉은색 박스에서와 같이 의심스러운 문자열들을 확인 할 수 있었다. 인젝션 된 메모리 영역에서 “1.tmp” 이라는 문자열이 존재하므로 코드 인젝션이 DLL 파일에 의해 발생한 것으로 추정 할 수 있다.

의심스러운 프로세스로 추정했던 PID 192번 svchost.exe의 메모리 영역에 대한 모듈(module) 정보를 획득하기 위해 [그림 19]와 같이 “ldrmodules” 명령을 실행하여 로드 되었거나 인젝션 되어 있는 DLL 파일을 확인했다.

[그림 19] ‘ldrmodules’ 명령을 실행하여 로드 되거나 인젝션된 DLL 파일

이 과정에서 앞서 언급한 [그림 18]에서 발견된 [그림 19]의 붉은색 박스와 동일한 ‘1.tmp’ 파일이 PID 192번 svchost.exe의 쓰레드 영역에도 로드된 것을 확인 할 수 있었다. 여기에서 발견된 ‘1.tmp’가 악성코드인지 정확히 확인하기 위해 해당 ‘1.tmp’ 파일의 메모리 영역을 파일 형태로 추출이 필요하다. 이를 위해 [그림 20]과 같이 ‘dlldump’ 명령으로 ‘1.tmp’의 메모리 영역인 0x10000000부터 파일 형태로 추출하였다.

[그림 20] ‘dlldump’ 명령으로 ‘1.tmp’의 메모리 영역인 0x10000000부터 파일 형태로 추출

의심스러운 파일인 ‘1.tmp’의 메모리 영역 전체를 ‘dlldump’ 명령을 통해 파일 형태로 추출한 후, 사람이 읽을 수 있는 문자열을 추출하기 위해 [그림 21]과 같이 백트랙에 포함되어 있는 ‘string’ 명령을 이용하여 임의로 텍스트 파일을 생성한다.

[그림 21] ‘string’ 명령으로 파일 형태로 추출된 ‘1.tmp’ 메모리 영역에서 문자열 추출

사람이 읽을 수 있는 문자열을 추출 해낸 텍스트 파일을 열면, [그림 22]와 같이 특정 웹 사이트 주소 관련 문자열이 발견된다.

 [그림 22] ‘1.tmp’로부터 추출한 파일에서 발견된 특정 웹 사이트 문자열

[그림 22]에서 발견한 특정 웹 사이트 주소를 [그림 23]과 같이 ‘yara’ 명령어 키워드에 특정 웹사이트 주소를 이용하여 전체 메모리 덤프 파일을 대상으로 검색 해보면, 코드 인젝션이 발생한 PID 192번 프로세스인 svchost.exe만이 검색된다.

 [그림 23] ‘yara’ 명령으로 메모리 덤프 전체 영역에서 특정 웹 사이트 문자열 검색

이러한 일련의 분석 과정을 정리하자면, 최초 의심스러운 프로세스였던 PID 192번 svchost.exe에는 ‘1.tmp’ 라는 악성코드로 판단되는 파일이 ㅆ레드로 인젝션되어 svchost.exe 프로세스를 이용하여 외부 특정 시스템으로 역 접속을 시도했던 것으로 판단할 수 있다.

맺음말

앞서 우리는 컴퓨터 포렌식이 침해 사고 대응과 분석이 이루어지는 과정에서 어떠한 역할을 하는지 살펴보고, 여기서 다시 멀웨어 포렌식이라는 새로운 기술적인 영역이 악성코드의 감염 경로와 악성코드로 의심되는 파일들을 추출하기 위해 어떠한 세부 기술들이 사용되는지 알 수 있었다.

이러한 세부 기술들 중에서 메모리 분석을 위한 메모리 포렌식이 무엇이며, 어떠한 소프트웨어들로 분석이 가능한지도 알 수 있다. 그 중에서도 메모리 분석을 위해 가장 많이 사용되는 소프트웨어 중 하나인 볼라틸리티가 무엇이며, 볼라틸리티를 이용하여 실제 악성코드에 감염된 시스템에서 생성한 메모리 덤프 파일들의 분석 과정과 사례들을 살펴보았다.

볼라틸리티를 이용한 메모리 포렌식 분석 사례들을 통해 일련의 과정들을 살펴보면, 메모리 분석의 장ㆍ단점이 존재한다.
우선, 메모리 포렌식 분석은 메모리에만 존재하는 휘발성 정보들로부터 악성코드 감염 시스템에서 발생한 다양한 정황적 정보를 확보할 수 있음을 알 수 있다. 그리고 생성한 메모리 덤프 파일을 대상으로 추후에라도 다양한 메모리 분석 툴과 기법을 이용하여 반복적인 적용과 검토가 가능 하다는 장점이 존재한다.

이 외에도 메모리 포렌식 분석에 사용된 볼라틸리티와 관련 플러그인들 모두가 파이선으로 제작되어, 운영체제에 따른 제약을 받고 사용이 가능한 확장성이 뛰어나고, 시스템적인 자동화와 같은 부가적인 응용성이 뛰어나다고 볼 수 있다.

이러한 장점들이 존재하지만 메모리 포렌식 분석만으로는 악성코드에 감염된 시스템을 완벽하게 분석하기에는 많은 어려움이 따른다. 그러므로, 최초 앞부분에서 언급하였던 다른 멀웨어 포렌식 기법들과 병행이 되어야만이 조금 더 자세하게 분석을 진행 할 수 있다.

그리고, 볼라틸리티를 이용한 메모리 포렌식 분석에서는 메모리 덤프 파일에 존재하는 윈도 레지스트리 정보를 분석하기에는 많은 어려움이 따른다. 볼라틸리티를 이용한 메모리 분석 사례에서는 언급되지 않았지만 사용자와 커널 모드에서 은폐 기법을 사용하는 악성코드에 의해 생성된 프로세스 영역을 볼라틸리티에서는 은폐된 프로세스로 탐지는 가능하다. 하지만, 다른 형태와 기법 등으로 추가적인 분석을 진행하기에는 많은 제약이 따른다.

하지만, 전체적인 메모리 포렌식과 관련된 기술의 발전이 빠르게 진행되고 있다. 또한 다양한 컴퓨터 포렌식커뮤니티에서 이와 관련된 논의들이 자주 이루어지고, 메모리 포렌식만을 전문으로 하는 컨퍼런스가 해마다 개최되고 있다는 점에서 메모리 포렌식 기술의 발전은 긍정적이라고 할 수 있다.

그러므로, 향후에는 침해 사고 대응과 분석 과정에서 메모리 포렌식 분석이 차지하는 비중은 점점 커질 것이며, 이와 관련된 다양한 소프트웨어와 분석 기법들을 많이 등장하리라 판단된다.

[참고 문헌] 

인사이드 윈도우 포렌식 (Windows Forensic Analysis 2/e, 2009년), 할랜 카비 저, 정상민, 정명주 역, 박병익 감수, BJ 퍼블릭, 2010년
제 1장 실시간 대응: 휘발성 데이터 수집
제 2장 실시간 대응: 데이터 분석
제 3장 윈도우 메모리 분석

■ 윈도 포렌식 실전 가이드, 고원봉 저, 한빛 미디어, 2010년
1장 라이브 리스폰스
2장 메모리 분석

■ 악성코드와 멀웨어 포렌식 (Malware Forensics, 2008년), 제임스 아퀼리나, 에이헨 케이시, 카메론 말린 저, 박재호 역,
에이콘, 2012년
01장 멀웨어 사고 대응: 동작 중인 윈도우 시스템에서 휘발성 자료 수집과 검사
03장 메모리 포렌식: 멀웨어 관련 증거물에 대한 물리적 메모리 덤프와 프로세스 메모리 덤프 분석

■ 표적형 공격 보안 가이드, APT 공격, 실전 방어 및 대응 (HYOUTEKIGATA KOUGEKI SECURITY GUIDE, 2013년),
이와이 히로키 저, 박선필 역, BJ 퍼블릭, 2013년
6장 초동 대응
6-1 스냅샷 취득

■ Mastering Windows Network Forensics and Investigation, Second Edition, Steve Anson, Steve Bunting, Ryan Johnson, Scott Pearson 저, Sybex, 2012년
Chapter 6 Live-Analysis Techniques

■ Malware Forensics Field Guide for Windows System – Digital Forensics Field Guides, Cameron H. Malin, Eoghan Casey, James M. Aquilina 저, Syngress, 2012년
Chapter 2 Memory Forensics – Analyzing Physical and Process Memory Dumps for Malware Artifacts

■ SANS Forensic 508 Advanced Computer Forensic Analysis And Incident Response, Rob Lee 저, SANS Institute, 2011년
508.2 Live Response and Complex Evidence Acquisition
Windows Live Response

■ Virtual Forensics: A Discussion of Virtual Machines Related to Forensics Analysis
http://www.forensicfocus.com/downloads/virtual-machines-forensics-analysis.pdf

■ FATKit: A Framework for the Extraction and Analysis of Digital Forensic Data from Volatile System Memory
http://www.4tphi.net/fatkit/papers/dfrwswip.pdf

■ Volatools: Integrating Volatile Memory Forensics into the Digital Investigation Process
http://www.blackhat.com/presentations/bh-dc-07/Walters/Paper/bh-dc-07-Walters-WP.pdf

■ Open Memory Forensics Workshop (OMFW)
https://www.volatilesystems.com/volatility/omfw/Walters_OMFW_2008.pdf

■ Windows Memory Dump Analysis Volatility Plugin 을 이용한 Windows Memory Dump 분석
http://ls-al.org/wp-content/uploads/2012/07/volatility-plugin-manual11.pdf

댓글 없음:

댓글 쓰기