메모리 분석에서 가장 중요한 기초지식인 메모리 구조에 대해서 알아볼 것이다.

원래는 처음부터 다뤘어야 하는 부분이지만, 내가 보는 책의 순서가 이러한 점도 있고 또 앞의 내용들과는 깊이 관련되지 않은

내용이기 때문에 지금 다루게 되었다.

특히 이번에 알아 볼 것은 가상 메모리의 구조이다. 

가상메모리가 무엇인지 일단 알아야 하기 때문에 아래에 정의를 적어두었다.

[가상메모리 정의]
가상메모리란 물리적인 실체를 가지고 있지 않은 메모리를 말하며, OS가 만들어낸 논리적인 형태의 메모리를 뜻한다.
가상 메모리에 저장된 데이터라고 해서 가상으로 저장할 수는 없으며, 가상 메모리의 데이터는 물리메모리나 하드 드라이브에 저장된다. 가상 메모리는 VAS라는 것을 OS로부터 할당받는다. 

* VAS(Virtual Address Space) : 가상 메모리에 할당되는 주소를 말하며 물리메모리의 주소와는 다른
                                           주소이다. 


32bit 시스템의 경우 4GB 크기의 가상 메모리 영역을 할당 받으며, 64bit 시스템의 경우 이론적으로 17EB의 가상 메모리 영역을

할당 받지만, 64bit의 경우 할당받는 영역의 크기가 너무 크고 비효율적이어 8TB정도로 제한을 하고 있다.

가상 메모리의 크기는 위의 설명에서 보았듯이 시스템의 bit에 따라 정해져있으며 프로세스의 크기에 따라 변하지 않고

무조건적으로 정해진 크기가 할당된다.

또한 프로세스는 자신에게 할당 된 가상메모리의 영역을 자신의 것으로만 생각하고 단편화 되지 않은 연속적인 주소의

공간으로 인식한다.

그렇기에 시스템에 상관없이 매번 고정된 크기의 가상 메모리를 할당 받아 프로세스는 시스템마다 다른 메모리 크기의

한계를 느끼지 않고 실행 될 수 있는 것이다. 

32bit 시스템의 메모리 구조를 가식화 해보면 아래 그림과 같다.

[그림 1 - 가상메모리 간단 가식화]

 
간단하게 그려봤을 때 가상메모리는 위와 같은 형태를 지니고 있다.

좀 더 세부적으로 그린다면 아래와 같다.

[그림 2 - 가상메모리 세부 가식화]

위 그림을 보면 가상메모리의 커널영역은 여러가지의 것들이 들어가 있는 것을 볼 수 있는데 이 것들은 그림에서처럼

순차적으로 저장되어 있지 않고 여기저기 흩어져 있다.

편의상 그림을 이렇게 그린 것이다.

메모리 덤프를 하면 사용자영역에 있는 데이터들은 불완전한 형태로 덤프되는 경우가 있고 커널 영역은 온전한 형태로 덤프가

되는 경우가 있는데 이러한 경우는 가상메모리에서 사용자 영역에서 데이터가 물리메모리와 페이지 파일을 오고 가기 때문이다.

프로세스가 사용하는 데이터가 오랫동안 사용되지 않을 경우 페이지 파일에 저장해두고 필요할 경우 다시 물리적 메모리에

적재해 사용하는 방식때문에 불완전하게 덤프가 되는 것이다.

커널 영역의 경우 시스템에 필요한 데이터들이고 자주 사용되는 것들이기 때문에 페이지 파일에 저장하지 않고 물리메모리에

저장되기 때문에 온전하게 덤프가 되는 것이다. 

가상메모리와 물리적 메모리의 주소는 맵핑이 되어 있는데 가상메모리의 어떤 데이터의 주소가 다른 프로세스의 가상메모리의

어떤 데이터 주소와 같다고 하더라도 물리적 메모리에서의 주소는 다르기 때문에 서로 충돌이 일어나거나 데이터를

덮어씌우지 않는다.

아래 그림은 두개의 서로 다른 프로세스가 똑같은 가상메모리 주소에 똑같은 데이터를 저장하였을 때 물리적 메모리에는

어떻게 저장되는가를 보여주는 그림이다.

[그림 3 - 가상메모리와 물리적메모리 맵핑 관계]

