Windows Forensic/Disk Structure

[Digital Forensic] GPT Structure Analysis

DF_m@ster 2023. 12. 7. 21:33

GPT, GUID

GPT (GUID Partition Table): 저장 장치의 파티션 구조를 정의하는 표준으로, 기존의 MBR(Master Boot Record) 시스템을 대체하여 저장 용량과 많은 파티션을 지원한다. 또한, 데이터 무결성을 보장하기 위해 헤더와 파티션 테이블의 복사본을 저장 장치 끝에 보관한다.

 

GUID (Globally Unique Identifier): GPT (GUID Partition Table) 핵심 구성 요소로, 128 Bit 길이의 각 파티션에 대한 고유 식별자 ID이다.

 

 

 

GPT Structure

GPT (GUID Partition Table)는 크게 여섯 개의 주요 영역으로 나눌 수 있다.

1. MBR (LBA: 0): 드라이브의 0번 섹터에 위치하며, 이전 MBR 시스템과의 호환성을 위해 기존 MBR 파티션 테이블을 모방하여 존재한다.

2. GPT Header (LBA: 1): GPT 정보의 시작점으로, 파티션 테이블의 위치와 크기, 그리고 이를 검증하는 데 필요한 체크섬 정보를 포함한다.

3. Partition Table Entries (LBA: 2 ~ 33 (32 섹터)): 실제 파티션 정보가 저장되는 영역으로, 파티션의 시작과 끝, 유형, 고유 식별자 등을 포함한다.

4. Partition Data (LBA: 34 ~ -34): 실제 데이터가 저장되는 파티션들이 존재하는 영역으로, 사용자 데이터를 저장하고 파일 시스템, 응용 프로그램 데이터 등을 포함한다.

5. Secondary Partition Table Entries (LBA: -33 ~ -2 (32 섹터)):  파티션 테이블 엔트리의 백업본이다.

6. Secondary GPT Header (LBA: -1): 드라이브의 끝에 위치하며, 주 GPT 헤더의 백업본이다.

 

출처: 위키백과 GUID 파티션 테이블

 

 

 

MBR (LBA: 0)

이전 MBR 시스템과의 호환성을 위해, GPT 구조의 저장 장치는 MBR 파티션 테이블을 모방한다. 또한, 1 파티션 테이블만 존재하며, 1번 파티션 테이블의 Partition Type (0xEE), Starting LBA (0x01), Size in Sector (0xFF FF FF FF) 설정되어 GPT 구조임을 알린다는 특징이 있다.

GPT 구조의 MBR (0번 섹터)

 

 

 

GPT Header (LBA: 1)

아래의 표에 GPT Header의 정보가 각각 어떠한 의미를 포함하는지 중요 영역만 정리해 두었다.

GPT 구조의 GPT Header (1번 섹터)

Offset Size (Byte) Information
0x200 ~ 207 8 Signature
(EFI PART)
0x220 ~ 227 8 LBA of Backup
(GPT Header)
0x228 ~ 22F 8 Starting LBA Partition
0x230 ~ 237 8 Ending LBA Partition

 

 

 

Partition Table Entries (LBA: 2 ~ 33)

GPT 구조에서는 하나의 Partition Table Entry 크기는 128Byte로, 섹터 (512Byte)당 4개의 Entry 수용할 있다. GPT Partition Table Entries LBA 2부터 33까지 ( 32 섹터)에 걸쳐 있으므로, 결과적으로 GPT 최대 128(32 섹터 x 4 Entry) Partition Table Entry 지원한다.

 

 

GPT 구조의 Partition Table Entry는 파티션 크기를 8Byte(64bit) 크기의 섹터만 표현할 수 있기 때문에 최대 8ZB의 파티션 크기까지 이론적으로 지원가능하나 실제로는 18EB만을 지원한다. 이는 MBR 구조보다 훨씬 큰 수용량이다.

(2^64 x 512 Byte = 2^64 x 2^9 Byte = 2^73 Byte = 2^63 KB = 2^53 MB = 2^43 GB = 2^33 tb = 2^23 PB = 2^13 EB = 2^3 ZB = 8ZB)

 

GPT 디스크 구조에서 MSR (Microsoft Reserved Partition) (초록색 영역) 16MB 크기의 예약 파티션으로, 디스크 관리와 파티션 재구성, BitLocker 드라이브 암호화를 위해 사용된다.  파티션은 사용자 데이터 저장 용도로는 사용되지 않으며, 주로 시스템 또는 관리 도구에 의해 관리되며, 디스크의 파티셔닝 레이아웃 변경, 드라이브 암호화 프로세스 지원 시스템 복구와 유지 관리에 필요한 공간을 제공한다.

 

아래는 직접 2개의 파티션을 만들어본 결과와 표이다. 표에 Partition Table Entries의 정보가 각각 어떠한 의미를 포함하는지 중요 영역만 정리해 두었다.

GPT 구조의 Partition Table Entries (2번 섹터)
GPT Partition Table Entry Field

Offset Size (Byte) Information
0x00 ~ 0F 16 Partition Type GUID
0x10 ~ 1F 16 Unique Partition GUID
0x20 ~ 27 8 Starting LBA
0x28 ~ 2F 8 Ending LBA
0x38 ~ 7F 72 Partition Name

 

 

 

Secondary Partition Table Entries (LBA: -33 ~ -2)

Secondary Partition Table Entries (Partition Table Entry 백업본) LBA -33부터 순차적으로 위치하며, 섹터를 계산해 보면 다음과 같다.

GPT Header (1번 섹터)의 Ending LBA Partition 값 (0x0F 9F DE = 1,023,966(d))의 다음 섹터 이므로 "1"을 더한 "1,023,967"번 섹터이다.

Secondary Partition Table Entries (1,023,967번 섹터)

 

 

 

Secondary GPT Header (LBA: -1)

Secondary GPT Header (GPT Header  백업본) LBA -1에 위치하며, 섹터를 계산해 보면 다음과 같다.

GPT Header (1번 섹터)의 LBA of Backup (GPT Header) 값 (0x0F 9F FF = 1,023,999(d))의 섹터 이므로 "1,023,999"번 섹터이다.

Secondary GPT Header (1,023,999번 섹터)