본문 바로가기

디지털 메모리 포렌식 방법

네트워크 조회 수 26 추천 수 0 2017.07.27 07:57:15
출처 :  

 

BH-US-06-Burdach-01.jpg

 

BH-US-06-Burdach-02.jpg

 

BH-US-06-Burdach-03.jpg

 

BH-US-06-Burdach-04.jpg

 

BH-US-06-Burdach-05.jpg

 

BH-US-06-Burdach-06.jpg

 

BH-US-06-Burdach-07.jpg

 

BH-US-06-Burdach-08.jpg

 

BH-US-06-Burdach-09.jpg

 

BH-US-06-Burdach-10.jpg

 

BH-US-06-Burdach-11.jpg

 

BH-US-06-Burdach-12.jpg

 

BH-US-06-Burdach-13.jpg

 

BH-US-06-Burdach-14.jpg

 

BH-US-06-Burdach-15.jpg

 

BH-US-06-Burdach-16.jpg

 

BH-US-06-Burdach-17.jpg

 

BH-US-06-Burdach-18.jpg

 

BH-US-06-Burdach-19.jpg

 

BH-US-06-Burdach-20.jpg

 

BH-US-06-Burdach-21.jpg

 

BH-US-06-Burdach-22.jpg

 

BH-US-06-Burdach-23.jpg

 

BH-US-06-Burdach-24.jpg

 

BH-US-06-Burdach-25.jpg

 

BH-US-06-Burdach-26.jpg

 

BH-US-06-Burdach-27.jpg

 

BH-US-06-Burdach-28.jpg

 

BH-US-06-Burdach-29.jpg

 

BH-US-06-Burdach-30.jpg

 

BH-US-06-Burdach-31.jpg

 

BH-US-06-Burdach-32.jpg

 

BH-US-06-Burdach-33.jpg

 

BH-US-06-Burdach-34.jpg

 

BH-US-06-Burdach-35.jpg

 

BH-US-06-Burdach-36.jpg

 

BH-US-06-Burdach-37.jpg

 

BH-US-06-Burdach-38.jpg

 

BH-US-06-Burdach-39.jpg

 

BH-US-06-Burdach-40.jpg

 

BH-US-06-Burdach-41.jpg

 

BH-US-06-Burdach-42.jpg

 

BH-US-06-Burdach-43.jpg

 

BH-US-06-Burdach-44.jpg

 

BH-US-06-Burdach-45.jpg

 

BH-US-06-Burdach-46.jpg

 

BH-US-06-Burdach-47.jpg

 

BH-US-06-Burdach-48.jpg

 

BH-US-06-Burdach-49.jpg

 

BH-US-06-Burdach-50.jpg

 

BH-US-06-Burdach-51.jpg

 

BH-US-06-Burdach-52.jpg

 

BH-US-06-Burdach-53.jpg

 

 

 

 

Physical Memory Forensics

Mariusz Burdach

Overview

• Introduction

• Anti-forensics

• Acquisition methods

• Memory analysis of Windows & Linux

– Recovering memory mapped files – Detecting hidden data – Verifying integrity of core memory components

• Tools

• Q & A

Analysis Types

Application Analysis

Swap Space Analysis

File System

Database Analysis

Analysis

Volume Analysis Memory Analysis

Physical Storage Media Analysis Network Analysis

Source: „File System Forensic Analysis”, Brian Carrier

RAM Forensics

• Memory resident data

• Correlation with Swap Areas

• Anti-Forensics against the data:

– Data contraception – Data hiding – Data destruction

• Anti-Forensic methods:

– Data contraception against File System Analysis – Data hiding against Memory Analysis

In-memory data

• Current running processes and terminated processes

• Open TCP/UDP ports/raw sockets/active connections

• Memory mapped files

– Executable, shared, objects (modules/drivers), text files

• Caches

– Web addresses, typed commands, passwords, clipboards,

SAM database, edited files

• Hidden data and many more

• DEMO

Persistence of Data in Memory

• Factors:

• System activity

• Main memory size

