Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Hello Security World

Digital Forensic [메모리 수집 분석] 본문

정보보안/Forensic

Digital Forensic [메모리 수집 분석]

프로앱등이 2020. 5. 3. 17:55

Windows Memory 이해

Virtual Address Space (VAS)

VAS 는 실제 Physical Memory를 mapping한 가상 주소를 사용하는 것으로 Phsical Memory 한계를 극복할 수 있고 OS가 메모리 접근을

관리하여 Memory Protection을 가능하게 한다.

Windows 는 VAS를 Physical Memory에 저장할 수 없는 Memory 정보는 page file로 저장하게 된다. [이를 paging이라고 한다.]

Process의 메모리 공간은 공유되지 않는 한 다른 Process가 접근하지 못한다.

32bit환경에서는 최대 VAS는 4GB이고 64bit 환경에서는 2의 64bit만큼 VAS를 가질수 있다.

일반적인 메모리 공간

4GT(4GB Tuning)이 활성화 된 경우

하나의 Page Table을 사용하는 가상 주소

하나의 Task에 할당된 Virtual Memory를 Page[4KB]로 분리했을때 n개 (0 ~ n-1) 의 Page가 존재하고, 일반적인 Virtual Memory Size

가 4GB(32bit 기준) 라고 할 때 n은 1,048,756(2의 20승) 이 됨

> 2의 32승 = 2의 12승(1page = 4096byte) * 2의 20승

결국 하나의 Task에 대하여 Page Table Entry가 4byte(page)가 존재하는 주소 저장 공간) 인 4MB(1MB * 4Byte) 의 Page Table이 필요

현재 분할된 페이지 가운데 페이지 번호 0, 2, 3의 페이지가 실제 물 리 메모리에 적재되어 있음

가상주소 0x100에 대한 실제 물리 주소 

가상주소 0x100은 Page Number가 0이고 Offset이 0x100이 됨 

Page Number 0에는 PFN 0에 해당되고 PFN 0에는 4K(0x1000)라고 하 는 물리 주소가 존재 

따라서 가상주소 0x100의 실제 물리 주소는 0x1100으로 계산됨

가상주소 0x1001은 Page Number가 1이고 Offset이 0x001이 됨 

Page Number 1에는 P가 0으로 Page가 할당되어 있지 않음 

Page가 물리 주소에 할당되어 있지 않아 페이지 폴트(page Fault) 발 생 

이 때 커널은 물리 메모리의 빈 페이지 프레임 중 하나를 요구하여 할 당받고, 해당 페이지를 적재한 후 페이지 테이블에 적재된 페이지 프레 임의 위치를 기록하고, 다시 변환 과정을 거쳐 접근 -> Demand paging 기법이라 함

EProcess

프로세스가 생성되면 해당 프로세스의 정보를 가지고 있는 EPROCESS 라는 구조체가 커널 메모리에 생성 

모든 프로세스는 각자의 EPROCESS 구조체를 하나씩 가지고 자신이 사용하는 쓰레드의 개수만큼 ETHREAD 구조체를 가짐

EPROCESS 와 ETHREAD 내부에는 각각 PCB, TCB란 이름의 KPROCESS 와 KTHREAD 라는 구조체가 존재 

KPROCESS 는 NULL 동기화 객체와 관련된 디스패처 객체 헤더, 가상 메모리의 CR3 레지스터 값, 프로세스에 속해 있는 스레드 리스트 헤더, CPU에 대한 종속성(Affinity), 프로세스 우선순위, 프로세스에 서 생성되는 스레드의 기본 실행 시간 값 등과 같은 정보 저장 

KTHREAD 는 스레드 종료 동기화 객체, TEB(Thread Environment Block) 포인터, 스레드 우선순위, 스케줄러에 의해 실행을 준비하고 있는 스레드 리스트, 퀀텀 값등의 정보 저장

Eprosses 구조

Process Memory Dump 

특정 프로세스가 사용하고 있는 메모리에 대한 Dump

Userdump.exe 

Microsoft User Mode Process Dumper 

디버깅 목적으로 프로세스 메모리를 dump하여 분석할 수 있도록 설계되 어 있는 전형적인 디버깅 도구이다. 

Microsoft사의 디버깅 도구인 WinDbg를 이용하여 분석 가능 

사용법: userdump –w pid (-w 옵션: system 정보 포함) 

http://support.microsoft.com/kb/241215/ko

Windows 2000/XP/Server 2003 ProcDump 

http://www.sysinternals.com

 

Windows Sysinternals - Windows Sysinternals

Library, learning resources, downloads, support, and community. Evaluate and find out how to install, deploy, and maintain Windows with Sysinternals utilities.

www.sysinternals.com

Task Manager에서의 Dump

DD

Unix에서 이미지 복사하는데 가장 많이 알려진 도구 

오랫동안 Forensic 이미지 생성 표준으로 고려되어 졌고 일부 Forensic 도구에서 DD로 생성된 이미지 format 지원  GMG Systems Inc. 는 Windows 버전 DD를 제작하였고 Windows 2K/XP에서 사용할 수 있다. 

Windows용으로 더 이상 지원이 없다고 함

MoonSols Windows Memory Toolkit (상용)

http://www.moonsols.com/products/

Hibernation file, crashdump, raw dump 지원 

Windows XP부터 Windows 7까지 지원 

Win32dd, Win64dd의 향상된 DumpIt (2.0) 제공 

각종 스크립트 제공 

Free Dumpit 1.3 제공 ( http://www.moonsols.com/resources/ ) (WinXP 이하 버전에서 동작함, Win7 dump의 경우 volitility가 해석하지 못 함)

Belkasoft RAM Capture

https://belkasoft.com/ram-capturer

Windows XP/Vista/7/8/10/2003/2008 지원 

Volitility에서 분석 가능 

Anti-Debugging/Anti-Dumping 보호기능 bypass  nProtect GameGuard 테스트

Memory 수집 방법 –Memory Dump (Full)

ProDiscover IR (상용) 

System BIOS/CMOS 이미지 생성 지원

KnTDD 

http://gmgsystemsinc.com/knttools/

Windows XP/2003/Vista/2008/7/8 

미군 또는 법 집행기관만 사용가능

Memorize 

http://www.mandiant.com/resources/download/memoryze

수집 및 분석 

Windows 2000/XP/Vista/2003/7/2008 

최근 버전 : 3.0, July 23, 2013

Volitility 사용법(기초)

이미지 식별 : Imageinfo 

분석 대상 메모리 Dump가 어떤 시스템의 메모리 Dump인지를 파악하기 위하여 사용 

OS, 서비스팩, 하드웨어 구조 등 정보 제공 

사용법: vol.exe –f %Dump파일Path% imageinfo

이미지 식별 확인 : kdbgscan

주어진 프로파일을 기반으로 KDBG 주소를 식별하여 프로파일 검증 

사용법: vol.exe –f %Dump파일Path% --profile=%프로파일% kdbgscan

프로세스 목록 확인 : pslist 

주어진 프로파일을 기반으로 프로세스 목록 확인

DKOM (Direct Kernel Object Manipulation) 

프로세스를 숨기는 기법으로서 rootkit에 의해서 자주 사용하는 기법 

작업 관리자에서 프로세스가 보이지 않는다. 

탐지 방법: Crossview Detection  관련도구: Memoryze