위의 관계를 이해했다면 이제 가상메모리와 물리적메모리 간의 주소가 어떻게 변환되는지는 알아야 한다.

아래에 보기 편하도록 정리를 해두었다.

[가상메모리와 물리적메모리 사이의 주소 변환]
가상 메모리의 주소는 32bit 시스템에서는 32bit 길이를 갖는다. 가상 주소가 물리주소로 변환 될 때에는 2개의 테이블과 한개의 오프셋을 거쳐 변환되는데 이러한 변환 과정을 거치는 이유는 4GB 가상 메모리와 페이지 프레임 단위로 구성되어 있는 실제 메모리 사이의 맵핑 정보를 하나의 표로 만들게 되면 4MB정도가 되는 표가 만들어진다.
프로세스마다 이러한 표를 만들어 메모리에 적재하면 메모리 낭비이고, 안올리면 맵핑 속도가 크게 저하된다는 문제점이 생긴다. 이러한 이유로 윈도우는 가상메모리와 물리메모리 사이의 맵핑을 2개의 테이블로 나누고, 그 중 첫번째 테이블(페이지 디렉토리 테이블)만 메모리에 보관하고 나머지 하나의 테이블을 필요할 때만 메모리에 적재한다. 

메모리는 페이지(page)라는 단위로 불리는 일정 크기의 단위를 사용하여 물리적메모리를 관리하는데 가상주소와 물리주소의 맵핑 또한 이 페이지를 기준으로 이루어진다.


[가상주소를 이용해 물리주소 찾기]

각각의 페이지는 첫번째 페이지부터 0번 순서가 매겨지며, 이 번호를 페이지 프레임 넘버(Page Frame Number)라고 한다.

가상주소의 구조는 다음과 같다.


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

이와 같은 정보를 이용하여 가상주소를 토대로 물리주소를 찾을 수 있다.

방법은 다음과 같다. 

1. 페이지 디렉터리의 물리적 주소를 저장하고 있는 CR3 레지스터로부터 값을 읽어와 현재 프로세스의
    페이지 디렉터리를 찾는다.(페이지 디렉터리로 이동)

2. 가상 주소의 페이지 디렉터리 인덱스 값에서 현재 프로세스의 페이지 디렉터리의 엔트리를 찾고 그 값을 읽는다. 
    페이지 디렉터리 엔트리에는 페이지 테이블의 주소 정보가 들어있다.(페이지 테이블로 이동)

3. 페이지 디렉터리의 엔트리에 저장된 페이지 테이블 인덱스 값으로 페이지 테이블 엔트리를 찾아 그 값을 읽는다.
    페이지 테이블 엔트리에는 물리적 주소의 페이지 프레임 주소가 들어있다.(페이지 프레임으로 이동)

4. 가상 주소의 마지막 부분에 있는 바이트주소 인덱스를 이용해서 실제 찾고자 하는 물리적 메모리의 주소로 이동하고
   필요한 만큼 데이터를 읽는다.

위의 설명을 그림으로 표현하면 아래와 같다.

 

[그림 4 - 가상주소를 이용하여 물리주소를 찾는 로드맵]

프로세스마다 페이지 디렉터리를 가지고 있으며 이것의 물리적 주소는 KPROCESS 구조안에 저장되어 있다가 Context Switching이
발생하면 CR3 레지스터로 복사 된다.
실제 프로세스 오브젝트는 가상메모리에서 보이는 것과는 달리 물리적 메모리에 단편화 되어 저장되는데 흩어져 있는
프로세스 데이터를 가장주소를 근거로 찾으려면 반드시 페이지 디렉터리의 물리적 주소가 필요하다.
KPROCESS 구조 안에 페이지 디렉터리의 물리적 주소가 아닌 가상 주소가 저장되어 있다면 가상주소와 물리주소의 맵핑은 불가능하다.



이것을 처음 이해하기에는 조금 힘이 들것이다.

또 위의 그림 4의 과정을 이해하는 것도 처음에는 어려울 것이다.

순서를 하나씩 읽고 그림의 화살표를 따라가다보면 이해에 조금 도움이 될 것이다.

'[+] Forensic' 카테고리의 다른 글

