본문 바로가기

Forensic/기초

데이터 표현과 디스크 구성 - MBR 이란

※아래의 내용은 Startup 디스크 포렌식 (이별 지음)을 공부하며 남긴 기록이다. 

 

MBR(Master Boot Record)이란 무엇일까? 

이를 알아보기 위해서 먼저 LBA 주소지정방식의 실제 하드 디스크 구조에 대해 공부해보자.

하드 디스크의 논리적 구조

하드디스크의 논리적 구조

LBA 주소지정방식은 섹터 단위로 차례대로 주소를 지정하기 떄문에 위 그림과 같이 나타낼 수 있다. 0 번 섹터에 MBR이 오게 되며 이후 차례대로 파티션 정보가 오게 된다. 

 

 

(1) MBR 구조

MBR은 부팅에 필요한 Boot Code와 파티션 정보를 가지고 있어 시스템의 MBR이 손상되면 부팅이 불가능 하게된다.

MBR은 총 512byte로 이루어져 있으며, 크게 3가지로 나눌 수 있다.

 

  • Boot Code 부팅과 관련된 코드를 담고 있는 영역이며, 부팅 가능한 시스템에 대한 Boot Code 영역은 모두 같으며, 446byte의 크기를 가진다.
  • Partition Table : 실제 파티션 정보를 담고 있는 영역으로 총 4개의 파티션 정보를 저장할 수 있다. 64 byte의 크기로 이루어져있다.
  • Signature : 해당 MBR의 끝을 알리는 시그니처 정보이다. [55 AA]로 끝나며 총 2byte로 이뤄져 있다.

MBR 구조

 

파티션 테이블 구조 확인

 

(2) 파티션 테이블

파티션 테이블에는 부팅에 필요한 저보가 있는 파티션으로 점프시켜 주기 위한 정보를 가지고 있다. 파티션 테이블은 총 4개의 파티션 정보를 저장할 수 있으며, 각각의 파티션 정보는 다시 16byte로 이뤄져있다.

 

파티션 테이블 구조

범위(Byte Range) 설명
10진수 16진수
0~445 0x0000 ~ 0x01BD Boot Code (446 byte)
446~461 0x01BE ~ 0x01CD Partition Table entry #1
462~477 0x01CE ~ 0x01DD Partition Table entry #2
478~493 0x01DE ~ 0x01ED Partition Table entry #3
494~503 0x01EE ~ 0x01FD Partition Table entry #4
510~511 0x01FE ~ 0x01FF Signature(0x55AA)

 

파티션 정보는 총 16 byte로 구성되어 있다. 이를 다시 세분화하여 각각의 오프셋이 뜻하는 정보가 무엇인지 정리하면

(*MBR에 저장되는 데이터는 리틀 - 엔디안 방식으로 저장된다. ; 오->왼)

 

  • 0-0 : Boot Flag를 나타낸다. 0x00이면 부팅이 불가하며, 0x80 이면 부팅이 가능한 파티션이다. 
  • 1-3 : CHS 주소지정방식의 시작위치 정보이다. [00 03 02] 이다. Cylinder : 00 Head : 03 Sector : 02 
  • 4-4 : 해당 파티션의 파일시스템 타입을 알 수 있다. 0x07 이면 NTFS를 나타내고, 0x0B이면 FAT32 ㅣ다. (0x05 확장 파티션)
  • 5-7 : CHS 주소지정방식의 끝나는 위치정보 이다. [0B 3F FE] 이다. Cylinder : 0B Header :  3F Sector : FE 
  • 8-11 : LBA 주소지정방식에 의한 파티션 시작주소이다. [00 00 00 80]이다. 
  • 12-15 : 해당 파티션의 총 섹터 개수에 대한 정보를 담고 있다. [00 03 08 00] 이다. 

 

파티션 타입 

파티션
0x00 EMPTY 0x0e FAT16
0x01 FAT12 0x0f MS_Extended
0x04 FAT16 0x83 Linux
0x05 MS_Extended 0x85 Linux_Extended
0x06 FAT16 0xa5 FreeBSD
0x07 NTFS 0xa8 MACOSX
0x0b FAT32 0xab MAC_OSX_BOOT
0x0e FAT32 0xee EFI_GTP_DISK