레이블이 Article인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Article인 게시물을 표시합니다. 모든 게시물 표시

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

2014년 2월 11일 화요일

APT(Advanced Persistent Threat) 공격의 현재와 대응 방안

오늘은 두 개의 글을 포스팅하게 되는군요. 시간 날때 집에서 써야지 하다가다 애기의 장난과 저의 게으름에 그냥 지나치기 일쑤 인데, 오늘은 모처럼 시간을 내어 봅니다.

APT(Advanced Persistent Threat)와 관련된 원고도 과거에 한번 썼었던 적이 있었고, 외부 및 내부 강의로 인해 파워포인트(PowerPoint) 슬라이드도 버전만 조금씩 다르지 작성해 두었던 것이 제법 있었습니다.

오늘 공유하는 자료는 2014년 1월 초에 내용을 업데이트 한 자료인데, 당시 다른 메모리 포렌식(Memory Forensic) 관련 원고를 작성 중에 있던 시점이었습니다. 그래서, 원고를 담당하시는 담당자분께 파워포인트 슬라이드 파일만 전달 해드렸는데, 이를 원고로 보기좋게 정리를 하셔서 "월간 안" 2월호에 옮겨 주셨더군요.

그래서, 강남 성형외과 광고에 자주 보였던 문구 중 하나인 "비포(Before) & 애프터(After)"로 나누어, 초안이었던 PPT 슬라이더를 먼저 보여드리고, 그 아래 부분에 정리되어 실렸던 원고를 게시하였습니다.



초안이 되었던 PPT 슬라이드가 과거 자료와 다른 점은 마지막 3장에 조금 더 실질적이고 현실적인 대안이 "APT(Advanced Persistent Threat) 공격 예방적 System Hardening"와 "APT(Advanced Persistent Threat) 공격 탐지적 Network Control" 라는 내용으로 추가되었습니다.

이는 작년 가을 서울종합과학대학원 산업보안 MBA 과정에서 진행되었던 특강시에 받았던 여러 질문 중 하나가 "현실적으로 조치 할 수 있는 가이드라인(Guild-line)이 무엇이냐" 였습니다.

이 질문을 주신 분은 실제 기업 보안팀에서 현업 엔지니어로 근무하시는 분이라 개념적인 내용과 공격 기법 분석 역시 중요하지만, 방어적인 차원에서 삼을 수 있는 가이드라인이 필요하였던 분이었습니다. 그래서 내부 자료들을 정리하면서 가이드라인으로 삼을 수 있는 부분들을 추가하였습니다.

이런 초안이 아래와 같은 원고로 변경되어 "월간 안" 2월 호에 동일한 제목으로 "APT 공격의 현재와 대응 방안, APT 공격 예방을 위한 11가지 수칙"으로 공개되었습니다.

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

APT 공격 예방을 위한 11가지 수칙

인터넷으로 연결된 세상은 그야말로 그물망처럼 더욱 정교하고 공고해지고 있다. 이러한 환경은 악성코드가 서식하기에 더없이 좋은 조건이기도 하다. 신년인사나 청첩장, 이력서도 이메일이나 SNS를 통해 전달하는 것이 이젠 어색하지 않다. 그러나 무심코 열어본 이메일, 늘 사용하던 SNS에 생각지도 못한 악성코드의 위험이 도사리고 있다. 인터넷 환경이 발달할수록, 사용자가 많아질수록, 그 틈새를 노리는 악성코드도 더욱 교묘해지기 마련이다. 더욱이 공격 타깃이 불특정 다수가 아닌 특정 기업이나 기관, 사회기반 시설 등이 되고 있으며 그 파괴력 또한 상상을 초월한다. 이제 보안을 아는 사람이라면 더 이상이 낯설지 않게 되어 버린 APT. 2014년 현재 APT는 어느 수준이며 이에 대응하기 위한 방안은 무엇인지 다시 한번 점검해보자.

APT의 정의

2004년 6월 우리나라 정부와 기업들을 대상으로 한 핍뷰어(PeepViewer)라는 트로이목마가 유포된 사례가 있었다. 국가정보원에 따르면, 6개 공공기관의 PC 64대와 민간 기업의 PC 52대가 감염되었다. 이 트로이목마는 이메일로 ‘워크숍 내용과 일정.MDB’라는 첨부 파일을 전송하여 악성코드 감염을 시도한 것으로 나타났다. 이것은 정부와 일반 기업들을 대상으로 정부 기밀을 탈취하기 위한 국내 최초의 APT 공격 사례로 꼽히고 있다.