Memory Analysis (8)  (3) 2011.12.28
Memory Analysis (7)  (0) 2011.12.28
Memory Analysis (6)  (0) 2011.12.26
Memory Analysis (5)  (0) 2011.12.26
Memory Analysis (4)  (0) 2011.12.25
이번에는 마지막 방법인 하이버네이션에 대해 알아보겠다.

[Hibernation 정의]
시스템에 일정시간이 지나도 아무런 입력이 없을 때 OS가 모든 메모리 데이터를 하드 드라이브에 기록하고 시스템 구동에 필요한 최소전원공급만을 남겨둔 채 필요 없는 전원을 차단하는 기능이다. 이 기능의 목적은 효율적인 전원 관리이다.


정의를 읽어보면 우리가 알고 있는 컴퓨터의 Sleep mode과 많이 유사하다는 것을 알 수 있다. 하지만, 이 두 기능은 분명한

차이가 있는데 그 차이는 다음과 같이 설명 할 수 있다.

[슬립기능과 하이버네이션의 차이]
1. Sleep mode
   - 해당 기능은 메모리의 데이터가 손실되지 않도록 계속 전원을 공급하는 방식이다.

2. 하이버네이션
   - 해당 기능은 메모리의 데이터를 하드 드라이브에 기록하고 시스템 구동에 필요하지 않은 전원들은 모두 차단한다.

* 결과적으로 슬립모드와 하이버네이션의 차이점은 메모리의 데이터를 유지하는 방식과 전원차단에 있다.
   이로 인해 슬립모드의 경우 다시 시스템을 원상태로 복구하는 시간이 짧은 반면, 하이버네이션은 슬립모드
   오래 걸린다. 


하이버네이션의 장단점을 일단 짚어보고 다음으로 넘어가 보자.

[하이버네이션 장단점]
1. 장점
    - 추가적인 프로그램이나 장비가 필요하지 않음.
    - OS의 기본적인 기능으로 생성되기 때문에 크래시덤프만큼의 데이터 정확성이 있고 순수한 결과물을 얻을 수 있음.

2. 단점
    - 하이버네이션 파일은 사건이 일어날 시간보다 훨씬 이전에 만들어졌을 가능성이 높음.
    - 마더보드의 칩셋과 OS가 이 기능을 지원해야 하고 CMOS와 OS에서 기능이 설정되어 있어야 함.
    - 메모리에 있는 정보를 모두 기록하는 것이 아님. 
    - 덤프 결과물은 로컬 하드 드라이브에 저장하여 라이브 리스폰스에서의 목적으로는 부적합 함.
    - 일반PC에는 하이버네이션 기능이 비활성화 되어 있음.(노트북등 휴대용 PC에는 기본적으로 활성화) 


하이버네이션의 기능을 이용한 메모리 덤프 결과물을 얻으려면 몇가지 조건이 있어야 한다.

그 조건은 다음과 같다.

[하이버네이션 기능 수행 조건]
 - CMOS와 OS설정에서 하이버네이션 설정이 되어 있어야 한다.
 - 시스템에 얼마간의 입력이 없어야 하며, 서비스나 프로세스에 의해서 입력이 있어서도 안된다.


일단 저 기능을 모두 만족할 수 있다는 가정 하에 하이버네이션을 어떻게 확인 할 것인가?

하이버네이션은 XP 기준으로 [제어판] -> [전원옵션] -> [최대 절전 모드  탭] 에서 확인 할 수 있다.

[그림 1 - 하이버네이션 설정 확인 화면]

위 이미지에서 최대 절전 모드에 체크가 되어 있어야 하이버네이션 기능 활성화 된다.

위 이미지의 OS는 일반 가정용 PC라서 하이버네이션 기능이 비 활성화되어 있는 것이다. 

하이버네이션 기능을 사용하여 메모리 분석을 하면 좋겠지만, 그렇지 못하다면 굳이 할 필요는 없다. 

'[+] Forensic' 카테고리의 다른 글

Memory Analysis (7)  (0) 2011.12.28
Memory Analysis (6)  (0) 2011.12.26
Memory Analysis (5)  (0) 2011.12.26
Memory Analysis (4)  (0) 2011.12.25
Memory Analysis (3)  (2) 2011.12.25
이번에는 크래시 덤프에 대해서 알아보도록 하겠다.

