1. GPT 파티션
1.1. 전체 개념
GPT 디스크는 EFI라는 펌웨어에서 사용하는 디스크 형식으로 MBR과 마찬가지로 디스크에 대한 정보를 담고 있는 영역이다. GPT 디스크를 통해 부팅을 하기 위해선 BIOS가 아닌 EFI(UEFI) 시스템이 필요하며, 운영체제에서도 이를 지원해야 한다. 최근에 출시 된 메인보드에서는 이를 지원하고 있으며, 운영체제는 윈도우 기준으로 윈도우 XP 64비트 버전부터 이를 지원한다.
GPT 디스크는 MBR의 단점을 극복하기 위해 16Byte였던 파티션 엔트리의 크기를 128Byte로 확장하였고 파티션 테이블의 크기는 16,384Byte로 확장하였다. 그리하여 하나의 디스크에 최대 128개의 파티션을 생성 할 수 있다.
GPT 디스크들을 그림 1처럼 5개의 영역으로 나눌 수 있다. 첫 번째 보호용 MBR 영역은 디스크 첫 번째 섹터에서 시작하며, 한 개의 엔트리가 있는 도스 파티션을 포함한다. 이는 MBR 디스크만을 인식하는 시스템이나 프로그램에서 해당 디스크가 비어 있는 것으로 착각하고 GPT 디스크를 수정하는 행위를 방지하기 위해 해당 디스크가 비어있지 않다는 것을 알려주는 역할을 하고 있다.
GPT 디스크 두 번째 영역, GPT 헤더는 섹터 1에서 시작한다. 그 헤더는 GPT 디스크가 만들어 질 때 고정된 파티션 테이블 위치와 크기를 정의한다. 윈도우는 파티션 테이블 내 엔트리 수를 128로 제한한다. 헤더는 오류나 수정 사항들을 탐지하기 위해 파티션 테이블과 헤더의 체크섬을 포함한다.
세 번째 영역은 파티션 테이블이다. 파티션 테이블에 각 엔트리는 시작과 끝 주소, 유형 값, 이름, 속성 플래그, GUID 값을 포함한다. 그 128비트 GUID는 파티션 테이블을 생성할 때 설정되고, 그 시스템을 위한 고유한 값이다.
디스크의 4번째 영역은 파티션 공간이다. 파티션 공간은 가장 큰 공간으로 파티션에 할당할 섹터들로 구성되어 있다. 이 영역의 시작과 끝 섹터들은 GPT 헤더에 정의되어 있다. 디스크의 마지막 영역에는 GPT 헤더와 파티션 테이블 복사본이 존재한다.
1.2 데이터 구조체
디스크의 두 번째 섹터에는 Primary GPT Header 가 위치하며 그 내용은 다음과 같다.
바이트 범위 | 설명 | 필수여부 |
0-7 | 시그니처 값(“EFI PART”) | X |
8-11 | 버전 | O |
12-15 | GPT 헤더의 바이트 크기 | O |
16-19 | GPT 헤더의 CRC32 체크섬 | X |
20-23 | 예약됨 | X |
24-31 | 현재 GPT 헤더 구조체의 LBA | X |
32-39 | 다른 GPT 헤더 구조체의 LBA | X |
40-47 | 파티션 영역 시작의 LBA | O |
48-55 | 파티션 영역 끝의 LBA | X |
56-71 | 디스크 GUID | X |
72-79 | 파티션 테이블 시작의 LBA | O |
80-83 | 파티션 테이블의 엔트리 개수 | O |
84-87 | 파티션 테이블의 각 엔트리 크기 | O |
88-91 | 파티션 테이블의 CRC32 체크섬 | X |
92-End of Sector | 예약됨 | X |
GPT 헤더 정보를 사용해서 파티션 테이블 시작과 끝, 그리고 각 엔트리의 크기를 확인할 수 있다. 각 테이블 엔트리는 다음과 같다.
바이트 범위 | 설명 | 필수여부 |
0-15 | 파티션 타입 GUID | X |
16-31 | 고유한 파티션 GUID | X |
32-39 | 파티션의 LBA 시작 | O |
40-47 | 파티션의 LBA 끝 | O |
48-55 | 파티션 속성 | X |
56-127 | 파티션 이름 (유니코드) | X |
2. GPT 파티션 정보 확인
디스크의 정보를 확인하는 도구는 Microsoft Management Console, HxD, winhex, DISKPART 등이 있다. 본 문서에서는 DISKPART와 winhex를 이용하여 디스크 정보를 확인한다.
2.1 DISKPART를 이용한 디스크 정보 확인
DISKPART는 Windows 2000 이후의 OS에서 이용 가능한 도구로 다양한 기능을 제공한다.
다양한 기능 중 LIST disk를 이용하여 현재 시스템의 디스크 목록을 확인 할 수 있다.
현재 시스템에 존재하는 디스크는 총 3가지 이며, 이 중 디스크 2가 GPT 파티션으로 이루어진 것을 확인 할 수 있다.
2.2 Winhex를 이용한 디스크 정보 확인
winhex 도구의 Tool – Open Disk를 실행하여 디스크를 오픈한다. Windows Vista 이후의 운영체제에서는 사용자 계정 컨트롤(UAC)이 동작하므로, 프로그램 동작 시에 관리자 권한이 필요하다.
디스크를 오픈하면 두 번째 섹터에 GPT 헤더가 위치한다.