이후 국내에서 APT 공격 사례가 대거 나타나기 시작한 것은 2011년부터였다.

2011년 4월에 농협 전산망 마비 사고가 대표적이다. 외부 공격으로 인해 농협의 전산망 시스템이 손상되어 모든 업무가 마비되었다. 이 사고는 외주 직원의 노트북 PC를 감염시킨 후 내부 시스템으로 침입하는 기법을 사용했다. 공격자는 P2P 프로그램으로 악성코드를 유포한 후 7개월 동안 꾸준히 감시하면서 공격 시점을 엿보았던 것으로 드러났다.

같은 해 7월, 3500만 명의 고객 개인정보가 유출된 SK커뮤니케이션즈 침해 사고가 대한민국을 뒤흔들었다. 무료 소프트웨어 업데이트 서버를 해킹하여 정상 파일을 악성코드로 변경한 후 유포하는 방식을 이용하였다. 공격자는 8일 만에 DB 관리자 권한을 획득하였고 DB 데이터를 분할 압축하여 외부로 유출하였다.

해외에서는 2010년 이란 원자력 발전소의 시스템 파괴를 목적으로 한 스턱스넷(Stuxnet)이 발견되었다. 공격자는 MS 윈도의 알려진 취약점 3개와 제로데이 취약점 2개를 악용하여 악성코드를 유포하였다. 2011년에 보고된 듀크(Duqu)와 2012년 발견된 플레임(Flame) 모두 이란 원자력 발전소 관련 정보 수집을 목적으로 침투한 사건이었다.


2010년 1월에는 구글의 기업 기밀 정보를 탈취하기 위한 일명 오퍼레이션 오로라(Aurora)가 발생했다. 이 사고는 구글 외에 첨단 IT 기업 34개도 공격하였다. 마이크로소프트 인터넷 익스플로러의 제로데이 취약점을 악용했으며, 이메일과 메신저로 악의적인 웹 사이트로 접속하는 링크를 전달했다.


2011년 3월에는 EMC/RSA의 OTP(One Time Password) 제품 기밀 정보를 탈취하려는 시도가 있었다. 공격 대상을 선정하기 위해 소셜 네트워크로 내부 직원의 개인정보를 확보하였다는 점에서 본격적인 APT 침해 사고로 알려져 있다. 어도비 플래시 플레이어의 제로데이 취약점을 악용한 첨부 파일을 이메일로 전파, 사회공학적 기법으로 내부 직원의 악성코드 감염을 유도했다.


2012년 2월 CNN은 시리아 정부가 반정부 인사 감시를 위한 악성코드를 유포했다고 폭로했다. 이메일 첨부 파일, 허위 유튜브(Youtube) 페이지, 스카이프(skype)로 악성코드를 유포했으며 언더그라운드에 공개된 DarkComet RAT 악성코드 생성기로 악성코드를 제작한 것으로 알려졌다.

시리아, 이스라엘, 사우디아라비아, 레바논 등지의 PC가 주로 감염됐다.

2013년에 APT 공격은 더욱 기승을 부렸다.

1월에는 오퍼레이션 ‘붉은 10월(Red October)’이라는 악성코드가 동유럽 및 중앙아시아 국가의 기관들을 해킹하는 사건이 발생했다. 이 악성코드는 정부와 연구 기관 등을 타깃으로 정교한 공격을 시도한 것으로 알려졌다. 2월에는 뉴욕타임즈, 월스트리트저널 등 미국의 주요 언론사들이 이전에 해킹 시도가 있었다고 밝히면서 그 배후를 중국의 ‘APT 1’이라고 보도하여 논란이 되었다. 3월에는 인도의 해커 집단인 오퍼레이션 행오버(hangover)가 인근 국가의 정부기관을 해킹하는 사건이 발생했고, 우리나라에서는 KBS, MBC, YTN과 농협, 신한은행, 제주은행 등 방송ㆍ금융 6개사의 전산망이 마비되는 3ㆍ20 사이버테러가 발생했다.