[Crash dump 정의]
OS가 시스템을 유지하기 힘들정도로 심각한 문제가 발생하였을 때 문제의 원인을 찾기 위해 생성하는 메모리 덤프를 말한다. 예를 들면 흔히들 WIn 98에서 본 블루스크린이 있다.


정의를 알아봤으니 이젠 크래시 덤프의 장단점을 짚어보고 다음것을 알아보도록 하자.

[크래시 덤프의 장단점]
1. 장점
   - 모든 메모리 덤프 중에서 가장 순수한 메모리 덤프를 얻을 수 있음.
   - 키보드 시퀀스에 의한 강제 메모리 덤프는 Ctrl + Alt + Delete 키 시퀀스가 동작하지 않는 상황에서조차 사용할 수 있음.

2. 단점
   - 메모리 덤프를 만들기 위한 조건이 까다롭고 언제나 풀 크래스 덤프를 만들 수 있는 것도 아님. 
   - 사전에 이미 레지스트리 값이 수정되어 있어야 함.
   - 크래시 덤프는 기본값으로 부트 볼륨에 저장 됨.
   - 아주 가끔이지만 수동 크래시 덤프가 BSoD를 일으킬 수 있음. 


포렌식을 공부하고 있으니 크래시 덤프를 포렌식 관점에서 봤을 때는 어떨까?

[포렌식 관점에서의 크래시 덤프]
크래시 덤프의 결과물은 다른 방법들 보다도 정확하며 순수하다. 하지만, 크래시 덤프를 생성하는 일은 쉽지 않으며 언제나 이 방법을 사용 할 수 있지 않다. 기본적으로 OS에서는 사용자가 크래시 덤프를 생성하게 끔 허락하지 않기 때문에 임의의 설정을 통하여 크래시 덤프를 생성하여야 한다. 하지만 설정 후 시스템을 재부팅해야만 하는데 이 재부팅 과정에서 포렌식에서 중요하게 여기는 휘발성 정보등의 증거들과 조사해야 할 환경들이 사라지게 되어 포렌식관점에서 바라봤을때는 무조건 이 방법을 사용해야만 한다고는 볼 수 없다.
또, 크래시 덤프를 하게 되면 기본적인 저장 경로는 로컬 하드 드라이브로 되어 있는데 이 경로를 그대로 사용한다면 크래시 덤프의 데이터가 하드 드라이브에 어떤 중요한 증거일지도 모르는 데이터를 뒤집어 씌울 수도 있어 포렌식 관점에서는 좋지 못하다. 기본경로를 수정 할 수는 있지만 이 또한 수정 후에는 재부팅을 해야 하므로 좋지 못한 방법이다.
만약 조사관이 조사 대상 시스템을 조사하던 중 크래시 덤프 파일이 있거나, 크래시 덤프를 사용자가 생성할 수 있도록 설정이 되어 있고 저장 경로가 하드 드라이브가 아닌 다른 외장장치로 되어 있다면 크래시 덤프 방법을 사용해도 좋다. 

 

크래시 덤프에는 3가지 종류가 있는데 3가지 종류마다 담고 있는 데이터가 다르다.

이에 대해서 알아보도록 하자.

[크래시 덤프의 종류]
1. 작은 메모리 덤프(Small Memory Dump)
    - 오류가 발생한 원인을 밝히기 위한 최소한의 정보만을 기록한다. 부트 볼륨에 최소한 2MB 이상의 페이지 파일이
       있어야 한다.

2. 커널 메모리 덤프(Kernel Memory Dump)
    - 할당되지 않은 메모리 영역과 사용자 모드로 동작 중인 프로그램들에 메모리 영역을 제외한 커널 모드와
       HAL(Hardware Abstraction Layer) 메모리 영역만을 기록한다. 포렌식 관점에서 봤을 땐 사용자 모드 프로그램의
       메모리 영역을 기록하지 않아 중요하진 않지만, 오류 수정하는데에는 적합한 덤프이다.

3. 전체 메모리 덤프(Full Memory Dump)
    - 메모리 전체를 기록한다. 이 메모리 덤프를 만들기 위해서는 부트 볼륨에 전체 메모리 크기에 1MB를 더한 만큼의
       페이지 파일이 있어야 하며, 32bit 환경에서는 2GB 이상의 메모리는 덤프 할 수 없다. 

