VBR 분석 (FAT32/NTFS)

Updated:

FAT32, NTFS 파일 시스템에서 VBR 분석을 통해 각 영역의 위치 및 볼륨크기를 구하는 방법과 Backup Boot Sector를 통해 훼손된 Boot Sector를 복구하는 방법에 대해 기술한다.

  1. VBR 이란?
  2. FAT32 VBR
  3. NTFS VBR
  4. Backup VBR를 이용한 복구
  5. 참고

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 라는 문자열이 나온다.
  • NTFS
    • Boot sector 다음에 BOOTMGR 이라는 문자열이 나온다.


FAT32 문자열 RRaA


NTFS 문자열 BOOTMGR

5. 참고

FAT 12/16/32, NTFS, https://github.com/proneer/Slides/tree/master/Filesystem

http://jihwan4862.tistory.com/51

https://m.blog.naver.com/PostView.nhn?blogId=bitnang&logNo=220870438399&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

Comments