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


> 물리메모리

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

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

- 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. 운영체제 

가 있다.




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


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

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

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


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


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

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



 

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

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

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

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

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


Nachos


운영체제의 시스템이 구동되는것을 알아보기 위해서 교육용 OS인 Nachos라는 프로그램을 사용하게되는데 C와 Java등 여러가지 언어를 지원하고 있어 편하게 이용할 수 있다. 


이 Nachos를 Java로 구동시키는데 Cygwin을 사용해 구동해 보려고 한다. 




1. Nachos를 다운 받기전에 Cygwin을 다운받는다. https://www.cygwin.com 

(자신의 운영체제에 따라 32비트 or 64비트를 다운받아야한다. 32비트는 setup-x86.exe // 64비트는 setup-x86_64.exe)



2. 다운받은 Cygwin설치 프로그램을 실행하여 진행하는데 설정같은거 건드리지말고 기본 설정으로 진행을 한다. 

(다음 다음 다음 다음 다음 다음...)


3. 넘어가는 중간에 아래와 같이 다운로드 사이트를 선택하는 화면이 나올텐데 여기서 필자는 그나마 아는 ftp서버인 daum으로 설정하고 진행했다.

(http://ftp.daum.net 선택 후 진행) 여기서 선택하는 건 앞으로 설치할 패키지프로그램(?)을 다운받는 위치인 것 같다.





4. 다음 버튼을 눌러 진행하게 되면 아래와 같은 화면이 나올것이다. 

여기서 우리는 Search에 make를 입력하고 (make 입력하고 enter등 버튼 클릭안해도 자동으로 Search가 된다. 기다려라) 아래 사진 처럼 Devel 안에 make: The GNU version of the 'make' utility 를 찾고 skip이라고 써있는 걸 누르면 아래 사진과 같이 바뀌게 될 것이다.




5. 4번을 실행하고 나면 다음으로 넘어가지 말고 gcc라는 키워드를 다시 Search하여 4번과 같은 방법으로  아래의 사진과 같이 만들어준다.

(Devel안에 gcc-core:GNU Compiler Collection (C,OpenMP) 을 찾아 Skip을 누르면 아래 사진과 같이 바뀌게 될 것이다.)




6. 이렇게 진행 하고 나면 이제 Nachos를 다운받아준다. ( Nachos다운 )

7. 다운받은 Nachos 압축 파일을 cygwin home 폴더 안 user이름(각자 자신의 컴퓨터마다 다를것이다.) 폴더에 넣어준다.

(필자의 경우 기본적으로 설치를 진행하여 C드라이브 최상위 폴더 cygwin64에 home 디렉토리에 user이름(ConvergenceSecurity) 폴더안에 넣어주었다.  아래 사진은 home디렉토리를 나타내는 사진이다.)




8. 자, 이제 기본 구성은 다 끝났다 Cygwin을 실행시켜보자!!


9. 실행을 시키고 나서 nachos압축 파일을 압축 해제한다. (압축 해제하는 명령어 : tar -zxvf 압축파일명(nachos-java.tar.gz))



10. 9번까지 실행하고 나면 아래 사진과 같이 nachos압축파일을 넣었던 폴더에 압축이 해제되어 nachos 폴더가 생성되어있을 것이다.




11. 거의 다왔다. 우리는 Java 코드를 사용할 것이기 때문에 Java의 환경변수를 알려주어야한다.  

따라서 위사진에서 볼 수 있듯이 .bash_profile을 편집기로 실행하여 (메모장으로는 편집이 되지 않는다. notepad++ 이나 atom 등 편집기로 편집을 해 주어야한다. ) 맨 아랫줄에 Java JDK의 위치를 추가하고 저장한다. 

필자의 경우 JDK의 주소는 C:\Program Files\Java\jdk1.8.0_111\bin 이기 때문에 아래 사진과 같이 선언을 해주었다. 편집기는 atom을 사용.

(export PATH=$PATH:"C:\Program Files\Java\jdk1.8.0_111\bin")




12. 이제 다 끝났다. cygwin에서 javac를 쳐본다.  아래 사진과 같이 옵션의 정보가 뜬다면 성공!!! 

그렇지 않고 에러메세지가 뜬다면 Java JDK의 경로 설정을 잘 해주었는지 다시한번 확인해보고 cygwin도 껐다가 다시 켜보기도 해보아라.


13. 이제 실행을 시켜 볼 것이다. nachos/proj1폴더로 이동해서 실행해 보겠다.

cd 명령어를 통해 nachos/proj1 폴더로 이동해주고, make 명령어를 통해 컴파일을 한다. 

( nachos안의 소스코드를 수정하였을 경우 cgywin에서 실행할때 make명령어를 실행해 수정된 소스코드를 다시 컴파일 시키고 실행시켜야 수정된 소스코드가 반영된다. )

그리고 ../bin/nachos 를 입력하여 nachos를 실행시켜본다.

아래 사진처럼 잘 작동되면 성공!!!!!!!!  축하합니다!!!

 















+ Recent posts