4월에는 국제 해커 집단 윈티(Winnti)가 한국, 미국, 일본 등 전 세계 30여 개국의 온라인 게임 업체를 공격했다고 발표됐으며, 6월에는 악성코드 넷트래블러(NetTraveler)가 우리나라를 포함해 40개국 350개 기관을 공격한 것으로 드러났다. 또한 9월에는 한국과 일본의 주요 정부 기관과 기업들을 대상으로 공격을 시도한 소규모 사이버 용병 그룹인 아이스포그(Icefog), 중국에 거점을 둔 청부 해커 집단인 Hidden Lynx 등에 대한 실체가 드러났다. 이어 12월에는 중국의 해커 집단인 케상창(Ke3chang)이 G20 정상회담 직전 유럽 5개국 외교통상부 장관의 컴퓨터를 해킹한 사건이 보도됐다.


APT 공격 형태의 특징

공격 대상의 확대

인터넷과 컴퓨터의 발달로 정부 기관이나 각 기업에서 업무 자동화 시스템을 도입하고 있다. 따라서 모든 업무는 물론, 기밀 문서 역시 전자 문서와 같은 데이터 형태로 파일 서버에 보관하는 것이 일반적이다. 이러한 환경은 APT 형태의 타깃형 공격이 증가하기 좋은 토양이 된다.

APT 공격의 목적은 더욱 다양화되고 있으며 그 공격 대상 역시 확대되고 있다.

과거에는 정부나 군사 기관만이 주요 공격 대상이었으나, 지금은 경제적 고부가가치 데이터를 보유한 첨단 기업들을 포함한 민간 기업으로까지 확대됐다.

한국과 일본은 특히 금융기관, 언론사 및 온라인 게임 업체들이 주 대상이 되고 있다.



고도화된 공격 기법

웹과 소셜 네트워크의 발달은 공격 대상의 개인정보 수집이 용이한 상황을 만들어준다. 수집한 개인정보들로 공격 대상에게 최적화된 사회공학적 기법을 개발하고 적용하기 쉬워진 것이다. EMC/RSA 침해 사고도 내부 직원들에게 채용 정보 관련 메일로 위장한 것이었다.

또한, 악성코드 제작 및 취약점 개발 기술들의 발전은 보안 제품 탐지 우회와 APT 공격의 성공률을 높이는 데 기여하였다. 악성코드는 셀프 업데이트(self-update), 보안 제품 무력화 등 다수의 개별 기능을 가진 파일들을 조합하기도 한다. 취약점은 다양한 일반 소프트웨어의 알려진 취약점이나 제로데이 취약점을 악용하고 있다.

현재까지 APT 공격의 주요 기법은 이메일의 첨부 파일을 이용하는 형태였다. 이전에는 첨부 파일이 실행 가능한 파일이었으나 최근에는 전자 문서 형태로 변하고 있다. 우리나라에서는 무료 소프트웨어의 자동 업데이트 기능과 국산 P2P 프로그램을 악용하는 사례가 늘고 있다.



APT 공격 대응 방안

APT 공격 방식

APT 공격은 먼저 공격 대상을 정의하는 데서 시작한다. 공격 대상을 정하고 나면, 대상에 맞는 악성코드를 제작하거나 구매한다. 이후 공격 대상에 대해 연구하면서 내부 감염을 시도한다. 이때 사회공학적 기법을 이용한 타깃형 공격이 진행된다. 내부 감염이 성공하면 일단 거점이 확보된 것이다. 악성코드가 감염되었으면 공격자와 연결하기 위해 역 접속(reverse connection)으로 C&C 서버와 연결한다. 연결 후에는 C&C 서버를 통해 원격으로 제어하건 공격 명령을 지시할 수 있다. 이렇게 해서 내부 데이터를 탈취한 후에는 잠복 흔적을 제거함으로써 대상에서 빠져나 온다.



APT 통합 대응 전략

보안 위협에 대응하기 위해 위기 관리 기반의 기업 보안 정책을 수립하는 것이 선행돼야 한다.

또한 공격 표면 축소와 공격 탐지의 효율을 위해 심층 대응(Defense in Depth) 전략을 수립하고, 새로운 보안 위협에 대한 신속한 대응을 위해 시큐리티 인텔리전스(Security Intelligence)를 확보해야 한다.

보안 위협의 출발점이 내부 임직원인 경우가 많으므로, 주기적인 보안 인식 교육도 매우 중요하다.


APT 공격을 사전에 예방하기 위해서는 아래 사항을 빠짐없이 준수하여야 한다.

APT 공격 예방을 위한 시스템 강화

1. 모든 운영체제와 웹 애플리케이션 및 관련 서버는 최신 버전을 유지하고 보안 패치를 적용한다.

2. WSUS(Windows Server Update Services)로 최신 보안 패치를 배포하고 설치한다.

