Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
관리 메뉴

Piki's Play

Chapter2-2. 메모리 분석 본문

포렌식/디지털포렌식의 세계

Chapter2-2. 메모리 분석

Pikigod 2020. 9. 7. 16:22

*디지털 포렌식의 세계는 개인 공부용입니다!! 정리가 대충되어있을 수 있습니다.*

 


메모리 분석

 

메모리 : 프로세스가 사용한 데이터, 프로세스 자체, 웹 브라우저를 통해 전송된 정보, 복호화된 데이터

 

메모리 분석의 관심과 장,단점

1. 하드디스크에서 실행되지 않고 메모리상에서 바로 실해오디는 악성코드의 존재

 

2. 사용자 응용 프로그램의 프라이버시 보호 기능 강화

-> 암호화나 개인정보보호가 중요해지면서 악성코드조차도 보호하기도 함. 그런데 실행하기 위해서 복호화가 되어야 하므로 이때를 알기 위해서는 메모리 분석이 중요.

 

3. 안티 포렌식 기술의 확산으로 하드드라이브에 존재하고 있는 데이터의 무결성 불완전

 

라이브 포렌식과의 차이(라이브 포렌식이 메모리 포렌식보다 안좋은점)

1. 도구의 신뢰성 저하

-> 라이브포렌식은 대부분 윈도우 API에 의존 -> DLL(Dynamic Link Library)변경시 신뢰성 낮아짐

 

2. 분석의 반복성이 없음 (재현성 부족)

 

3. 분석의 다양성이 없음

 

메모리 덤프 개요

1. 하드웨어를 이용한 메모리 덤프

-> DMA기능을 이용해 CPU 개입 없이 덤프 가능

 

2. 소프트웨어를 이용한 메모리 덤프

-> 즉석에서 메모리 덤프를 만들 수 있음, OSAPI에 의존

-> 종류 : DD, KntDD, MDD, WIN32DD, Fastdd

 

3. OS 크래시 덤프를 이용한 메모리 덤프

-> OS가 시스템에 일어난 오류문제의 원인을 찾기 위해 생성하는 메모리 덤프

-> 종류 : 작은 메모리 덤프, 커널 메모리 덤프, 전체 메모리 덤프

 

4. 하이버네이션 파일을 이용한 메모리 덤프

-> 슬립모드 : 데이터 손실 없도록 지속적인 전원 공급

-> 하이버네이션 모드 : 메모리 데이터를 하드에 기록하고 전원 차단, 기본적으로 Default

 

가상 메모리 구조

-> 하드드라이브나 물리 디스크에 저장되어 있지만 메모리처럼 가상으로 만들어낸 메모리

-> 사용자 가상메모리 영역과 커널 가상메모리 영역으로 나뉘어져 있다.

가상주소(32bit) = 페이지 디렉토리 인덱스(10bit) + 페이지 테이블 인덱스(10bit)+바이트주소(12bit)

 

 

프로세스

-> 메모리 분석에서 가장 중요한 것은 프로세스를 찾는 것이다. 프로세스의 저장, 관리를 보고 프로세스를 숨기는 가장 대표적인 DKOM(Direct Kernel Object Manipulation)의 원리

-> 윈도우에서 EPROCESS라는 구조체에 프로세스의 모든 정보가 들어있다.

 

주요 필드

1. PCB(Process Control Block)

2. CreateTime

3. ExitTime

4. UniqueProcessId 프로세스의 ID

5. ActiveProcessLinks 이중 링크드 리스트

6. ObjectTable 오브젝트 핸들 테이블의 위치를 가리키는 포인터 값

7. WorkingSetPage

8. Peb(Process Environment Block) - 프로세스 실행에 필요한 정보들을 담고 있다. 프로세스의 환경설정

-> 얘는 이미지로더, 힙 매니저, 윈도우 DDL을 필요로 하기 때문에 커널영역에 데이터가 없고 사용자 영역에 데이터가 있다.

 

-> 프로세스를 찾는다면 PCB, ActiveProcessLinks 확인

-> 프로세스 정보를 찾는다면 나머지와 Peb확인

 

DKOM(Direct Kernel Object Manipulation)

-> 커널 오브젝트(EPROCESS)를 수정하여 프로세스를 숨기는 방법

-> 환형 이중 링크드리스트에서 빼버림, 그런데 자원을 회수하지 않고 계속 들고 있기 때문에 종료되지 않고 계속 생존

 

커널 오브젝트 검색 방법

1. 리스트 워킹

-> 어떤 프로세스의 ‘ActiveProcessLink’ 앞 뒤를 계속 따라가다보면 프로세스 목록이 얻어짐

-> DKOM 방법으로 숨겨진 프로세스 못찾음

 

2. 또 다른 리스트 워킹

-> KPCRB기초

 

3. 패턴 매칭

-> 모든 커널 오브젝트는 OBJECT_HEADER라는 구조체가 공통적으로 있음. 패턴 매칭하기

 

메모리 분석(툴)

1. Volatility

-> Volatile System, LLC에서 만든 메모리 분석툴, CLI 기반 툴

-> Pslist, psscan 옵션으로 얻는 두가지의 방법. psscan은 숨겨진 프로세스 찾기 가능 속도는 pslist 더 빠름

 

2. Redline

->GUI 기반