GPT 헤더를 확인하여 디스크 레이아웃 구조를 파악 할 수 있다.
값 | |
시그니처 값 | EFI PART |
버전 | 0x10000 |
GPT 헤더의 바이트 크기 | 92바이트 (0x5C) |
GPT 헤더의 CRC32 체크섬 | 0x94F92BF6 |
현재 GPT 헤더 구조체의 LBA | 1섹터 (0x01) |
다른 GPT 헤더 구조체의 LBA | 102,402,719섹터 (0x61A8A9F) |
파티션 영역 시작의 LBA | 34섹터 (0x22) |
파티션 영역 끝의 LBA | 102,402,686섹터 (0x61A8A7E) |
디스크 GUID | 0CE3F9CF-FF1F-FA9D-4204-C729BB8C9463 |
파티션 테이블 시작의 LBA | 2섹터 (0x02) |
파티션 테이블의 엔트리 개수 | 128개(0x80) |
파티션 테이블의 각 엔트리 크기 | 128바이트 (0x80) |
파티션 테이블의 CRC32 체크섬 | 0xC20944C2 |
GPT 헤더 정보를 사용해서 파티션 테이블 시작과 끝, 그리고 각 엔트리의 크기를 확인 할 수 있다.
설명 | 값 |
파티션 타입 GUID | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
고유한 파티션 GUID | C2DE0099-54A3-42A0-8228-920A5F3F015E |
파티션의 LBA 시작 | 34섹터 (0x22) |
파티션의 LBA 끝 | 262,177섹터 (0x40021) |
파티션 속성 | 0x00 |
파티션 이름 (유니코드) | Microsoft reserved partition |
GPT 파티션#1은 Microsoft 예약 파티션(MSR)이다.

설명 | 값 |
파티션 타입 GUID | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
고유한 파티션 GUID | B5A2CC03-8309-41FE-A159-A40060386BFD |
파티션의 LBA 시작 | 264,192섹터 (0x40800) |
파티션의 LBA 끝 | 102,402,047섹터 (0x61A87FF) |
파티션 속성 | 0x00 |
파티션 이름 (유니코드) | Basic data partition |
GPT 파티션#2는 Microsoft 기본 데이터 파티션으로 파티션의 시작 섹터를 확인하면, 해당 파티션은 NTFS 파일시스템으로 포맷 되어있는 것을 확인 할 수 있다.
Appendix. 참고 문헌
- 브라이언 캐리어, 주필환, “파일시스템 포렌식 분석”, 케이앤피IT, 2010.
- 캐플 블로그, “[디스크 정보] 디스크의 종류와 용어 2장 – MBR 디스크와 GPT 디스크”, “http://cappleblog.co.kr/131”
'Information Security > Digital Forensic' 카테고리의 다른 글
NTFS 메타데이터 파일 (0) | 2022.06.03 |
---|---|
FAT 파일 시스템 (0) | 2022.06.03 |
확장 파티션 (0) | 2022.06.03 |
Windows 파일 시스템과 MBR(Master Boot Record) (0) | 2022.06.03 |
제 4회 디지털 범인을 찾아라 경연대회 분석 보고서 (0) | 2022.06.03 |