3. 모든 시스템에는 안티바이러스 소프트웨어를 설치하고 안티바이러스 관리 서버에서 모니터링한다.

4. 모든 운영체제에 존재하는 사용하지 않는 사용자 계정은 비활성화하거나 삭제한다.

5. HSM(Host Security Monitoring, HIPS) 설치 후 모니터링하고 주기적으로 분석한다.

6. 터미널 서버에는 공용 계정을 삭제하고 저장된 계정 정보와 암호를 모두 삭제한다.

7. 터미널 서버에는 업무 목적별로 개별 계정을 생성한 후에 로그인 로그를 생성하고 관리한다.

8. 데이터베이스의 xp_cmdshell Procedure를 삭제하고 관련 파일 xplog70.dll을 삭제한다.

9. 데이터베이스 정보는 암호화해서 관리하되, 웹 서버에서 암호화하여 데이터베이스로 전송한다.

10. 웹 서버에는 SSL(Secure Socket Layer)를 활성화 한다.

11. 윈도우 이벤트 로그 및 IIS 웹 로그는 통합하여 로그 매니지먼트 서버에서 관리한다.

APT 공격 탐지를 위한 네트워크 제어

1. 백본 스위치에서는 화이트리스트 및 블랙리스트를 이중 정책으로 설정해 관리한다.

2. 기업 외부 네트워크에서 기업 내부로 접속할 때 IPSec VPN 혹은 SSL VPN을 이용하도록 한다.

3. IPSec VPN 혹은 SSL VPN 연결 시마다 발생하는 모든 VPN 로그를 별도로 관리한다.

4. VPN 계정은 업무 목적별로 생성하고, 권한도 구분하여 적용한다.

5. 기업 내부 아웃바운드 패킷에 대한 필터링을 적용한다.

6. 기업 내부 HTTP 통신은 모두 웹 프록시를 거치도록 운영하고 관리한다.

7. 기업 내부에서는 파일 공유 서비스 대신 SFTP 또는 SCP(Secure Copy)만 사용하도록 한다.

8. NIDS와 같은 NSM(Network Security Monitoring) 247을 운영 및 관리한다.

9. NIDS 이벤트 및 전체 세션 데이터와 전체 패킷을 저장하고 분석한다.

10. 업무 영역별로 네트워크 분리 후 각 업무 영역마다 방화벽을 설치하고 관리한다.

11. 시스템, 네트워크 및 데이터베이스 등 IT 관리 부서는 일반 업무 영역과 별도로 구분한다.

2013년 5월 3일 금요일

진화하는 DDoS 공격, 그 끝은 어디인가?

2012년 3월 즈음에 분석2팀의 정관진 책임님과 함께 작성한 원고가 "진화하는 DDoS 공격, 그 끝은 어디인가?" 입니다. 당시 해당 원고는 3.4 DDoS가 발생한지 1주년을 맞아서 DDoS(Distributed Denial of Service) 공격의 현재 상황과 향후에 발생 가능한 공격 형태들을 다루어보고자 작성하였습니다.

해당 원고에서 저는 현재의 DDoS 공격 현황과 언더그라운드에서 사용하는 DDoS 공격 툴들을 분석하는데 중심을 두었으며, 정관진 책임님께서는 네트워크과 패킷 관점에서 DDoS 공격 형태들을 분석하는데 중점을 두셨습니다.

원고는 3월에 작성 완료하였지만 내부 업무 사정으로 인해 5월로 조금 연기되어 안랩닷컴에 공개되었으며, 최초의 원고 내용에서 크게 벗어나지 않은 선에서 정리가 되었더군요.

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

우리는 한 번도 겪기 힘든 대형 DDoS(Distributed Denial-of-Service, 분산 서비스 거부) 공격을 두 차례나 겪었다. 대량의 네트워크 트래픽을 유발해 특정 웹 사이트들이 정상적인 동작을 하지 못하도록 마비시키는 DDoS 공격을 두 차례나 겪은 것은 다른 어느 국가에서도 찾아보기 힘든 보기 드문 사례다. 한편으로는, 이를 통해 우리는 DDoS 공격과 그에 따른 피해가 얼마나 심각하며 우리 생활에 어떠한 피해를 유발할 수 있는지를 몸소 체험하며 보안 인식을 한층 고취시킬 수 있었다. 이 글에서는 최근 국내?외에서 발생했던 DDoS 공격 양상과 특징, 네트워크 관점에서 주목해야 할 점들에 대해 살펴보겠다.

