VBR 분석 (FAT32/NTFS)
Updated:
FAT32, NTFS 파일 시스템에서 VBR 분석을 통해 각 영역의 위치 및 볼륨크기를 구하는 방법과 Backup Boot Sector를 통해 훼손된 Boot Sector를 복구하는 방법에 대해 기술한다.
- VBR 이란?
- FAT32 VBR
- NTFS VBR
- Backup VBR를 이용한 복구
- 참고
1. VBR 이란?
Volume Boot Record의 줄임말로, 부팅 가능한 파티션(볼륨)의 첫번째 섹터에 존재한다. Boot Sector, 볼륨크기, FAT 위치, $MFT 위치 등 볼륨에 관한 다양한 정보를 포함하고 있다.
VBR 이 손상되면 볼륨의 정상적인 인식이 불가능하며 의도적으로 볼륨의 존재를 숨기기 위해 VBR을 훼손하는 경우가 존재한다.
VBR 손상 시에는 Backup VBR
을 통해 복구가 가능하며 FAT32의 경우 첫번째 볼륨에서 6번째 위치에 존재하고, NTFS의 경우 볼륨의 마지막 섹터에 존재한다.
FAT32 | NTFS |
---|---|
볼륨의 첫번째 섹터 + 6 | 볼륨의 마지막 섹터 |
2. FAT32 VBR
FAT32 파일시스템의 VBR 은 다음과 같이 Boot Sector, FSINFO, Boot Strap, Reserved Sectors 영역으로 구분된다.
FAT32 VBR 구조
Boot Sector
는 다시 Jump command, BIOS Parameter Block, Error message, signature 영역으로 구분된다.
Jump Command와 BIOS Parameter Block 영역으로부터 볼륨에 관한 다양한 정보를 얻을 수 있다.
Jump command, BIOS Parameter Block
각 영역별 정보
각 영역별 정보에 대한 해석 결과는 다음과 같다.
- Backup Boot Sec : 0x6
- 6번째 섹터에 Backup boot sector 가 존재한다.
- BPS(Bytes Per Sector) : 0x200
- 섹터 1개의 크기가 512 Bytes이다.
- SP(Sector Per cluster) : 0x2
- 1개의 클러스는 2개의 섹터로 구성되어 있다. (일반적으로 1개 클러스는 8개 섹터로 구성되어 있다.)
- Reserved Sec Cnt(Reserved Sector count) : 0x1B3E
- VBR 의 크기가 6974 섹터이다.
- Total Sector 32 : 0x28000
- 파티션이 차지하는 총 섹터 수가 163840개이며, 이를 통해 볼륨 용량을 구할 수 있다.
- 볼륨용량 = 총 섹터수 * 섹터크기 - (VBR + FAT#1 + FAT#2 가 차지하는 섹터 수) * 섹터크기
- FAT Size 32 : 0x261
- FAT#1, FAT#2 영역의 크기는 각각 609 섹터이다.
- Root Directory Cluster : 0x2
- 파일 시스템의 가장 최상위 root 폴더를 2번 클러스터로 정의한다.
3. NTFS VBR
NTFS 파일 시스템의 VBR구조는 다음과 같다.
NTFS VBR 구조
Boot Sector 의 앞부분에서 볼륨에 관한 다양한 정보를 얻을 수 있다.
Boot Sector 앞부분
각 영역별 정보
각 영역별 정보에 대한 해석 결과는 다음과 같다.
- BPS(Bytes Per Sector) : 0x200
- 섹터 1개의 크기 512 bytes
- SP(Sector Per Cluster) : 0x8
- 1 개의 클러스는 8 개의 섹터로 구성된다.
- Reserved Sectors : 0x00
- 항상 0x00 값을 가지며 의미 없는 값이다. (FAT 32 에서는 FAT#1 의 위치를 찾는데 필요.)
- Total Sectors : 0x27FFF
- 해당 파티션이 차지하고 있는 총 섹터 수이며, 163839 번째 섹터(마지막 섹터)에는 Backup Boot Sector 이 존재한다.
- 볼륨용량 = 총 섹터수 * 섹터크기 - VBR 크기
- Start Cluster for $MFT : 0x1AAA
- $MFT의 시작위치는 6826번째 클러스터(54608번째 섹터)이다.
- Start Cluster for $MFTMirr : 0x2
- $MFTMirr ($MFT 백업)의 시작위치는 2번재 클러스터(16번째 섹터)이다.
4. Backup Boot Sector 를 이용한 복구
Boot Sector가 손상되었을 경우 다음의 특징(문자열)을 이용하여 원래 Boot Sector가 존재했던 곳을 유추할 수 있다. 앞서 살펴본 Backup Boot Sector 의 데이터를 복사하여 원래 Boot Sector 위치에 덮어씌움으로써 훼손된 Boot Sector를 복구할 수 있다.
- FAT 32
- Boot sector 다음에
RRaA
라는 문자열이 나온다.
- Boot sector 다음에
- NTFS
- Boot sector 다음에
BOOTMGR
이라는 문자열이 나온다.
- Boot sector 다음에
FAT32 문자열 RRaA
NTFS 문자열 BOOTMGR
5. 참고
FAT 12/16/32, NTFS, https://github.com/proneer/Slides/tree/master/Filesystem
Comments