* 커널 메모리 덤프나, 전체 메모리 덤프는 저장경로에 하나의 파일로 존재하여, 새로운 덤프파일이 생성되면
   이전에 생성된 덤프파일을 덮어 씌어버린다. 



'[+] Forensic' 카테고리의 다른 글

Memory Analysis (6)  (0) 2011.12.26
Memory Analysis (5)  (0) 2011.12.26
Memory Analysis (4)  (0) 2011.12.25
Memory Analysis (3)  (2) 2011.12.25
HardDisk 구조  (0) 2011.12.24
이번에는 메모리 덤프 방법 중 소프트웨어를 이용한 덤프 방법을 알아볼 것이다.

종류를 알아보기 전 소프트웨어를 이용한 메모리 덤프의 장단점을 알아보자.

[소프트웨어를 이용한 메모리 덤프의 장단점]
1. 장점
    - 메모리 덤프를 하기 위해 추가적인 장비가 필요하지 않음.
    - 상용 도구와 크게 다르지 않은 성능을 가지고 있는 공개 도구들이 있음.
    - 상용 제품들은 원격에 있는 컴퓨터에서도 메모리 덤프를 수집할 수 있음.

2. 단점
    - 커널 레벨 루트킷과 악성 프로그램에 매우 취약함.
    - OS의 종류와 버전에 따라 사용할 수 있느 도구에 제약을 받음.
    - 수집하는 메모리에 자신의 흔적을 남김. 


위의 내용에서 보았듯이 소프트웨어를 이용한 메모리 덤프에도 장단점이 존재한다.

하드웨어를 이용한 메모리 덤프는 얻어지는 결과에 대해서는 좋지만 그 과정에 제약사항이 많고 검증되지 않은 기법들이어서

보통 소프트웨어를 통한 메모리 덤프를 수행한다.

이제 소프트웨어를 통한 메모리 덤프에는 어떠한 방법들이 있는지 알아보겠다.

(도구들 중 Windows XP SP2의 /device/physicalmemory 를 참조하여 메모리 덤프를 수행하는 툴들이 있는데 SP2 이후에는 /device/physicalmemory 를 참조할 수 없어 작동하지 않는 도구들이 있다. 이 도구들은 설명에서 제외되었다.)

[DD]
DD는 유닉스도구 중 하나로 GNU License로 배포되는 도구이다. 사용법이 간단한것에 비해 결과물이 좋아 인기가 좋은 도구이다. 유닉스 도구를 기초로 하여 윈도우에서도 적용이 가능한 윈도우버전도 존재한다. DD는 사용자가 접근 가능한
모든 데이터를 바이트 또는 블록 단위로 복사하는데, 복사하려고 하는 영역을 OS가 인식하지 못하거나, 사용자권한이
낮아 접근하지 못하는 영역이거나, 지원하는 API가 없는 경우를 제외하고는 모든 시스템 데이터를 덤프할 수 있다.
DD의 포맷이미지는 로우 데이터 포맷이미지라고 하여 대부분의 포렌식 도구에서 이 포맷을 지원한다.
DD의 장점으로는 데이터의 형태를 그대로 덤프한다는 것이고, 단점은 부가정보가 제공되지 않아 분석하는데 시간이 오래
걸린다는 것이다.


[KntDD]
이 도구는 DFRWS 2005의 Memory Analysis 대회에서 처음 제작되었으며, 이 대회의 우승팀 중 한팀이 문제를 풀기위해 제작한 도구이다. 이 도구는 메모리 덤프를 네트워크로 전송하는 기능을 포함하고 있으며, 메모리 덤프를 윈도우 크래시 덤프 포맷으로 변환하는 기능도 가지고 있다. 하지만 이 도구는 보안전문회사, 군대, 정부기관에만 제공되고 있어 일반인들은 사용 할 수 없다.
이런 이유에서 실습이 불가하다. 


[MDD]
Mantech에서 만들어진 도구이며 메모리 덤프만을 위해 만들어진 도구이다. Windows XP SP2(32bit) 이후 버전에서도 문제없이 수행가능하지만 업데이트가 되지 않는 것이 문제이다. 또 64bit를 지원하지 않아 모든 시스템에 적용하기에는 무리가 있다.
사용법 : mdd -o <파일이름.mdd> --> 파일의 확장자는 조사관의 판단에 따라 임의적으로 정할 수 있음