국내,외 주요 DDoS 공격의 특징

[표 1]은 2011년 하반기부터 2012년 현재까지 다른 나라에서 발생한 주요 DDoS 공격 사례들을 정리한 것이다.

[표 1] 2011~2012년 국외 주요 DDoS 공격 사례

국외에서 발생한 주요 DDoS 공격 사례들의 가장 큰 특징은 특정 목적 하에 공격 대상을 선정하고 DDoS 공격을 가한다는 점이다. 여기서 특정 목적이란 현재 인터넷에서 발생하는 사이버 범죄들의 금전적인 목적과는 확연히 다른 목적이다. 즉, 특정 단체의 정치적인 의견을 표현하기 위한 하나의 수단으로써 DDoS 공격을 행하고 있다는 것이다.

특히 어나니머스(Anonymous)의 DDoS 공격들은 2011년 11월부터 2012년 2월까지 이집트, 이스라엘, 브라질과 이탈리아 등 다수 국가의 정부기관 웹 사이트들을 대상으로 집중적으로 발생했다. 이 공격들은 금전적인 대가를 위한 것이 아니라 해당 해킹 그룹이 가지고 있는 정치적인 의견을 인터넷으로 표출하기 위한 것이었다.

[그림 1] 2011~2012년 국내 주요 DDoS 공격 사례

[그림 1]은 같은 기간 국내에서 발생한 주요 DDoS 사례들이다. 국내 사례들은 국외 사례들과는 조금 다른 목적을 갖고 있었음을 알 수 있다.

국내의 경우에는 정치적인 성격이 드러난 2011년 10월 선거관리위원회 웹 사이트 DDoS 공격 사례와 2012년 3월 여성가족부 웹 사이트 DDoS 공격 사례를 제외하고는 모두 금전적인 목적의 공격이었다.

DDoS 공격 기법 면에서도 차이가 있다. 국외에서 발생한 DDoS 공격 사례들 중 어나니머스에 의해 발생한 사례들은 대부분 [그림 2]와 같은 네트워크 트래픽 테스트 용도로 제작된 공개 유틸리티를 악용했다.

[그림 2] DDoS 공격에 사용된 네트워크 관련 공개 툴

그러나 국내에서는 [그림 3]과 같이 중국에서 DDoS 공격을 목적으로 제작된 악성코드 생성기를 이용한 사례가 많았다.

[그림 3] 중국에서 제작된 DDoS 공격을 위한 악성코드 생성기

특정 단체의 정치적인 의견을 피력하기 위한 DDoS 공격은 단체에 소속된 조직원들의 자발적인 참여로 이루어진다. 그러나 금전적인 목적의 DDoS 공격에서는 인원이 많지 않으므로 악성코드를 유포하여 감염된 다수의 시스템들을 악용하는 수법을 이용한다.
그렇다면, 국내 공격 사례에서 흔히 볼 수 있듯이, 악성코드에 감염된 다수의 시스템들을 악용하는 DDoS 공격를 네트워크 관점에서 살펴보자.

네트워크 관점에서 본 DDoS 공격

네트워크 관점에서 보면, DDoS 공격은 다수의 악성코드 감염 시스템을 통해 대량의 트래픽을 유발해 네트워크 대역폭을 소모시켜 정상적인 서비스를 할 수 없도록 만든다. 이 때 발생되는 트래픽은, 공격지의 서비스 종류에 따라 다르겠지만, 빠른 속도로 트래픽을 전달하거나 대량 패킷 데이터를 만들어내는 것이 보통이다.

국내에서 발생했던 두 차례의 예를 통해 네트워크 관점에서 DDoS 공격의 특징을 분석해보자.

[표 2] DDoS 공격 유형별 특징

3.4 DDoS 공격 시에는 HTTP, UDP, ICMP의 3가지 공격 유형이 발생되었는데, 패킷 분포 형태를 보면 HTTP가 가장 큰 비중을 차지하고 있다. 이것은 코드상 HTTP가 많이 발생할 수밖에 없는 구조로 공격 패킷이 생성돼 있었기 때문이다.


[그림 4] 3.4 DDoS 당시 사용된 공격 유형 비율

하지만, 이렇게 생성된 트래픽이 대량 트래픽을 생성하지는 않았다. 한 곳을 대상으로 공격하는 트래픽은 초당 25개 정도로, 패킷 크기는 [표 3]에서 보듯이 174바이트 정도였다.

