Memory forensics with volatility

11,742 views

Published on

2014년 2월, 3월 월간 안 원고 "볼라틸리티를 이용한 메모리 분석 사례" 초안

Published in: Technology
1 Comment
32 Likes
Statistics
Notes
No Downloads
Views
Total views
11,742
On SlideShare
0
From Embeds
0
Number of Embeds
4,278
Actions
Shares
0
Downloads
529
Comments
1
Likes
32
Embeds 0
No embeds

No notes for slide

Memory forensics with volatility

  1. 1. Memory Forensics with Volatility ASEC(AhnLab Security Emergence response Center) 분석팀 Senior Advanced Threat Researcher CISSP, CHFI 장영준 선임 연구원
  2. 2. Contents 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
  3. 3. 01 Memory Forensics
  4. 4. Memory Forensic의 필요성  Memory Forensic은 여러 프로그램들을 이용해 Memory를 분석하는 일련의 과정  Computer는 구조적으로 CPU에서 연산을 처리하기 위해 필수적으로 Memory에 Data를 적재하여야만 가능  이 과정에서 Computer에 존재하는 여러 Data들 중 Memory에만 존재하는 특유의 정보 추출 및 확인 가능  Memory Forensic을 위한 Memory 분석 프로그램들은 기본적으로 Memory에서 다음 정보들을 추출 1) Process와 Threads – 실행 중이거나 종료되었지만 Memory에 남아 있는 정보들 추출 2) Modules와 libraries – 실행 중이거나 종료되었던 Process 관련 Modules와 libraries 정보들 추출 3) Open Files와 sockets – 실행 중이거나 종료되었던 파일들과 Network 연결 관련 Socket 정보들 추출 4) Various Data Structures – Memory에만 존재하는 다양한 Data의 구조 정보들 추출  침해 사고 분석 과정에서 Memory Forensic은 악성코드의 감염 및 실행과 관련된 여러 주요 Data 확인 가능  침해 사고 분석 과정에서 Memory Forensic은 침해 사고 발생 당시의 다양한 정보들을 확인 가능 © AhnLab, Inc. All rights reserved.
  5. 5. 02 Windows Memory
  6. 6. 32Bit Windows의 Virtual Memory 구조  32Bit Windows 운영체제에서는 실행되는 모든 Process는 4GB의 Virtual Memory를 할당 받음  4GB의 Virtual Memory는 2GB의 User Mode와 2GB의 Kernel Mode로 구분 Process A 0x00000000 ~ 0x0000FFFF 64KB 보호영역 0x00010000 ~ 0x7FFEFFFF User Mode 2 GB 0x7FFF0000 ~ 0x7FFFFFFF 64KB 보호영역 0x80000000 ~ 0xFFFFFFFF Kernel Mode 2 GB © AhnLab, Inc. All rights reserved.
  7. 7. Virtual Memory와 Physical Memory 구조  모든 Process는 Virtual Address 영역을 가지고 있음  Physical Memory의 크기로 인해 Virtual Memory의 내용을 Disk로 이동하는 과정인 Paging 발생 Process A 0x00000000 ~ 0x0000FFFF 64KB 보호영역 Physical Memory A A B B 0x00010000 ~ 0x7FFEFFFF User Mode 2 GB C C D 0x7FFF0000 ~ 0x7FFFFFFF 64KB 보호영역 0x80000000 ~ 0xFFFFFFFF Kernel Mode 2 GB © AhnLab, Inc. All rights reserved. Page File Memory Dump 생성 영역으로 Memory Forensic 대상
  8. 8. 03 Windows Memory Dump and Analysis
  9. 9. win(32/64)dd.exe를 이용한 Memory Dump 생성  Win(32/64)dd.exe는 Memory Dump를 위해 2007년 Mattthieu Siuche가 개발하여 공개, 32/64 Bit 버전이 별도 존재  2008년 Moonsols (http://www.moonsols.com)에서 MoonSols Windows Memory Toolkit (http://www.moonsols.com/resources/) 로 배포 © AhnLab, Inc. All rights reserved.
  10. 10. DumpIt.exe를 이용한 Memory Dump 생성  DumpIt.exe는 2007년 Mattthieu Siuche가 개발한 Win(32/64)dd.exe를 응용하여 제작, 32/64 Bit 버전 구분 없이 실행 가능  2010년 Moonsols (http://www.moonsols.com)에서 MoonSols DumpIt (http://www.moonsols.com/resources/) 로 배포  특정 인자 값 입력 없이 dumpit.exe 실행만으로 동일 경로에 Memory Dump 생성 가능 © AhnLab, Inc. All rights reserved.
  11. 11. FTK Imager Lite를 이용한 Memory Dump 생성  FTK Imager Lite는 AccessData (http://www.accessdata.com/) 라는 Digital Forensic 전문 업체에서 개발한 상용 제품인 FTK(Forensic Toolkit)의 무료 버전 (http://www.accessdata.com/support/product-downloads)  상용 버전에 비해 기능적인 한계는 존재하나 Capture Memory, Create Disk Image와 Image Mounting 같은 기본적인 기능은 자 유롭게 사용 가능  AccessData에서는 현재 3.1.1.8 버전을 무료로 제공 중이며, 파일들은 약 75MB 크기로 USB에 복사 후 침해 사고 발생 시스템 에 연결 후 바로 사용 가능 © AhnLab, Inc. All rights reserved.
  12. 12. Volatility를 이용한 Memory Dump 분석  Volatility는 Python으로 제작되어 Memory Forensic을 위한 Memory 분석 시 많이 사용되는 프로그램 중 하나  현재 Volatility는 Volatile Systems (https://www.volatilesystems.com/) 에 의해 Volatility Framework를 Open Source (https://code.google.com/p/volatility/)로 공개  공개용으로 배포됨으로 다양한 Plugin들이 개발되고 Pentest를 위한 BackTrack 및 Kali Linux 배포 버전에도 포함됨 © AhnLab, Inc. All rights reserved.
  13. 13. Mandiant Redline 이용 Memory Dump 분석 (1)  침해 사고 대응 전문 업체인 Mandiant에서 개발해 무료로 배포하는 Redline (https://www.mandiant.com/resources/download/redline)  Windows GUI 기반 Memory 분석 프로그램으로 사용이 비교적 쉬우며, 빠르게 분석 진행 가능  Memory Dump 생성과 분석을 동시에 진행 할 수 있으나, 설치 및 실행을 위해 .NET Framework 4.0 (http://www.microsoft.com/kokr/download/details.aspx?id=24872 )필요 © AhnLab, Inc. All rights reserved.
  14. 14. Mandiant Redline 이용 Memory Dump 분석 (2)  MRI(Mandiant for Intelligent Response) 기능으로 의심스러운 항목은 붉은색으로 자동 표기  TimeLine 기능으로 Memory에 존재하는 정보들을 시간 순서로 정렬하여 나타냄 © AhnLab, Inc. All rights reserved.
  15. 15. VMWare를 이용한 Memory Dump 생성과 분석 (1)  2008년 Brett Shavers가 가상화 기술을 이용한 Computer Forensic 분석 기법을 공개 “Virtual Forensics : A Discussion of Virtual Machines Related to Forensics Analysis” (http://www.forensicfocus.com/downloads/virtual-machines-forensics-analysis.pdf)  VMWare는 다음의 주요 확장자 파일들로 구성 1) .Log – Virtual Machine에 대한 일반적인 활동 기록 파일 2) .VMDK –Guest OS에 대한 실질적인 Virtual Hard Drive 3) .VMEM –Guest OS에 대한 실질적인 Virtual Paging File 4) .VMSN – VMWare에서 생성하는 Snapshot 파일로, Guest OS에 대한 상태를 저장 5) .VMSD – VMWare에서 생성한 Snapshot 파일에 대한 Metadata 기록 파일 6) .NVRAM – Guest OS에 대한 BIOS 정보 기록 파일 7) .VMX – Guest OS에 대한 설정 기록 파일 8) .VMSS – Guest OS를 Suspend 상태로 변경 할 경우, 당시의 Guest OS 상태를 저장 한 파일  VMWare의 Guest OS 상태로 운영 중인 시스템의 Memory Forensic 분석 대상은 .VMEM 확장자 파일 © AhnLab, Inc. All rights reserved.
  16. 16. VMWare를 이용한 Memory Dump 생성과 분석 (2)  Guest OS의 Memory Forensic 분석을 위해 운영 중인 Guest OS를 Suspend 상태로 변경  Guest OS의 Suspend 상태로 변경 후 Virtual Paging File 인 .VMEM 파일을 대상으로 Memory Forensic 분석 수행 © AhnLab, Inc. All rights reserved.
  17. 17. VMWare를 이용한 Memory Dump 생성과 분석 (3)  2009년 Carnegie Mellon 대학에서 LiveView (http://liveview.sourceforge.net/) 를 이용해 Disk Image 파일을 VMWare Guest OS 변환  LiveView를 이용해 Disk Image 파일을 VMware Guest OS로 변경 후 Memory Forensic을 포함한 Live Response 수행  LiveView의 정상적인 실행을 위해서는 추가적인 프로그램 설치 필요 1) VMware Workstation 5.5 버전 이상 (http://www.vmware.com/products/workstation/workstation-evaluation) 2) Virtual Disk Development Kit 5.5 (http://www.vmware.com/support/developer/vddk/) 3) Java Runtime Environment (http://www.java.com/getjava/) © AhnLab, Inc. All rights reserved.
  18. 18. 04 What is Volatility
  19. 19. Volatility Project History  2006년 AAron Walters의 메모리 분석 관련 FATKit Project에서 출발해 Volatools Project로 발전 “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)  2007년 AAron Walters 가 주도하는 개발팀인 Volatile Systems (https://www.volatilesystems.com/) 에 의해 Volatility Framework를 Open Source (https://code.google.com/p/volatility/)로 공개  2008년 Open Memory Forensics Workshop (https://www.volatilesystems.com/default/omfw)에서 AAron Walters가 Volatility 1.3 버전 발 표 (https://www.volatilesystems.com/volatility/omfw/Walters_OMFW_2008.pdf)  현재 Volatile Systems에서는 Volatility Framework 개발과 함께 Plugins 사용 및 제작에 대한 전문적인 강의 진행 <Source : Volatility Google code, Volatile Systems> © AhnLab, Inc. All rights reserved.
  20. 20. Volatility Framework & Plugins (1)  Volatility Framework 버전 2.2 (https://code.google.com/p/volatility/wiki/Release22) 를 기준으로 다음 버전의 운영체제에서 생성된 Memory Dump 분석 지원 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  Note : Volatility Framework 버전 2.3 Beta (https://code.google.com/p/volatility/wiki/Release23) 은 다음 운영체제 추가 지원 OpenSuSE, Ubuntu, Debian, CentOS, Fedora, Mandriva 등 32-bit 10.5.x, 10.6.x Snow Leopard, 10.7.x Lion 64-bit 10.6.x Snow Leopard, 10.7.x Lion, 10.8.x Mountain Lion © AhnLab, Inc. All rights reserved.
  21. 21. Volatility Framework & Plugins (2)  Volatility Framework 버전 2.2를 기준으로 CommandReferance22 (https://code.google.com/p/volatility/wiki/CommandReference22) 에서 5 가지 영역으로 구분 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  Note : 본 문서에서는 4번째인 Windows Registry와 5번째인 Linux에 대해서는 다루지 않음 © AhnLab, Inc. All rights reserved.
  22. 22. 05 Installing Volatility on Windows and BackTrack
  23. 23. Volatility 실행을 위한 Windows 환경  Windows 환경에서 Volatility를 실행하기 위해 2가지 버전의 Volatility를 지원 1) volatility-2.2.standalone.exe - Volatility 2.2 Standalone Windows Program (https://volatility.googlecode.com/files/volatility-2.2.standalone.exe) 별도 프로그램 추가 설치 없이 바로 사용 가능 2) volatility-2.2.win32.exe - Volatility 2.2 Windows Module Installer (https://volatility.googlecode.com/files/volatility-2.2.win32.exe) Volatility Framework와 Plugin 들을 사용하기 위해 python-2.6 또는 python-2.7 추가 설치 필요  NOTE : Windows 환경은 보안 패치로 인해 Volatility 결과 오류가 발생 할 수 있음으로 Windows 환경에서 분석을 권장하지 않음 © AhnLab, Inc. All rights reserved.
  24. 24. Volatility 실행을 위한 Linux 환경 (1)  Linux Ubuntu Kernel로 제작된 BackTrack과 SIFT에서 Volatility를 지원 1) BackTrack (http://www.backtrack-linux.org/) Penetration Testing과 Forensic을 위한 목적으로 제작한 Ubuntu Kernel 기반 운영 체제 최신 버전인 5R3 (http://www.backtrack-linux.org/downloads/ )에는 Volatility 2.2 포함 2) SIFT(SANS Investigate Forensic Toolkit) SANS Institute에서 Forensic을 위한 목적으로 제작한 Ubuntu Kernel 기반 운영 체제 최신 버전인 2.14 (http://computer-forensics.sans.org/community/downloads)에는 Volatility 2.0 포함 © AhnLab, Inc. All rights reserved.
  25. 25. Volatility 실행을 위한 Linux 환경 (2)  Linux 환경에서 Volatility 의 모든 Plugins을 사용하기 위해서는 추가적인 프로그램 설치가 필요 1) SVN and Basic Dependencies # apt-get install subversion pcregrep libpcre++-dev python-dev -y 2) Distorm3 (https://code.google.com/p/distorm/) - Disassembler Library For x86/AMD64 # wget https://distorm.googlecode.com/files/distorm3.zip # unzip distorm3.zip # cd distorm3 # python setup.py build # python setup.py build install 3) Yara (https://code.google.com/p/yara-project/) - A malware identification and classification tool # wget https://yara-project.googlecode.com/files/yara-1.7.tar.gz # tar -xvzf yara-1.7.tar.gz # cd yara-1.7 # ./configure # make # make install  NOTE : 모든 code는 BackTrack 5R3에서 테스트 되었음 © AhnLab, Inc. All rights reserved.
  26. 26. Volatility 실행을 위한 Linux 환경 (3) 4) Yara-Python (https://code.google.com/p/yara-project/) # wget https://yara-project.googlecode.com/files/yara-python-1.7.tar.gz # tar -xvzf yara-python-1.7.tar.gz # cd yara-python-1.7 # python setup.py build # python setup.py build install 5) GMP (http://gmplib.org/) # apt-get install libgmp3-dev 6) PyCrypto (https://www.dlitz.net/software/pycrypto/) - The Python Cryptography Toolkit # wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.3.tar.gz # tar -xzvf pycrypto-2.3.tar.gz # cd pycrypto-2.3 # python setup.py build # python setup.py build install  NOTE : Ubuntu Kernel을 사용하는 BackTrack에서는 다음 명령을 추가 실행하여야 함 # echo “/usr/local/lib” >> /etc/ld.so.conf # ldconfig  NOTE : 모든 code는 BackTrack 5R3에서 테스트 되었음 © AhnLab, Inc. All rights reserved.
  27. 27. 06 Memory analysis using Volatility
  28. 28. Volatility를 이용한 Memory 분석 방법론 (1)  확보한 Memory Dump는 Volatility를 이용하여 다음과 같은 6단계의 절차로 Memory 분석을 진행 운영체제 분석 © AhnLab, Inc. All rights reserved. Process 분석 Network 분석 DLL 및 Thread 분석 String 분석 Registry 분석
  29. 29. Volatility를 이용한 Memory 분석 방법론 (2) 1) 운영체제 정보 어떠한 운영체제에서 생성한 Memory Dump인지 분석 imageinfo - 생성한 Memory Dump의 운영체제, Service Pack과 Hardware 정보들을 나열 2) Process 분석 생성한 Memory Dump에서 실행 중이거나 은폐된 Process 및 그와 관련된 정보들을 분석 pslist - 실행 중인 Process 정보들을 나열 psscan - 실행 중인 Process 정보들과 함께 이미 종료된 Process 정보도 나열 psxview - pslist와 psscan에서 확인 한 Process 정보들을 비교하여 나열함으로, 은폐되어 있는 Process 정보 획득 pstree - pslist와 유사한 정보를 보여주나 Parent와 Child Process 간의 상관 관계를 나열 procexedump – Process의 Memory 영역에서 Slack space를 포함하지 않고 Binary 형태로 추출 volshell – Memory Dump를 windbg와 유사한 형식으로 분석 3) Network 정보 생성한 Memory Dump에서 활성화되거나 은폐된 Network 및 그와 관련된 정보들을 분석 connections - 활성화 상태의 Network 연결 정보 나열, Windows XP, Windows 2003 Server만 사용 가능 connscan - 활성화 상태의 Network 연결 정보와 함께 이미 종료된 연결 정보도 나열 Windows XP, Windows 2003 Server만 사용 가능 netscan – 활성화 상태의 Network 연결 정보를 보여주나, Windows Vista와 7 그리고 Windows 2008 Server에서만 사용 가능 © AhnLab, Inc. All rights reserved.
  30. 30. Volatility를 이용한 Memory 분석 방법론 (3) 4) DLL 및 Thread 분석 특정 Process에서 load 한 DLL 정보나 Thread 정보들을 분석 dlllist - 특정 Process에서 load한 DLL들의 정보를 분석 ldrmodules - 특정 Process나 DLL에 의해 은폐되어진 DLL 정보를 분석 dlldump - 특정 Process에서 load한 DLL을 Binary 형태로 추출 Malfind - User mode 형태로 은폐되어 있거나 injection 되어 있는 코드 또는 DLL 정보들을 분석 apihooks – User 및 Kernel Mode에서 API Hooking 정보를 분석 5) String 분석 생성한 Memory Dump 전체 또는 Binary 형태로 추출한 Process 및 DLL Memory dump에서 특정 string 분석 yarascan - YARA를 이용하여, User 및 Kernel Mode memory에 포함 된 Byte 순서, ANSI 및 Unicode 문자 검색 6) Registry 분석 생성한 Memory Dump 전체에서 Windows Registry 관련 정보들을 분석 printkey - 특정 Registry Key에 포함되어 있는 Subkeys, Values와 Data를 검색하여 나열 userassist - Memory Dump에서 UserAssist 관련 Registry Key 정보를 추출  NOTE : UserAssist Key는 Windows에서 실행되었던 프로그램의 목록, 실행 횟수와 마지막 실행시간 등의 정보를 보관 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUserAssist © AhnLab, Inc. All rights reserved.
  31. 31. 07 Case Study and Hands-on Lab
  32. 32. Case Study Summary 1) Backdoor/Win32.Rbot.R327 (a.k.a Win32/IRCBot.worm.variant, W32.IRCBot, Backdoor.Win32.Rbot.aftu) 기존에 많이 발견되는 IRCBot 변형의 형태 IRC Chanel이 개설 된 C&C Server와 통신으로 Operator의 명령에 따라 감염된 system에서 다양한 악의적인 기능 수행 2) Trojan/Win32.Oficla (a.k.a Win-Trojan/Oficla.82432.C, Trojan.Sasfis, Trojan.Win32.Oficla.bv) Bredolab 변형 중 하나로 Zeus와 SpyEye의 Source Code에서 파생되어 제작되어진 형태 정상 Windows system process인 svchost.exe의 memory 영역에 Code Injection 수행 외부 C&C Server와 통신 이후 Operator의 명령에 따라 FakeAV 나 다른 악성코드 다운로드 후 실행 3) Trojan/Win32.Buzus.C8082 (a.k.a Win32/Prolaco.worm.607232, W32.Ackantta.B@mm, Trojan.Win32.Buzus.dbfm) Prolaco worm 변형으로 Social Engineering 기법을 이용한 E-mail로 유포되는 Mass-mailer 형태 감염된 system에서 User Mode 은폐 기법으로 자신의 process를 숨긴 후 외부로 worm이 첨부된 다량의 E-mail 발송 4) Backdoor/Win32.Blakken (a.k.a Backdoor.Win32.Blakken.bx, Trojan.AVKiller.AS) 외부 공격자의 명령에 따라 원격 제어 등의 다양한 악의적인 기능을 수행하는 Backdoor 형태의 악성코드 감염된 system에서 정상 Windows system process인 svchost.exe의 Handle을 Open 한 후 자신의 code 전체를 Injection User Mode 은폐 기법으로 자신의 process를 은폐 © AhnLab, Inc. All rights reserved.
  33. 33. Backdoor/Win32.Rbot.R327 (1)  Backdoor/Win32.Rbot.R327 감염된 system에서 Memory Dump 작업으로 생성한 rbot_infected_mem.raw 파일 준비  Volatility를 이용해 imageinfo 명령으로 준비한 rbot_infected_mem.raw의 분석 진행  감염된 system의 운영체제 정보와 Memory Dump를 수행한 시간 정보 획득 © AhnLab, Inc. All rights reserved.
  34. 34. Backdoor/Win32.Rbot.R327 (2)  psscan 명령과 pslist 명령이 조합된 psxview 명령으로 감염된 system에서 은폐 기능으로 동작하는 process 확인 © AhnLab, Inc. All rights reserved.
  35. 35. Backdoor/Win32.Rbot.R327 (3)  process의 생성 시간과 종료 시간 정보를 획득 할 수 있는 psscan 명령으로 process 관련 정보들 추가 획득 © AhnLab, Inc. All rights reserved.
  36. 36. Backdoor/Win32.Rbot.R327 (4)  실행 중인 process들의 상관 관계 정보를 획득하기 위해 pstree 명령으로 추가 정보 획득 © AhnLab, Inc. All rights reserved.
  37. 37. Backdoor/Win32.Rbot.R327 (5)  Network 관련 정보 획득을 위해 Memory Dump 생성 당시 활성화 되어 있는 network 정보를 보여주는 connections 명령 실행 © AhnLab, Inc. All rights reserved.
  38. 38. Backdoor/Win32.Rbot.R327 (6)  감염된 system에서 network 관련 추가 정보를 획득하기 위해 connscan 명령 실행 © AhnLab, Inc. All rights reserved.
  39. 39. Backdoor/Win32.Rbot.R327 (7)  악성코드로 의심되는 process의 memory 영역을 파일 형태로 추출해내기 위한 procexedump 명령 실행  Memory Dump에서 특정 process의 memory 영역을 파일 형태로 추출 할 경우 파일명은 executable.[PID].exe로 고정  추출한 특정 process의 memory 영역을 추출한 파일을 대상으로 Backtrack에 포함된 strings 명령 실행  해당 strings 명령은 Binary에 포함되어 있는 문자열들을 추출하여 사용자가 읽을 수 있도록 지원 © AhnLab, Inc. All rights reserved.
  40. 40. Backdoor/Win32.Rbot.R327 (8)  Backtrack에 포함된 strings 명령으로 Binary 내부 문자열을 추출한 text 파일 생성  특정 process의 memory 영역으로 생성한 Binary 내부 문자열에서 IRCBot으로 의심되는 문자열 다수 존재  내부 문자열 중에서 Windows Registry와 관련된 문자열 다수 존재 © AhnLab, Inc. All rights reserved.
  41. 41. Backdoor/Win32.Rbot.R327 (9)  IRCBot으로 의심되는 문자열들 중 “IRC”를 의심스러운 process의 memory 영역에서 yara를 이용해 검색  Yara 검색을 위해 yarascan 명령과 함께 –yara-rules=“IRC” 사용 © AhnLab, Inc. All rights reserved.
  42. 42. Backdoor/Win32.Rbot.R327 (10)  Memory Dump에서 Windows Registry 검색을 위해 printkey 명령과 함께 인자 값으로 추출한 문자열 사용  “HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun” 영역의 “Windows Update” Key에 의심스러운 파 일이 존재  추가적으로 “HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices” 에도 의심스러운 파일이 “Windows Update” 명칭의 Key로 존재 © AhnLab, Inc. All rights reserved.
  43. 43. Lessons Learned  Backdoor/Win32.Rbot.R327의 process가 은폐 형태로 동작하지 않음을 쉽게 파악 할 수 있음  악성코드가 생성한 process는 process tree 가 보여주는 process 사이의 상관 관계로 비교적 쉽게 파악 할 수 있음  Memory Dump에 남아 있는 활성화 상태의 network 정보로 인해 C&C Server의 IP 주소 확인 가능  악성코드가 생성한 process memory 영역을 파일 형태로 추출은 가능하나 IAT(Import Address Table) 복구 되지 않음  전체 memory Dump 또는 특정 process memory 영역만을 대상으로 Yara를 이용해 string 단위 검색 가능  제한적이지만 악성코드에 감염된 windows system의 일부 Registry 영역 검색으로 악성코드의 auto startup 영역 검색 가능 © AhnLab, Inc. All rights reserved.
  44. 44. Trojan/Win32.Oficla (1)  Trojan/Win32.Oficla 감염된 system에서 Memory Dump 작업으로 생성한 sasfis_infected_mem.raw 파일 준비  Volatility를 이용해 imageinfo 명령으로 준비한 sasfis_infected_mem.raw의 분석 진행  감염된 system의 운영체제 정보와 Memory Dump를 수행한 시간 정보 획득 © AhnLab, Inc. All rights reserved.
  45. 45. Trojan/Win32.Oficla (2)  psscan 명령과 pslist 명령이 조합된 psxview 명령으로 감염된 system에서 은폐 기능으로 동작하는 process 확인 © AhnLab, Inc. All rights reserved.
  46. 46. Trojan/Win32.Oficla (3)  process의 생성 시간과 종료 시간 정보를 획득 할 수 있는 psscan 명령으로 process 관련 정보들 추가 획득 © AhnLab, Inc. All rights reserved.
  47. 47. Trojan/Win32.Oficla (4)  실행 중인 process들의 상관 관계 정보를 획득하기 위해 pstree 명령으로 추가 정보 획득 © AhnLab, Inc. All rights reserved.
  48. 48. Trojan/Win32.Oficla (5)  감염된 system의 network 정보를 획득하기 이해 connections 명령 실행  활성화되어 있는 network 정보가 존재하지 않음  감염된 system에서 network 관련 추가 정보를 획득하기 위해 connscan 명령 실행 © AhnLab, Inc. All rights reserved.
  49. 49. Trojan/Win32.Oficla (6)  의심 행위를 보이는 정상 Windows system process인 svchost.exe의 memory 영역에 Code Injection 정보 획득을 위해 malfind 명령 실행 Disassembled Code © AhnLab, Inc. All rights reserved.
  50. 50. Trojan/Win32.Oficla (7)  의심스러운 행위를 보인 정상 Windows system process인 svchost.exe의 memory에 Code Injection에 대한 추가 정보 획득을 위 해 volshell 명령 실행  실행한 volshell 명령 창에서 cc 명령으로 Code Injection이 존재하는 정상 Windows system process인 svchost.exe의 memory 영역 호출 © AhnLab, Inc. All rights reserved.
  51. 51. Trojan/Win32.Oficla (8)  실행한 volshell 명령 창에서 db 명령 실행으로 Code Injection 영역이 시작되는 0x90000 부터 640 byte 크기 만큼 호출 © AhnLab, Inc. All rights reserved.
  52. 52. Trojan/Win32.Oficla (9)  의심스러운 행위를 보인 정상 Windows system process인 svchost.exe의 module 정보를 획득하기 위해 ldrmodules 명령 실행  svchost.exe의 process가 load한 module 중 1.tmp을 dlldump 명령으로 memory dump에서 파일 형태로 추출 © AhnLab, Inc. All rights reserved.
  53. 53. Trojan/Win32.Oficla (10)  memory dump에서 추출한 1.tmp 파일을 대상으로 Backtrack에 포함된 strings 명령 실행  해당 strings 명령은 Binary에 포함되어 있는 문자열들을 추출하여 사용자가 읽을 수 있도록 지원  Backtrack에 포함된 strings 명령으로 Binary 내부 문자열을 추출한 text 파일 생성  추출한 1.tmp 파일 내부 문자열에서 특정 웹 사이트 주소 관련 문자열 존재 © AhnLab, Inc. All rights reserved.
  54. 54. Trojan/Win32.Oficla (11)  전체 memory dump를 대상으로 yara를 이용해 웹 사이트 검색  Yara 검색을 위해 yarascan 명령과 함께 –yara-rules=“babun.bb.php” 사용 © AhnLab, Inc. All rights reserved.
  55. 55. Lessons Learned  process가 은폐 형태로 동작하지 않음을 쉽게 파악 할 수 있음  비정상적인 windows system process를 process tree 가 보여주는 process 사이의 상관 관계로 비교적 쉽게 파악 할 수 있음  Memory dump에 남아 있는 감염된 windows system의 network 접속 이력으로 C&C Server의 IP 주소 확인 가능  특정 process memory 영역에 악성코드에 의한 code injection 구현되어도 이를 확인 가능  Code injection 되어 있는 영역을 windbg 처럼 사용자와 상호작용으로 추가적인 분석 가능  특정 process memory 영역에 DLL 형태와 같이 injection 되어 있는 memory 영역을 파일 형태로 추출 가능  전체 memory Dump 또는 특정 process memory 영역만을 대상으로 Yara를 이용해 string 단위 검색 가능 © AhnLab, Inc. All rights reserved.
  56. 56. Trojan/Win32.Buzus.C8082 (1)  Trojan/Win32.Buzus.C8082 감염된 system에서 Memory Dump 작업으로 생성한 prolaco_infected_mem.raw 파일 준비  Volatility를 이용해 imageinfo 명령으로 준비한 prolaco_infected_mem.raw의 분석 진행  감염된 system의 운영체제 정보와 Memory Dump를 수행한 시간 정보 획득 © AhnLab, Inc. All rights reserved.
  57. 57. Trojan/Win32.Buzus.C8082 (2)  psscan 명령과 pslist 명령이 조합된 psxview 명령으로 감염된 system에서 은폐 기능으로 동작하는 process 확인 © AhnLab, Inc. All rights reserved.
  58. 58. Trojan/Win32.Buzus.C8082 (3)  process의 생성 시간과 종료 시간 정보를 획득 할 수 있는 psscan 명령으로 process 관련 추가 정보들 획득 © AhnLab, Inc. All rights reserved.
  59. 59. Trojan/Win32.Buzus.C8082 (4)  감염된 system의 활성화 되어 있는 network 정보를 획득하기 이해 connections 명령 실행 © AhnLab, Inc. All rights reserved.
  60. 60. Lessons Learned  악성코드의 process가 은폐 형태로 동작하는 것을 쉽게 파악 할 수 있음  Memory Dump에 남아 있는 활성화 상태의 network 정보로 인해 악성코드가 SMTP 관련 동작을 쉽게 파악  User Mode로 동작하는 은폐 형태 악성코드의 process memory 영역에 접근 할 수 없음  악성코드의 process memory 영역에 접근 할 수 없음으로, 해당 memory 영역 역시 파일로 추출 할 수 없음  User mode 은폐 형태의 악성코드의 경우에는 은폐 여부와 활성화 또는 과거의 network 정보들만 파악 할 수 있음 © AhnLab, Inc. All rights reserved.
  61. 61. Backdoor/Win32.Blakken (1)  Backdoor/Win32.Blakken 감염된 system에서 Memory Dump 작업으로 생성한 blakken_infected_mem.raw 파일 준비  Volatility를 이용해 imageinfo 명령으로 준비한 blakken_infected_mem.raw의 분석 진행  감염된 system의 운영체제 정보와 Memory Dump를 수행한 시간 정보 획득 © AhnLab, Inc. All rights reserved.
  62. 62. Backdoor/Win32.Blakken (2)  psscan 명령과 pslist 명령이 조합된 psxview 명령으로 감염된 system에서 은폐 기능으로 동작하는 process 확인 © AhnLab, Inc. All rights reserved.
  63. 63. Lessons Learned  악성코드에 의해 windows system process가 은폐 형태로 동작하는 것을 쉽게 파악 할 수 있음  은폐 형태로 동작하는 windows system process의 memory 영역에 접근 할 수 없음  은폐 형태로 동작하는 windows system process의 Handle과 Module 영역 역시 접근 할 수 없음  Handle과 Module 영역에 접근 할 수 없음으로 관련 파일들 역시 memory 영역에서 추출 할 수 없음  악성코드에 의해 Process 은폐 외에 network 접속 정보를 은폐 할 경우에도 이를 확인 할 수 없음 © AhnLab, Inc. All rights reserved.
  64. 64. 08 Conclusion
  65. 65. Conclusion  장점  Memory에만 존재하는 휘발성 정보들로부터 악성코드 감염 시스템의 다양한 정황적 정보들을 확보 할 수 있음  생성한 Memory Dump를 대상으로 다양한 Memory 분석 툴과 기법들을 반복적으로 적용과 검토 가능  Volatility와 추가 Plug-in 모두 Python으로 제작되어, 운영체제 제약을 받지 않는 이식성과 확장성이 뛰어남  Python의 다양한 기능으로 인해 system 적인 자동화와 부가적인 응용성이 뛰어남  단점  Memory Forensics 만으로는 악성코드 감염 시스템을 완벽하게 분석 할 수 없음  악성코드 감염 시스템의 완벽한 분석을 위해서는 Memory Forensics과 다른 Computer Forensics 방법론들이 병행되어야 함  Volatility를 이용해 Memory Dump에 존재하는 Windows Registry 정보 분석에는 한계가 존재  Memory Dump로부터 User Mode 또는 Kernel Mode 은폐 형태의 악성코드 탐지는 가능하나 추가적인 분석은 어려움 © AhnLab, Inc. All rights reserved.
  66. 66. References
  67. 67. Books (1)  인사이드 윈도우 포렌식 (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 스냅샷 취득 © AhnLab, Inc. All rights reserved.
  68. 68. Books (2)  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 © AhnLab, Inc. All rights reserved.
  69. 69. Papers  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 © AhnLab, Inc. All rights reserved.
  70. 70. DESIGN YOUR SECURITY

×