Windows Forensic/Disk Structure

[Digital Forensic] MBR Structure Analysis

DF_m@ster 2023. 12. 7. 15:13

MBR

MBR (Master Boot Record): 컴퓨터 저장 장치의 가장 처음에 위치하는 특별한 부트 섹터로 이는 시스템을 부팅하는 필요한 정보와 파티션 테이블을 포함하여 운영 체제를 로드하는 중요한 역할을 한다. MBR 디스크의 파티션 구조를 정의하고, 부트로더를 포함하여 컴퓨터가 운영 체제를 시작할 수 있게 한.

추가적으로 MBR은 다중 파티션의 경우 각 파티션 정보를 저장하기 위해 생성되며, 단일 파티션인 경우 MBR 없이 VBR이 저장 장치의 가장 처음에 위치하게 된다.

 

MBR은 크게 부분으로 구성된다.

1. Boot Code (446 Byte): 컴퓨터를 부팅할  필요한 기본적인 코드 영역

2. Partition Table (64 Byte): 하드 드라이브의 파티션 구조를 정의하는 영역

3. Signature (2 Byte): MBR이 유효한지 확인하는  사용하는 영역

MBR 모습 (0번 섹터)

 

 

 

Partition Table

디지털 포렌식에서 파티션 복구를 할 때, MBR의 Partition Table은 중요한 정보이다. 아래는 Partition Table의 이미지로, MBR의 Partition Table은 Partition 마다 16 Byte 씩 최대 4개의 Partition 정보를 담을 수 있다. 또한 Partition Table에서 각 Partition의 16 Byte의 데이터로 부팅 여부, 파일 시스템의 종류, 파티션 시작 섹터, 파티션 총 섹터 수, CHS 주소 정보를 포함한다.

 

예) 1번 파티션: 0x00 (부팅 불가능), 0x07 (NTFS), 0x80 (시작 섹터: 128), 0x3E 80 00 (총 섹터 수: 4,096,000)

추가로 마지막 섹터가 계산 가능하다. 마지막 섹터(4,096,127) = 시작 섹터(128) + 총 섹터(4,096,000) - 1 

 

아래의 표에 16 Byte의 정보가 각각 어떠한 의미를 포함하는지 정리해 두었다.

+ MBR 구조는 파티션 크기를 4Byte(32bit) 크기의 섹터만 표현할 수 있기 때문에 최대 2TB의 파티션 크기까지만 지원한다.

(4,294,967,295 x 512 Byte = 2,199,023,255,040 Byte = 2,147,483,647 KB = 2,097,151 MB = 2,047 GB ≈ 2TB)

 

MBR의 Partition Table

MBR Partition Table Entry Field

 

Offset Size (Byte) Information
0x00 1 Boot Flag
(0x00: 부팅 X)
(0x80: 부팅 O)
0x01 ~ 0x03 3 Starting CHS Address
0x04 1 Partition Type
(0x07: NTFS, exFAT)
(0x0B, 0x0C: FAT32)
(0x05: 확장 파티션)
0x05 ~ 0x07 3 Ending CHS Address
0x08 ~ 0x0B 4 Starting LBA
0x0C ~ 0x0F 4 Size in Sector 

 

 

 

Partition 

Partition의 종류는 총 3가지가 있다.

1. 주 파티션 (Primary Partition): 운영 체제를 설치할 수 있는 파티션으로, MBR에서 최대 4개까지 만들 수 있다.
2. 확장 파티션 (Extended Partition): 주 파티션의 수를 넘어서 추가 파티션을 만들기 위한 용도로, 확장 파티션 자체는 데이터를 저장하지 않고 여러 개의 논리 파티션을 포함하여 데이터를 저장한다.
3. 논리 파티션 (Logical Partition): 확장 파티션 내에 생성되며, 주 파티션처럼 데이터를 저장한다. (운영체제 설치가 불가능 하다.)

 

 

 

Test

파티션 구조를 직접 확인해 보기 위해 7개의 파티션으로 구성된 디스크를 만들어 보았다.
7개의 파티션은 각각 3개의 주 파티션 (E, F, G), 1개의 확장 파티션 (초록색), 4개의 논리 파티션 (H, I, J, K)으로 할당되었다.
확장 파티션이 4개 이상의 논리 파티션을 포함하는지 추가적으로 확인하기 위해 8개의 파티션으로 늘려 본 결과 하나의 확장 파티션이 4개 이상의 여러 개의 논리 파티션을 포함할 수 있음을 확인했다.

디스크: 파티션 7개
디스크: 파티션 8개
파티션 색 설명

 

아래는 FTK Imager로 7개의 파티션으로 구성된 디스크를 확인해 본 결과이다. "Partition 4"는 확장 파티션으로 실제로는 존재하지 않는 모습을 확인할 수 있다. 

FTK Imager로 디스크를 열어본 결과

 

아래는 HxD로 7개의 파티션이 존재하는 디스크를 확인해 본 결과이다.
MBR에서 마지막 파티션 테이블인 4번째 파티션 테이블(하늘색)의 파티션 타입(0x05)이 확장 파티션임을 확인할 수 있다.
4번째 파티션의 시작 섹터(0x12C080 = 1,228,928)로 이동해해 본다.

생성한 디스크의 MBR (0번 섹터)


1,228,928번 섹터는 Boot Code가 없는 MBR 형태를 띠고, 2개의 파티션 테이블이 존재한다.

각각의 파티션 테이블은 해당 파티션의 정보, 다음 파티션의 정보를 포함하고 있다.
다음 파티션의 시작 주소의 경우 현재 섹터를 더하여 이동해야 한다.

1,228,928번 섹터

 

결과적으로 4개 이상의 파티션을 생성한 경우 n(n > 4) 번 째 파티션은 n - 1번째 파티션과 체인구조로 연결되어 있음을 확인할 수 있고, 추가적으로 n번 째 파티션에 접근하기 위해서는 주 파티션을 제외한 n번째 이전의 모든 파티션을 순회하며 n번째 파티션으로 접근한다는 사실을 알 수 있다.