• Data type

• Operating system

Above example*: Long-term verification of DNS server: (OS: Solaris 8, RAM: 768 MB) Method: Tracking page state changing over time. Result: 86 % of the memory never changes.

*Source: „Forensic Discovery”, Dan Farmer, Wietse Venema

Anti-forensics

• Syscall proxying - it transparently „proxies” a process’ system calls to a remote server:

– CORE Impact

• MOSDEF - a retargetable C compiler, x86 assembler & remote code linker

– Immunity CANVAS

• In-Memory Library Injection – a library is loaded into memory without any disk activity:

– Metasploit’s Meterpreter (e.g. SAM Juicer) – DEMO

Anti-forensics

• Anti-forensic projects focused on data contraception:

– „Remote Execution of binary without creating a file on disk”

by grugq (Phrack #62) – „Advanced Antiforensics : SELF” by Pluf & Ripe (Phrack

#63) – DEMO

• In memory worms/rootkits

– Their codes exist only in a volatile memory and

they are installed covertly via an exploit – Example: Witty worm (no file payload)

Anti-forensics

• Hiding data in memory:

– Advanced rootkits

• Evidence gathering or incident response tools can be cheated

• Examples:

– Hacker Defender/Antidetection – suspended – FUTo/Shadow Walker – Offline analysis will defeat almost all

methods

Anti-forensics

• DKOM (Direct Kernel Object Manipulation)

– Doubly Linked List can be abused – The FU rootkit by Jamie Butler

– Examples: Rootkit technologies in the wild*

Worms that uses DKOM & Physical Memory:

• W32.Myfip.H@mm

• W32.Fanbot.A@mm

e

EPROCESS

BLINK

BEFORE AFTER

P

r

o

c

e

s

s

t

o

h

id

EPROCESS

EPROCESS

EPROCESS

EPROCESS

FLINK

FLINK

FLINK

FLINK

FLINK

BLINK

BLINK

BLINK

BLINK

*Source: „Virus Bulletin” December, 2005, Symantec Security Response, Elia Florio

EPROCESS

FLINK

BLINK

Identifying anti-forensic tools in memory image

• AF tools are not designed to be hidden against Memory Analysis

– Meterpreter

• Libraries are not shared

• Server: metsrv.dll

• Libraries with random name ext??????.dll – SELF

• Executed in memory as an additional process – memory mapped files can be recovered even after process termination

Acquisition methods

• All data in a main memory is volatile – it refers to data on a live system. A volatile memory loses its contents when a system is shut down or rebooted

• It is impossible to verify an integrity of data

• Acquisition is usually performed in a timely manner (Order of Volatility - RFC 3227)

• Physical backup instead of logical backup

• Volatile memory acquisition procedures can be:

– Hardware-based – Software-based

Hardware-based methods

• Hardware-based memory acquisitions

– We can access memory without relying on the

operating system, suspending the CPU and using DMA (Direct Memory Access) to copy contents of physical memory (e.g. TRIBBLE – PoC Device)

• Related work (Copilot Kernel Integrity Monitor, EBSA- 285) – The FIREWIRE/IEEE 1394 specification allows clients’ devices for a direct access to a host memory, bypassing the operating system (128 MB = 15 seconds)

• Example: Several demos are available at http://blogs.23.nu/RedTeam/stories/5201/ by RedTeam

Software-based method

• Software-based memory acquisitions:

– A trusted toolkit has to be used to collect volatile

data

• DD for Windows - Forensic Acquisition Utilities & KNTDD are available at http://users.erols.com/gmgarner/

• DD for Linux by default included in each distribution (part of GNU File Utilities) – Every action performed on a system, whether

initiated by a person or by the OS itself, will alter the content of memory:

• The tool will cause known data to be written to the source

• The tool can overwrite evidence – It is highly possible to cheat results collected in

this way

Linux Physical memory device

• /dev/mem – device in many Unix/Linux systems (RAW DATA)

• /proc/kcore – some pseudo-filesystems provides access to a physical memory through /proc

– This format allows us to use the gdb tool to analyse memory image, but we can simplify tasks by using some tools

Windows Physical memory device

• \\.\PhysicalMemory - device object in Microsoft Windows 2000/2003/XP/VISTA (RAW DATA)

• \\.\DebugMemory - device object in Microsoft Windows 2003/XP/VISTA (RAW DATA)

• Simple software-based acquisition procedure

➢ dd.exe if=\\.\PhysicalMemory

of=\\<remote_share>\memorydump.img

• Any Windows-based debugging tool can analyse a physical memory „image” after conversion to Microsoft crashdump format

– http://computer.forensikblog.de/en/2006/03/dmp_file_struct

ure.html

Problems with Software-based method

➢An attacker can attack the tool

➢Blocking access to pages which are

mapped with different memory types http://ntsecurity.nu/onmymind/2006/2006-06-01.html ➢Problems with access to a physical memory

from user level

➢Windows 2003 SP1+ & Vista ➢Linux

➢SYS_RAWIO capability of Capability Bounding Set ➢It is vital to use kernel driver

Why physical backup is better?

• Limitations of logical backup

– Partial information

• selected data

• only allocated memory – Rootkit technologies – Many memory and swap space modification

• Incident Response (First Response) Systems

– Set of tools

• Forensic Server Project

• Foundstone Remote Forensics System – Direct calls to Windows API

• FirstResponse - Mandiant

• EnCase Enterprise Edition – Cheating IR tools (DEMO)

Preparation

• Useful files (acquired from a file system): – Kernel image files (ntoskrnl.exe, vmlinux-2.x) – Drivers/modules/libraries – Configuration files (i.e. SAM file, boot.ini)

• These files must be trusted

– File Hash Databases can be used to compare hash sums

• Map of Symbols – System.map file – Some symbols are exported

by core operating system files

System identification

• Information about the analysed memory dump

– The size of a page =4096 (0x1000) bytes – The total size of the physical memory

• Physical Address Extension (PAE)

• HIGHMEM = 896 MB – Architecture 32-bit/64-bit/IA-64/SMP

• Memory layout

– Virtual Address Space/Physical Address Space – User/Kernel land

• Windows kernel offset at 0x80000000

• Linux kernel offset at 0xC0000000 – (Windows) The PFN Database at 0x80C00000 – (Linux) The Mem_Map Database at 0xC1000030 – (Windows) The PTE_BASE at 0xC0000000 (on a non-PAE systems) – Page directory – each process has only one PD

• Knowledge about internal structures is required

(Windows) PTE address = PTE_BASE + (page directory index) * PAGE_SIZE

+ (page table index) * PTE size

(Linux) PA = VA – PAGE_OFFSET

Virtual ->Physical (x86)

Physical ->Virtual (x86)

• PFN & mem_map databases

• Entries represent each physical page of memory on the system (not all pages!)

PFN 000263A3 at address 813D8748

flink 000002D4 blink / share count 00000001 pteaddress E42AF03C

reference count 0001 Cached color 0

restore pte F8A10476 containing page 02597C Active P

Shared

Page Table Entries

• Page Table Entry

• There are PAGE_SHIFT (12) bits in 32-bit value that are free for status bits of the page table entry

• PTE must be checked to identify the stage of a page

• PFN * 0x1000 (Page size) = Physical Address

Correlation with Swap Space

• Linux: A mm_struct contains a pointer to the Page Global Directory (the pgd field)

• Windows: A PCB substructure contains a pointer to the Directory Table Base

• Page Table entries contain index numbers to swapped-out pages when the last-significant bit is cleared

➢Linux: (Index number x 0x1000 (swap header)) +

0x1000 = swapped-out page frame ➢Windows: Index number x 0x1000 = swapped-out

page frame

Methods of analysis

• Strings searching and signatures matching

– extracting strings from images (ASCII &

UNICODE) – identifying memory mapped objects by

using signatures (e.g. file headers, .text sections)

• Interpreting internal kernel structures

• Enumerating & correlating all page frames

Strings & signatures searching

• Any tool for searching of ANSI and UNICODE strings in binary images

– Example: Strings from Sysinternals or WinHex

• Any tool for searching of fingerprints in binary images

– Example: Foremost

• Identifying process which includes suspicious content:

– Finding PFN of Page Table which points to page frame which

stores the string – Finding Page Directory which points to PFN of Page Table

• DEMO

LINUX internal structures

Zones and Memory Map array

• Physical memory is partitioned into 3 zones:

– ZONE_DMA = 16 MB – ZONE_NORMAL = 896 MB – 16 MB – ZONE_HIGHMEM > 896 MB

• The mem_map array at 0xC1000030 (VA)

Important kernel structures

• task_struct structure – mm_struct structure – vm_area_struct structure – inode & dentry structures – e.g. info about

files and MAC times – address_space structure

• mem_map array

– Page descriptor structure

Relations between structures

Windows internal structures

Important kernel structures

• EPROCESS (executive process) block

– KPROCESS (kernel process) block – ETHREAD (executive thread) block – ACCESS_TOKEN & SIDs – PEB (process environment) block – VAD (virtual address descriptor) – Handle table – CreationTime - a count of 100-nanosecond intervals since

January 1, 1601 – Data Section Control Area

• Page frames

• PFN (Page Frame Number) Database

– PFN entries

Relations between structures

Enumerating processes

• Linux

– init_task_union (process number 0)

• The address is exported by a kernel image file

• The address is available in the System.map file

• String searches method – init_task_union struct contains list_head structure – All processes (task_structs) are linked by a doubly

linked list

• Windows

– PsInitialSystemProcess (ntoskrnl.exe) = _EPROCESS

(System) – _EPROCESS blocks are linked by a doubly linked list

Linux: Dumping memory mapped files

• Page Tables to verify the stage of pages

• An address_space struct points to all page descriptors

• Page descriptor

– 0x0 –> list_head struct //doubly linked list – 0x8 –> mapping //pointer to an address_space – 0x14 –> count //number of page frames – 0x34 –> virtual //physical page frame

next page descriptor

0x010abfd8: 0xc1074278 0xc29e9528 0xc29e9528 0x00000001

address_space

0x010abfe8: 0xc1059c48 0x00000003 0x010400cc 0xc1095e04 0x010abff8: 0xc10473fc 0x03549124 0x00000099 0xc1279fa4 0x010ac008: 0xc3a7a300 0xc3123000 (virtual - 0xc0000000) = PA

Linux: Dumping memory mapped files

• Signature (strings or hex values) searching

• Reconstructing objects:

– Finding page descriptor which points to page frame which stores the signature (mem_map array) – Page descriptor points to all related page

descriptors (the sequence is critical) – We have all page frames and size of file (inode

structure)

• DEMO

Windows: Dumping memory mapped files

• Page Tables to check the stage of pages

• Data Section Control Area

• Information from the first page (PE header)

– PEB -> ImageBaseAddress

• Required information:

– the Page Directory of the Process (for dumping process

image file) – the Page Directory of the System process (for dumping

drivers/modules)

Integrity verification

Recovered file

Original file

Original file Recovered file

kd> u 0x77e42cd1

kernel32!GetModuleHandleA:

77e42cd1 837c240400 cmp dword ptr [esp+0x4],0x0

77e42cd6 7418 jz kernel32!GetModuleHandleA+0x1f (77e42cf0)

77e42cd8 ff742404 push dword ptr [esp+0x4]

...

IAT in .rdata

Finding hidden objects

• Methods

– Reading internal kernel structures which are not

modified by rootkits

• List of threads instead list of processes

• PspCidTable

• Etc... – Grepping Objects

• Objects like Driver, Device or Process have static signatures

– Data inside object – Data outside object – Correlating data from page frames

• Elegant method of detecting hidden data

Windows: Finding hidden objects (_EPROCESS blocks)

PFN 00025687 at address 813C4CA8

flink 8823A020 blink / share count 00000097 pteaddress C0300C00

reference count 0001 Cached color 0

restore pte 00000080 containing page 025687 Active M

Modified

• Enumerating PFN database

• Verifying following fields:

– Forward link – linked page frames (Forward link also points to the

address of EPROCESS block) – PTE address – virtual address of the PTE that points to this page – Containing page – points to PFN which points to this PFN

• DEMO

Linux: Finding hidden objects (mm_struct structure)

• Each User Mode process has only one memory descriptor

• Next, we enumerate all page descriptors and select only page frames with memory mapped executable files (the VM_EXECUTABLE flag)

• Relations:

– The mapping filed of a page descriptor points to the

address_space struct – The i_mmap field of an address_space structure points to a

vm_area_struct – The vm_mm field of a vm_area_struct points to memory

descriptor

Windows: Finding hidden objects (_MODULE_ENTRY)

• Scanning physical memory in order to find memory signatures

– Identification of module header (MZ header) – Identification of module structures

• Inside object – Driver Object GREPEXEC http://www.uninformed.org/?v=4&a=2

• Outside object

typedef struct _MODULE_ENTRY {

LIST_ENTRY module_list_entry;

DWORD unknown1[4];

DWORD base;

DWORD driver_start;

DWORD unknown2;

UNICODE_STRING driver_Path;

UNICODE_STRING driver_Name;

}

Detecting modifications of memory

• Offline detection of memory modifications

– System call hooking

• Function pointers in tables (SSDT, IAT, SCT, etc) – Detours

• Jump instructions

• Cross-view verification

– .text sections of core kernel components – values stored in internal kernel tables (e.g. SCT)

SSDT

• Verification of core functions by comparing first few bytes

– Self-modifying kernel code

• Ntoskrnl.exe & Hall.dll

• Finding an address of KiServiceTable

– Memory image file: _KTHREAD (TCB)

• *ServiceTable = 80567940 – Symbols exported by the ntoskrnl.exe

(debug section):

• NtAllocateUuids (0x0010176C)

• NtAllocateVirtualMemory (0x00090D9D)

SSDT in the ntoskrnl.exe

Linux: removing data

• The content of page frames is not removed

• Fields of page descriptors are not cleared completely

– a mapping field points to an address_space struct – a list_head field contains pointers to related page descriptors

• Finding „terminated” files

– Enumerating all page frames - 0x01000030 (PA) – A page descriptor points to an address_space – Information from an address_space struct

• an i_mmap field is cleared

• all linked page frames (clean, dirty and locked pages)

• a host field points to an inode structure which, in turn, points to a dirent structure

Windows: removing data

• The content of page frames is not removed

• All fields in PFN, PDEs & PTEs are cleared completely

• Information from related kernel structures are also cleared

• We can recover particular page frames but it is impossible to correlate them without context

Available tools

• Debugging tools (kcore & crashdump)

• Analysis of Windows memory images

– KNTTools by George M. Garner Jr.

• KNTDD & KNTLIST – WMFT - Windows Memory Forensics

Toolkit at http://forensic.seccure.net

• Analysis of Linux memory images – IDETECT at http://forensic.seccure.net

KNTTOOLS

• KNTDD

• MS Windows 2000SP4/XP+/2003+/Vista

• Conversion to MS crash dump format

• KNTLIST

– Information about system configuration

• System Service & Shadow Service Tables

• IDT & GDT Tables

• Drivers & Devices Objects

• Enumerates network information such as interface list, arp list, address object, NIDS blocks and TCB table – Information about processes

• Threads, Access Tokens

• Virtual Address Space, Working Set

• Handle table, Executive Objects, Section Object

• Memory Subsections & Control Area – References are examined to find hidden data

WMFT

• Support for Windows XP & 2003

• Functionality

– Enumerating processes, modules, libraries (doubly linked

list) – Finding hidden data – processes and modules (grepping

objects & correlating pages) – Verifying integrity of functions – Dumping process image file and modules – Detailed info about processes

• Access Token, Handle Table, Control Area & Subsections, etc – Enumerating & finding PFNs

• To do:

– The disassembly functionality – Support for Vista

Conclusion

• Memory analysis as an integral part of Forensic Analysis

• Evidence found in physical memory can be used to reconstruct crimes:

– Temporal (when) – Relational (who, what, where) – Functional (how)

• Sometimes evidence can be resident only in physical memory

• Must be used to defeat anti-forensic techniques

Q & A

Thank you.

Mariusz.Burdach@seccure.net http://forensic.seccure.net

 

첨부
엮인글 :
List of Articles
제목 글쓴이 날짜 조회 수
공지 PC/모바일을 제조/유통하는 업체 관계자분을 모십니다 file 가브리엘조 2015-12-15 2216
CPU/MB/RAM M.2타입의 NVMe SSD가 4장 탑재할 수 있는 RAID카드 file 김말이님 2017-08-02 19
CPU/MB/RAM 소형 PC 그래픽카드 ZOTAC GeForce GTX 1080 Ti Mini 성능을 알아보자 file 김말이님 2017-08-02 33
소프트웨어 뉴스/소식] 카스퍼스키 무료 백신 선언 "세계를 안전하게?" file 김현철 2017-08-01 14
우분투 소켓 접속 제한 풀어 소켓 갯수 늘리기 file 평가단 2017-07-28 19
Tornado-test-c10m: 대규모 TCP / WebSocket 동시 연결 테스트 file 평가단 2017-07-28 6
네트워크 포렌식 자료파일입니다 file 김현철 2017-07-27 20
네트워크 디지털 메모리 포렌식 방법 file 김현철 2017-07-27 26
소프트웨어 리믹스 Remix OS for PC 버전 안드로이드 설치 file 라이진 2017-07-27 464
iptime 공유기로 WOL(Wake On Lan) 원격부팅 사용하기 file 알파원 2017-07-27 46
CPU/MB/RAM PPPoE ( PPP Over Ethernet ) 란 무엇인가? 정보 알파원 2017-07-27 134
네트워크 암호화, 전자서명, 인증서와 SSL file 굿모닝 2017-07-21 106
소프트웨어 MP3에 공식 '사망선고'..특허 만료·기술계약 종료 file 나잘스프레이 2017-05-18 86
CPU/MB/RAM 요즘 중량급 게임은 멀티 쓰레드 성능이 중요 file 김말이님 2017-05-14 203
CPU/MB/RAM 마이크론, 2017년 중 1Xnm DRAM과 64층 3D NAND를 출하 file 잭팟 2017-02-07 154
Gmail, Windows XP와 Vista의 지원을 2017년에 중단 file 잭팟 2017-02-07 69
CPU/MB/RAM 비디오 카드에 콜라를 뿌려보았다 file 잭팟 2017-02-07 194
CPU/MB/RAM Core i7-6950X 할인들어갔나봅니다 file 잭팟 2016-12-17 635
CPU/MB/RAM 삼성 NVMe SSD 960 PRO 읽기최대 3,500MB 출시 file 잭팟 2016-12-17 270
소프트웨어 더 똑똑해진 구글 번역, 실제로 써보니 file 댄디보이 2016-12-01 149
ARM의 새로운 보안 아키텍처 "ARMv8-M TrustZone" file 잭팟 2016-11-25 99
소프트웨어 마이크로 소프트가 개발한 인공지능 번역기 file 잭팟 2016-11-25 170
CPU/MB/RAM GeForce GTX 1050 기본정보 file [1] 잭팟 2016-10-31 260
CPU/MB/RAM 인텔 최신 SoC 아톰Atom A3900 시리즈 발표 file 잭팟 2016-10-31 207
CPU/MB/RAM 인텔, 3D XPoint를 사용한 '옵테인 8000P' 유출 file 잭팟 2016-10-21 213
CPU/MB/RAM 인텔 카비레이크 펜티엄은 2코어4스레드이다? file [1] 잭팟 2016-10-21 249
서버에 요청 중입니다. 잠시만 기다려 주십시오...