[그림 1 - mdd 실행화면]

* 너무 시간이 오래걸려 결과물은 얻지 못하고 실행화면만 첨부한다.


[WIN32(64)DD]
이 도구도 mdd처럼 메모리 덤프 전용으로 개발된 도구이다. 많은 기능을 포함하고 있으며, 지원하는 윈도우 버전이 많다.
이 도구는 기본적으로 로우포맷을 지원하며, 추가로 크래시포맷과 하이버네이션 포맷을 지원한다. 
또 이 도구는 네트워크 전송 기능도 가지고 있으며, 64bit 시스템도 지원하고 4GB 이상의 메모리 덤프도 지원한다.

* 이 도구의 CLI 버전을 구할 수 없어 실습을 할 수 없었다. Sourceforge에 GUI 버전이 있는데 그 버전은 내 시스템에서는 작동하지 않아 실습 진행이 되지 않는다.  


[Fastdd]
포렌식 분야를 연구하고 있는 baadc0de라는 닉네임을 사용하는 국내 블로거가 제작한 메모리 덤프 도구로 제작자의 말에 따르면 win32dd보다 속도가 빠르다고 한다. 32bit 시스템과 64bit 시스템을 모두 지원한다.
참고 URL :  http://baadc0de.blogspot.com/2010/12/fastdd-fastest-windows-physical-memory.html 

* 현재 다운로드 링크에 파일이 지워져 도구를 구하지 못해 제작자가 캡쳐한 이미지로 대신하겠다.

[그림 2 - Fastdd 실행화면]



[기타 상용 도구]
위에서 알아본 것들 외에 상용도구들이 있는데 목록은 다음과 같다.
 - FastDump : CLI 기반의 도구로 HDGary사에서 제작하였다.
 - Pro Discover IR: Technology Pathway 사에서 제작했으며 메모리 덤프 전용이 아닌 침해사고용으로 개발된 도구이다.
 - EnCase Enterprise : Guidance software 사에서 제작했다.
 - AccessData Enterprise : AccessData 사에서 제작했으며, 기업 환경에서의 네트워크에 있는 컴퓨터의 메모리 덤프를
                                       수집하는데 목적이 있다. 

대부분 상용도구들은 메모리 덤프 전용이 아닌 복합적 기능이 구현된 도구들이다. 그렇기에 가격도 비싸 메모리 덤프만 할 것이라면 굳이 구입 할 필요는 없다.


'[+] Forensic' 카테고리의 다른 글

Memory Analysis (5)  (0) 2011.12.26
Memory Analysis (4)  (0) 2011.12.25
Memory Analysis (3)  (2) 2011.12.25
HardDisk 구조  (0) 2011.12.24
Memory Analysis (2)  (0) 2011.12.24
  1. 현우킴 2012.07.07 04:13

    좋은 정보 감사합니다.~ 잘보고갑니다 >.<

* 메모리 분석을 공부하다 갑자기 하드디스크 구조에 대해서 포스팅 하는 이유는 포렌식 중 Disk 포렌식이 있는데 
   이것을 공부하려면 하드디스크 구조를 공부해야 한다. 이 이유가 갑자기 떠올라 마음잡혔을 때 공부하고자 이렇게
   포스팅 하게 되었다. 


하드디스크란 일반적인 용어의미로는 비휘발성의 보조기억장치라고 설명 할 수 있다. 

구조는 아래 이미지와 같다.

[그림 1 - 하드디스크 구조]

각 부위에 대한 설명은 다음과 같다.

