티스토리 뷰
1. MBR 개요
MBR(Master Boot Record)은 저장매체의 첫 번째 섹터(0번 섹터)에 위치하며, 512바이트 크기의 영역을 차지하는 부트 레코드입니다. 최근 SSD(Solid State Drive) 등장과 대용량 디스크의 확산으로 인해, MBR의 용량 한계를 극복하기 위해 GPT(GUID Partition Table)가 등장했지만, 여전히 많은 시스템에서 MBR을 사용하고 있습니다.
저장장치의 구조는 아래와 같다.
MBR Slack 영억은 MBR과 VBR의 사이에 있는 영역으로 낭비 되는 공간 입니다.
해당 영역에 부트킷, 랜섬 웨어와 같은 악성코드가 악용되는 공간 이기도 하면서, 보안 솔루션으로 사용되는 공간이기도 합니다.
VBR영역은 볼륨의 시작에 위치하는 구조로 VBR에는 해당 볼륨의 파일 시스템의 메타 데이터(BPB) 있고, 부트로더 로딩 코드를 담고 있습니다.
Volume Data 영역은 파일 시스템에 의해서 할당된 볼륨의 데이터가 들어있는 공간으로 메타 데이터와 파일의 데이터로 구성되어 있습니다.
1.1 MBR의 주요 특징
- 저장 장치의 0번 섹터에 위치 (512바이트)
- 부팅 가능한 파티션 정보를 포함
- 최대 4개의 주 파티션 생성 가능
- CHS 및 LBA 주소 지정 방식 지원
- 부트 코드 실행 후 운영체제 로딩 담당
2. MBR 구조
MBR은 크게 3개의 영역으로 구성됩니다.
영역 | 크기(Byte) | 설명 |
Boot Code | 446 | 부팅 관련 코드 포함 |
Partition Table | 64 | 4개의 파티션 엔트리 포함 (각 16바이트) |
Signature | 2 | MBR 종료 확인 값 (0x55AA) |
2.1 MBR Boot Code
BIOS가 POST(Power On Self Test) 후, 저장장치의 0번 섹터를 읽고 실행하는 코드가 포함되어 있습니다. 부트 코드는 다음 작업을 수행합니다.
- MBR 파티션 테이블에서 부팅 가능한 파티션 탐색
- 부팅 가능한 파티션의 VBR(Volume Boot Record)로 이동
- 부팅 가능한 파티션이 없을 경우 오류 메시지 출력
MBR 오류 메시지 예시:
- Invalid partition table
- Error loading operating system
- Missing operating system
2.2 MBR Partition Table
MBR은 총 4개의 파티션 엔트리를 저장할 수 있으며, 각 엔트리는 16바이트 크기로 구성됩니다.
필드 | 오프셋 | 크기(Byte) | 설명 |
Boot Flag | 0x1BE | 1 | 부팅 가능 여부 (0x80: 가능, 0x00: 불가능) |
Starting CHS Address | 0x1BF | 3 | CHS 주소 지정 방식 시작 위치 |
Partition Type | 0x1C2 | 1 | 파일 시스템 유형 (예: 0x07 - NTFS) |
Ending CHS Address | 0x1C3 | 3 | CHS 주소 지정 방식 끝 위치 |
Starting LBA Address | 0x1C6 | 4 | 파티션의 시작 LBA 주소 |
Size in Sectors | 0x1CA | 4 | 해당 파티션의 총 섹터 수 |
2.3 MBR Signature
MBR의 마지막 2바이트(0x1FE~0x1FF)에 위치하며, 항상 0x55AA 값을 가집니다. 이 값을 통해 해당 섹터가 유효한 MBR임을 확인할 수 있습니다.
3. MBR과 부팅 과정
MBR을 기반으로 한 부팅 과정은 다음과 같습니다.
- BIOS 실행 및 POST 과정 수행
- MBR을 읽어 부트 코드 실행
- MBR에서 부팅 가능한 파티션 확인
- 해당 파티션의 VBR 실행
- 운영체제 로딩
4. MBR 분석
4.1 Device GUID 확인
MBR Device Signature는 운영체제에서 디스크를 식별하는 역할을 합니다. Windows에서는 다음 레지스트리 키에서 GUID를 확인할 수 있습니다.
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
4.2 파티션 크기 계산
MBR의 LBA 주소를 활용하여 파티션 크기를 계산할 수 있습니다. 예를 들어,
Size in Sectors = 0xE8E07800
Sector Size = 512
Total Size = 0xE8E07800 * 512 = 2,000,396,746,752 Byte ≈ 1.86TB
'Forensic > File System' 카테고리의 다른 글
EXT4 파일 시스템 파일 삭제 원리 (0) | 2025.02.24 |
---|---|
NTFS 파일 시스템 삭제 원리 (0) | 2025.02.13 |
NTFS VBR(Volume Boot Record) (0) | 2025.02.04 |
GPT(GUID Partition Table) Partition Structure (0) | 2025.02.04 |
FAT32 파일 구조 (1) | 2025.02.04 |