본문 바로가기

카테고리 없음

(동계모각소)Part2_ch05 PC 기반 파티션(01)

5.1 도스 파티션

도스 파티션과 같은 유형을 사용하는 disk를 MBR(Master Boot Record) 디스크라고 부른다. 이 도스 파티션 시스템은 가장 흔한 파티션 시스템인 반면에, 가장 복잡한 분할 시스템이다.

도스 파티션을 사용하는 대표적인 것들은 MS-DOS, Windows, Linux, IA-32기반(Free BSD, Open BSD)가 있다.

5.1.1 전체 개요

기본적인 MBR 개념

MBR(Master Boot Record)는 512byte 섹터 내에 존재하며 (1)부트 코드, (2)파티션 테이블, 시그니처 값을 포함한다. 

(1) 부트 코드 : 파티션 테이블 처리 명령어 + 운영체제 위치 확인 명령어로 구성된다

(2) 도스 파티션을 설명하는 4개의 엔트리이다. (파티션 끝과 시작 주소, 파티션 섹터의 수, 파티션 타입, 플래그)

--> 플래그는 부팅 가능한 파티션을 타나낸다. / 윈도우는 파티션 타입에 의존하기 때문에 악용이 가능하다.(리눅스는 X)

확장 파티션 개념

파티션 표현 예시

 

기본적으로 MBR은 4개의 파티션을 표현할 수 있다. 

 

1) 주 파일시스템 파티션(primary file system partition) : MBR에서 제공하는 기본적인 파티션이다. MBR 엔트리에서 지정하며 파일시스템이나 구조화된 데이터를 포함한다.

2) 주 확장 파티션(primary extended partition) : 주 파일시스템 파티션과 동일하게 MBR 엔트리에서 지정하며, 추가적인 파티션을 포함할 수 있다. -> 모든 파일시스템 파티션 전에는 각 파일시스템 파티션의 크기와 다음 파티션들의 위치를 설명한다. 이 모든 게 확장 파티션 내부에 존재해야하기 때문에 확장 파티션의 크기는 커야 한다.

 

3) 부 파일 시스템 파티션(secondary file system partition) _ 윈도우에선 논리 파티션이라 한다 :  주 확장 파티션 내부에 존재하며, 이 성질을 제외하곤 주 파일시스템과 동일한 성질을 가지고 있다.

4) 부 확장 파일 시스템 파티션(secondary extended file system partition) : 한 개의 파티션 테이블 + 한 개의 부 파일 시스템 파티션으로 구성된다. 부 파일 시스템 파티션의 위치와 다음 부 확장 파일 시스템 파티션의 위치를 표현한다.

확장 개념의 레이아웃

- 4개 이상의 파티션이 필요하다면, 확장 파티션이 필요하다.

- 주 확장 파티션의 내부는 'linked-list'의 분할 방식을 이용한다. ( -> 확장 초기에 최적화를 위해서 부 확장 파일 시스템을 바로 만들지 않는다. 대신, 파티션 테이블을 놓아 부 확장 파일 시스템과 부 파일 시스템을 지정한다.)

- 파티션 구조가 복잡해지는 이유는 다음과 같다.

     1) 다양한 확장 파티션 타입

     2) 주와 부 확장 파티션 사이 구분 어려움

- 도스 확장, 리눅스 확장, windows95 확장이 존재한다.

부트 코드(도스 디스크 기준)

- MBR의 512byte 섹터에서 1-446 byte에 존재한다. 나머지는 파티션 테이블이다.

- 표준 MS 부트 코드는 다음과 같다.

     1) MBR의 파티션 테이블 처리

      2) 부팅 플래그가 있는 파티션을 구분

      3) 부팅 가능한 파티션 첫번째 섹터를 찾음

      4) 운영체제 코드 실행

-여러 운영체제를 같이 사용한다.

     1) MBR 내의 부트 코드 먼저 실행 :  윈도우 부트 코드 로드 -> 해당 부트 코드가 부팅할 수 있는 다른 파티션을 사용자              가 선택한다.

     2) MBR 코드 변경 :  MBR 코드는 부팅 가능한 운영체제 리스트를 사용자에게 보여준다.(사용자가 하나 선택)

5.1.2 데이터 구조체

MBR 데이터 구조체

도스 파티션 테이블은 MBR과 각 확장 파티션 테이블의 첫 번쨰 섹터에 존재한다. (MBR의 크기는 512바이트이기 때문에 512바이트 구조체를 사용한다.)

 

+) CHS는 최신 시스템에 필수적 X, 그저 이전 시스템을 위해 필요한 것이다.

+) 부트 코드의 플래그 =  0x80 (여러 운영체제를 사용하거나 사용자가 운영체제를 선택하는 경우 해당 플래그는 필요 X)

확장 파티션 데이터 구조체

- 구조체는 MBR과 동일하다.

- 구조체들이 연결 리스트 형태로 구성된다.

- 시작 섹터 주소는 디스크 특정 지점에서 상대적이기 때문에 파티션 테이블 엔트리는 약간 다르다.

+) 부 파일 시스템 파티션(현재 파티션 테이블에서 상대적), 부 확장 파티션(주확장 파티션에서 상대적)도 다르다. 

3개의 부확장 파티션을 갖는 디스크

도구를 이용한 예제 이미지 분석

(리눅스) fdisk : 리눅스 장치나 dd로 생성된 disk 이미지 파일을 해석하는 데 사용한다.

 - l : 읽기 모드로 파티션을 나열한다.

- u : 실린더 대신 섹터로 출력한다.

 

(Sleuth Kit) mmls 도구 : 파티션 테이블의 위치, 파티션에서 사용되지 않은 섹터, 확장 파티션의 위치를 알려준다.

5.1.3 분석 고려사항

1) MBR 비사용 영역에 이전에 설치한 데이터나 숨겨진 데이터 존재 가능성 고려(윈도우 XP)

2) 파티션 테이블 손상시 '볼륨 분석'에서 사용한 도구 사용 X -> 섹터 63에서 수동으로 추출

3) 확장 파티션에 3번째 엔트리 생성가능 (이런 확장 파티션을 extra 파티션이라 한다.)

4) 파티션 테이블에서 파티션 타입 필드 값은 필수 X
5) 섹터 마지막 2byte(0xAA55) 이용가능