[하드디스크 구조]
 - Platter(플래터) : 위 그림에 원판으로 된 부분이며, 데이터가 기록되는 부분이다. 플래터는 금속재질로, 데이터를
                           기록하기 위하여 산화철등의 자성체로 양면 코딩되어 있다. 하드디스크에는 한개 또는 그 이상의
                           플래터들이 부착 될 수 있지만 많이 부착되면 될수록 용량은 커지지만 안정성에 대한 문제또한
                           증가된다. 

 - Spindle(스핀들) : 위에서 설명한 Platter의 회전을 담당하는 부분이다. 초기에는 볼 베어링이 사용되었지만, 최근에는
                             동압 유체 베어링이 많이 사용된다. 
                             동압 유체 베어링은 완전한 원형 회전을 하게 하여 트랙 밀도를 높일 수 있다.

 - Actuator(액츄에이터) : Actuator Head가 데이터를 읽을 수 있도록 Actuator Arm을 움직이도록 하는 부분이다. 구동을
                                   위해 네오디뮴 자석을 사용하고, 누설자속을 줄이기 위하여 철과 같은 강자성체 재질로 된 덮개가
                                   있다. 초기에는 액츄에이터를 구동하기 위하여 스테핑 모터를 사용하였는데 데이터 손실이
                                   일어나 헤드파킹이 필요하였다. 하지만 요즘은 음성 코일 방식을 사용하여 전원이 차단되어도
                                   스핀들 모터의 관성에 의해서 헤드가 제자리로 돌아가 헤드파킹이 필요 없게 되었다.

 -  Head(헤드) : 데이터를 읽고 쓰는 부분으로 플래터와의 간격이 마이크로미터 단위로 떨어져 데이터를 읽고 쓴다. 만약
                       플래터와 맞부딪힌 상태에서 스핀들 모터가 구동되어 헤드가 플래터에 닿는 경우 데이터에 손상이 생긴다.
                       헤더 기록 방식에는 수직기록 방식과 수평기록 방식이 있다.

  * 수직기록방식 : 데이터를 수직으로 기록하는 방식, 수평기록방식에 비해 플래터당 기록 밀도를 훨씬 높일 수 있고,
                          자성의 손실이 거의 없어 데이터의 수명또한 길다.
  * 수평기록방식 : 데이터를 수평으로 기록하는 방식   



구조를 알아봤으니 이제는 저장 순서를 알아볼 차례이다.

[하드디스크 저장 순서]

 [그림 2 - 하드디스크 저장 순서]


이제는 순서를 알았으니 저장이 어떻게 이루어지는가에 대한 개념을 알아볼 차례이다.

하드디스크의 데이터 저장방식에는 CHS 방식과 LBA방식이 있다.

[하드디스크 저장방식]
1. CHS 방식 : CHS 방식은 실린더(Cylinder), 헤드(Head), 섹터(Sector) 이 세가지 요소를 이용한 방식이다. 
                    물리적으로 주소를 할당하는 방식으로, 실린더, 헤드, 섹터에 번호를 할당해 그 주소를 이용하여 데이터를
                    찾아 읽고 쓰는 방식이다. 이 방식은 과거에 사용되었으며 용량이 커지는 현대의 하드디스크에 맞지 않는
                    한계를 보여 요즘에는 일반 하드디스크에서는 쓰이지 않고, CHS가 지원하는 용량의 임베디드
                    하드디스크들은 아직 이 방식을 사용한다.

2. LBA 방식 : CHS 한계로 인해 고안된 방식으로 모든 섹터에 논리적인 고유번호를 할당하는 방식이다. 

* 실린더(Cylinder) : 트랙의 묶음을 의미 한다.
* 트랙(track) : 섹터들이 이루고 있는 원형 한 줄을 의미 한다.
* 섹터(sector) : 하드디스크의 최소 저장단위를 의미 한다. 

[그림 3 - 플래터 구조]

3. ZBR(Zone bit Recording ) : 요즘 사용하는 방식으로, 외부 트랙의 길이가 내부 트랙의 길이보다 길다는 점에서 착안하여
                                           길이가 긴 트랙일수록 섹터를 많이 할당하도록 만든 방식이다. CHS와 LBA의 경우 트랙의
                                           섹터 수가 모두 동일하였다. ZBR은 트랙의 길이마다 섹터의 수가 다르기 때문에 데이터를
                                           읽고 쓸때 트렉에 섹터 수를 정확히 알고 있어야 한다. 

 

'[+] Forensic' 카테고리의 다른 글

Memory Analysis (4)  (0) 2011.12.25
Memory Analysis (3)  (2) 2011.12.25
HardDisk 구조  (0) 2011.12.24
Memory Analysis (2)  (0) 2011.12.24
Memory Analysis (1)  (0) 2011.12.23

+ Recent posts