Digital Forensics/File System
NTFS VBR(Volume Boot Record)
Noctis41
2025. 2. 4. 22:47
1. VBR이란?
VBR(Volume Boot Record)은 부팅 가능한 파티션(볼륨)의 첫 번째 섹터에 존재하는 영역으로, Boot Sector, 볼륨 크기, FAT 위치, $MFT 위치 등 볼륨과 관련된 다양한 정보를 포함하고 있다.
VBR이 손상되면 볼륨의 정상적인 인식이 불가능하며, 의도적으로 볼륨의 존재를 숨기기 위해 VBR을 훼손하는 경우도 존재한다. VBR이 손상되었을 경우 Backup VBR을 통해 복구가 가능하며, FAT32의 경우 첫 번째 볼륨에서 6번째 위치에 존재하고, NTFS의 경우 볼륨의 마지막 섹터에 위치한다.
파일 시스템 | Backup VBR 위치 |
FAT32 | 볼륨의 첫 번째 섹터 + 6 |
NTFS | 볼륨의 마지막 섹터 |
2. NTFS VBR 구조
NTFS 파일 시스템의 VBR은 다음과 같은 구조를 가지고 있다.
NTFS VBR 데이터 구조
Byte Range | Hexadecimal | Description |
0 – 2 | 0x0000 – 0x0002 | Jump command to boot code (보통 0xEB5290) |
3 – 10 | 0x0003 – 0x000A | OEM ID (일반적으로 "NTFS ") |
11 – 12 | 0x000B – 0x000C | Bytes per sector (보통 512 bytes) |
13 | 0x000D | Sectors per cluster (보통 8) |
14 – 15 | 0x000E – 0x000F | Reserved (항상 0) |
24 – 25 | 0x0018 – 0x0019 | Sectors per track |
26 – 27 | 0x001A – 0x001B | Number of heads |
28 – 31 | 0x001C – 0x001F | Hidden sectors |
40 – 47 | 0x0028 – 0x002F | Total sectors |
48 – 55 | 0x0030 – 0x0037 | Logical cluster number for the file $MFT |
56 – 63 | 0x0038 – 0x003F | Logical cluster number for the file $MFTMirr |
64 – 67 | 0x0040 – 0x0043 | Clusters per file record segment |
68 – 71 | 0x0044 – 0x0047 | Clusters per index block |
72 – 79 | 0x0048 – 0x004F | Volume serial number |
80 – 83 | 0x0050 – 0x0053 | Checksum |
84 – 509 | 0x0054 – 0x01FD | Boot code and error message |
510 – 511 | 0x01FE – 0x01FF | Signature ("0x55AA") |
VBR의 첫 번째 섹터는 부트 코드(boot code)를 포함하는 부트 섹터로 구성되며, FAT 파일 시스템의 예약된 영역과 유사한 역할을 수행한다. NTFS의 경우 클러스터 크기에 따라 VBR의 크기가 달라질 수 있다.
클러스터 크기와 VBR 크기
Cluster Size (Byte) | VBR Size (Sector) |
512 | 1 |
1K | 2 |
2K | 4 |
4K | 8 |
3. NTFS VBR 복구
VBR이 손상된 경우, NTFS에서는 Backup Boot Sector를 통해 복구할 수 있다. 복구 과정은 다음과 같다.
Backup Boot Sector를 이용한 복구 방법
- NTFS VBR이 손상된 경우, Backup Boot Sector(볼륨의 마지막 섹터에 위치) 를 찾아야 한다.
- Backup Boot Sector를 원래 VBR 위치에 복사하여 덮어씌운다.
- 수정된 VBR을 저장한 후, 다시 마운트하여 복구 여부를 확인한다.
VBR이 손상된 경우 복구 절차
- Backup Boot Sector 존재 시
- VBR 위치 = LBA 총 섹터 수 - 1
- Backup VBR을 원본 VBR 위치로 복사
- 변경 사항 저장 후 볼륨을 다시 마운트
- Backup Boot Sector가 존재하지 않는 경우
- 볼륨 내에서 VBR 패턴을 검색하여 복구
- WinHex 등의 포렌식 툴을 사용하여 "EB 52 90 4E 54 46 53 20"(NTFS 서명) 검색
- 수동으로 OEM ID, Bytes Per Sector, Sectors Per Cluster 등 주요 값을 입력하여 복구
NTFS VBR에서 중요한 복구 필드
필드명 | 값 |
OEM ID | NTFS |
Bytes Per Sector | 512 (0x200) |
Sectors Per Cluster | 보통 8 (0x08) |
Total Sectors | LBA 총 섹터 수 |
Start Cluster for $MFT | VBR 이후 "FILE" 시그니처 검색하여 확인 |
Start Cluster for $MFTMirr | 보통 2번 클러스터 (0x02 * 8) |
Clusters Per MFT Record | 보통 1024 바이트 (F6) |