메모리 포렌식의 대상으로는


> 물리메모리

- 윈도우가 시스템에 장착된 메모리를 사용하기 위해서는 모든 메모리 공간에 대한 주소 정보가 필요하다. 

- 시스템이 처음에 시작될 때 시스템에 장착된 모든 메모리 공간의 주소정보를 담은 지도를 만든다. 

- PAM (Physical address Map) : 실제(물리) 메모리 주소 정보

- 이전에 32비트 운영체제에서 사용할 수 있는 메모리의 크기는 2^32의 크기로 = 4294. 즉, 4GB의 메모리까지만 사용가능 했다.


- 실제 사용 메모리는 물리메모리에서 장치메모리를 뺀 나머지 메모리

- 장치 메모리를 우선적으로 처리하여 컴퓨터가 정상적으로 작동하는데 꼭 필요한 장치들을 사용할 수 있게 한다.


- 따라서 기존까지 CPU 32비트 주소지정 방식을 사용한 것을 36비트 주소지정 방식을 CPU에 추가한다.

- PAE(Physical Address Extention) : 실제 주소 확장

- 2^36의 크기로 = 64GB의 메모리를 인식하게 한다.  <윈도우 xp 서비스 팩 2 부터 PAE기능 지원>


- 가상 메모르를 통해서 물리메모리 용량이 4GB인 시스템에서 다수의 프로세스를 동작하게 한다.


> 페이지 파일

> 하이버네이션 파일




물리메모리 덤프


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

- PCI 장치를 이용한 덤프; 추가적인 하드웨어/소프트웨어의 설치 없이 무결성을 최대한 보장

- FireWire를 이용한 메모리 덤프; 윈도우,리눅스,맥OS에서 가능


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

- Win(32&64)dd

- Memorize

- FD(fastDump) Pro


3. 크래시 덤프

- Blue Screen of Death 발생 시 자동 생성, WinDdg,Kernel Memory Space Analyzer 등을 통해 디버깅 가능

- 물리메모리에 가장 최소한의 영향을 미치는 방법

- 윈도우만 지원


4. 가상화 시스템 덤프


5. 절전모드 덤프

- 절전모드로 진입 시 메모리를 압축하여 C:\hiberfil.sys 파일로 저장

- 추가적인 프로그램이나 장비 불필요

- 전체 메모리 영역의 덤프가 아닌 사용 중인 영역만 덤프


(콜드부트 : 종료된 시스템 메모리를 차갑게 유지시켜 메모리 손실을 줄이는 방법)

(%주로 소프트웨어 방식을 이용해 메모리 덤프)



>> 주의사항

덤프한 메모리는 외장저장장치에 저장

외장저장장치 인터페이스에 따라 수집 속도 차이

침해사고의 경우 현장 상황에 따라 D:\ 볼륨을 이용하는 것도 고려해야한다.



초기 메모리 분석 방법


> 문자열 추출 : 특정 패턴의 문자열 검색, (이메일, 계정, 비밀번호, 메신저 대화 등)


> 파일 카빙 : 그래핑 이미지, HTML, 레지스트리 등 파일 카빙 기법으로 파일 획득


오브젝트 검색


> 물리메모리 상의 오브젝트를 찾기 위한 방법 : 

- 리스트 워킹(list-Walking)

* EPROCESS 프로세스 이름을 이용한 프로세스 탐색 기법

* KPCR(Kernel Processor Control Region)을 이용한 프로세스 탐색 기법

* DKOM과 같은 프로세스 은닉 기법 탐지 불가능...!!


- 패턴 매칭(Pattern Matching)

* 프로세스 구조체의 패턴을 이용해 메모리 영역 전체 검색

* 은닉 프로세스라도 동일한 프로세스 구조체를 가짐



http://hpitos.tistory.com/74
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

포렌식 공부를 하면서 틀린것들과 새로 배운것들이 있어 아래 내용들을 수정하고 다시 정리해 보았습니다. 

위 주소로 확인하시면 포렌식이 뭔지에 대해 간략하게 알 수 있을 것이라고 생각합니다.



%개인적으로 생각하고 느낀것을 적었습니다. 조금 다른 견해가 있을 수 있습니다.%


포렌식이라고 하면 일반적으로 흔적을 찾는것이라고 이야기한다.

이러한 흔적은 어떠한 행위를 해야만 흔적이 남게된다. 

따라서 흔적을 지우려한 행위를 한것도 흔적이 될 수 있다. 


그중에 포렌식이란 크게 둘로 나뉘게 되는데


1. 물리적 포렌식

2. 디지털 포렌식


물리적 포렌식은 말 그대로 물리적으로 발생한 상황에 대해서 포렌식을 하는 경우이다. 

예를 들어 하드웨어가 물에 빠져 손상되었거나 했을때 생각해 볼만한 것이 물리적 포렌식이고,


디지털 포렌식은 쉽게말해 컴퓨터와 관련된 작업을 통해 발생한 것에 대해 포렌식을 하는 경우이다.

예를 들어 내가 인터넷 서핑을 한 것에 대한 흔적을 찾는다거나, 악성코드에 감염된 하드웨어에서 흔적을 찾는다거나.


포렌식을 크게 둘로 '물리적 포렌식'과 '디지털 포렌식' 두개로 나누어 보았는데

한편으로 포렌식을 하는 분야는 이렇게 나누어 볼 수 있을 것 같다.

1. 하드웨어 

2. 소프트웨어

이렇게 나누어 볼 수 도 있을 것 같다. 

하지만.

여기서 한번 더 생각해 볼 것이 있는데 소프트웨어이지만 하드웨어랑 크게 연관이 되어있다고 할 수 있는

3. 운영체제 

가 있다.




일반적으로 흔적을 찾는다는 포렌식이 아닌 부분에서 접근을 해보면


-> 증거를 없애려고 하는 부분 (삭제)(조작)

-> 메타데이터를 통한 복제를 확인 (조작인멸)(증거찾기)

-> 방대한 정보를 통해서 포렌서에게 혼란을 주어 더많은 시간이나 비용을 들게 만드는 (혼란 조작)(안티포렌식)


즉, 증거를 인멸한다. 조작된 증거를 찾는다. 포렌식을 힘들게 만든다. 라고 볼 수 도 있겠다.


증거를 인멸한다는 내용은 아까도 말했듯이 증거를 인멸하려는 것도 행위를 한것으로 볼 수 있으므로 행위의 흔적이 남아있음을 알 수 있다.

(예를들어 동영상속의 증거를 지우기위해 동영상 편집기를 사용해 동영상을 편집했는데 동영상의 편집 도구들의 편집 특징이 발견되었다.)



 

이러한 포렌식의 활용은 주로

<수사>하는 것에서 많이 이루어 지는데

민간측면으로 접근해보면 <침해사고대응> <법무팀> <사립탐정> 등으로 볼 수 있겠고

공공적인측면으로 접근해보면 <군> <경찰> <검찰> 로 볼 수 있겠다.

하나더 나누어 보자면 <연구소> 에서 포렌식 관련 기술을 연구하는 것도 생각해 볼 수 있다.


+ Recent posts