[표 3] 악성코드 감염 시스템 수치별 공격 트래픽 유입 추정(공격 대상 1곳 기준)

이를 2009년 발생했던 7.7 DDoS 공격과 비교해보면 다음과 같다.

- 출발지 IP 위조 기능(IP Spoofing)을 포함하지 않음
- 7.7 DDoS 공격 때와 달리 패킷 전송에 Winpcap을 사용하지 않고, 윈도우의 기본 네트워크 소켓을 사용함
- 2차 공격 이후, 정부기관 1곳, 은행권 1곳 등 공격 대상을 2곳으로 한정
- 3차 공격 시 HTTP Flooding 공격으로만 시도하고 ICMP/UDP Flooding은 제외

3.4 DDoS와 마찬가지로 7.7 DDoS 때도 트래픽 비중은 그다지 크지 않았다. 공격 패킷의 헤더 정보와 페이로드(Payload)만 약간 달라졌을 뿐, 이용된 공격 형태가 비슷하고 트래픽의 비중이 크지 않았던 이유를 다음과 같이 추정할 수 있다.

첫째, 대처 능력을 사전에 판단해 보기 위함이다. 실제로 3.4 DDoS 발생 때에는 신속하게 대응해 피해를 최소화할 수 있었다.

둘째, 공격을 오랫동안 지속하기 위함이다. 사용자가 인지할 만큼 PC의 자원을 많이 사용하지 않으니 노출될 확률이 적어진다.

셋째, 사이버 공격으로 이용하기 위한 효과적인 공격 방법을 검증하기 위함이다. 사이버무기로서의 가능성을 알아보고자 시도한 검증 단계일 수도 있다.

3.4 DDoS는 그 목적이 뚜렷이 파악되지는 않았지만, 공격 대상들의 특징을 본다면 국외 사례들과 유사하다고 할 수 있다. 하지만 세부적인 공격 기법적인 측면에서 국내 DDoS 공격 사례들과 공통점이 있으면서도, 네트워크 패킷 관점에서는 차이를 보이는 특이한 사례다.

네트워크 디바이스를 노리는 DDoS 공격

앞서 국외에서 최근 발생한 DDoS 공격 사례들은 금전적인 목적보다는 특정 단체의 정치적인 의견을 알리기 위한 것이 많음을 살펴보았다. 공격 기법으로는 공개된 DDoS 공격 툴들을 이용하는 경우가 많다는 점도 알 수 있었다.

그러나 국내에서는 금전적인 목적을 위해 악성코드에 감염된 시스템들을 동원하는 사례가 많다는 것을 알 수 있었다.

그렇다면 앞으로 발생하게 될 DDoS 공격들은 어떠한 형태와 특징을 가지게 될까?
안드로이드(Android)와 아이폰(iPhone)으로 대표되는 스마트폰, 클라우드 서비스(Cloud Service) 등 여러 IT 기술적인 면들을 고려해본다면, 가까운 미래에 시스템들과 가정용 전자 제품들은 대부분 네트워크를 통해 인터넷으로 연결될 것이다. 네트워크로 연결되는 디바이스(Device)들이 증가하면, 각 디바이스들의 취약성을 악용한 DDoS 공격들도 증가할 것으로 예측할 수 있다.

[그림 5] 안드로이드 스마트폰에서 실행 가능한 DDoS 공격 툴

[그림 5]와 같이 어나니머스에 의해 안드로이드 스마트폰에서 동작하도록 제작된 DDoS 공격 툴을 보자. DDoS 툴이 스마트폰에서 동작 가능하다는 것은, 공격자가 스마트폰을 통해 시간과 장소에 제한을 받지 않고 언제든지 DDoS 공격을 가할 수 있다는 점을 의미하는 것이다. 즉, DDoS 공격을 목적으로 하는 악성코드가 스마트폰을 감염시켜 동작하도록 제작될 것이다. DDoS 공격의 목적 역시 인터넷을 통해 표출되는 여러 문화들의 다양성과 이해 관계들로 인해 더욱 복잡한 양상을 띨 것이다.

지금은 보안이라는 관점에서 네트워크로 연결되는 모든 디바이스들에 대한 통제와 관리를 심각하게 점검해야 할 시점이다. 이와 함께, 앞으로 발생할 다양한 목적의 DDoS 공격들에 대해 사회 제도적인 관점에서 어떻게 대처할 것인가도 진지하게 고민해봐야 할 것이다.