Chapter2-2. 메모리 분석
*디지털 포렌식의 세계는 개인 공부용입니다!! 정리가 대충되어있을 수 있습니다.*
▶ 메모리 분석
메모리 : 프로세스가 사용한 데이터, 프로세스 자체, 웹 브라우저를 통해 전송된 정보, 복호화된 데이터
▷ 메모리 분석의 관심과 장,단점
1. 하드디스크에서 실행되지 않고 메모리상에서 바로 실해오디는 악성코드의 존재
2. 사용자 응용 프로그램의 프라이버시 보호 기능 강화
-> 암호화나 개인정보보호가 중요해지면서 악성코드조차도 보호하기도 함. 그런데 실행하기 위해서 복호화가 되어야 하므로 이때를 알기 위해서는 메모리 분석이 중요.
3. 안티 포렌식 기술의 확산으로 하드드라이브에 존재하고 있는 데이터의 무결성 불완전
※ 라이브 포렌식과의 차이(라이브 포렌식이 메모리 포렌식보다 안좋은점)
1. 도구의 신뢰성 저하
-> 라이브포렌식은 대부분 윈도우 API에 의존 -> DLL(Dynamic Link Library)변경시 신뢰성 낮아짐
2. 분석의 반복성이 없음 (재현성 부족)
3. 분석의 다양성이 없음
▷ 메모리 덤프 개요
1. 하드웨어를 이용한 메모리 덤프
-> DMA기능을 이용해 CPU 개입 없이 덤프 가능
2. 소프트웨어를 이용한 메모리 덤프
-> 즉석에서 메모리 덤프를 만들 수 있음, OS의 API에 의존
-> 종류 : 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 기반