IT 그리고 정보보안/Knowledge base

VBR (Volume Boot Record)

plummmm 2021. 4. 10. 06:06
반응형

VBR(Volume Boot Record), BR (Boot Record) 다양한 이름으로 쓰이는 VBR에 대해서 알아봅시다.
VBR, BR, 파티션 부트 레코드, 부트 섹터 등의 이름으로 불리는데... 이들 중, Boot Sector(부트 섹터)는 구별을 좀 해야한다.
볼륨의 가장 첫번째 1개의 섹터는 반드시 부트 섹터가 오게 되어 있는데, VBR의 크기가 1섹터이면 부트섹터=VBR이라고 할 수 있다.
하지만 VBR의 크기가 1섹터보다 큰 경우, 부트섹터는 VBR에 종속된다고 보아야 한다. 1섹터는 부트 섹터이고, 그 뒷부분은 VBR 이지만 부트섹터는 아니니깐, 결론은 (부트섹터 ⊂ VBR)

MBR 영역의 부트코드에서.. 마지막 루틴이 "부팅 가능한 파티션의 첫번째 섹터를 메모리 0x0000:7C00에 복사하는 것이었다. VBR은 이 부팅 가능한 파티션의 첫번째 섹터 라고 보면 된다. 보통 파티션은 운영체제에서 지원하는 파일시스템으로 포맷되어 있다. 그래서 통상 NTFS VBR, FAT32 VBR 이런 식으로 불린다. 

VBR(Volume Boot Record)의 일반적인 구조

 

VBR의 일반적인 구조는 위 그림과 같다. 크기는 보통 1섹터(512 byte) 이다.
MBR 영역이 부팅 가능한 파티션을 찾아 파티션으로 분기하는 작업을 한다면, VBR은 MBR 영역의 작업 다음에 수행되는 과정이다.

NTFS VBR 디스크 덤프


위 그림은 NTFS VBR 영역을 디스크 덤프 뜬 것이다.
노란색 음영 부분은 CPU Jump Command(3 byte) + OEM ID(8 byte) 부분이다.
CPU 점프 명령은 보통 [EB 52 90] 값을 가진다. 이것의 의미는 jmp 0x52 이다. 0x52로 점프하여 그 이후로 코드를 실행하라는 의미
OEM ID 부분에는 파일시스템의 종류가 문자열 아스키코드가 입력되어 있다.

빨간색 음영 부분은 BPB(BIOS Parameter Block)이고, 보라색은 BPB 확장 영역(EBPB) 이다.
해당 영역에는 파티션의 물리주소 레이아웃에 관련된 내용들이 포함되어 있다. (총 섹터 수, 크기, 트랙 당 섹터 수 등)
BPB, EBPB를 참조하여 레이아웃을 확인하고 파일시스템을 부팅하게 된다. (참고로 EBPB는 FAT12, FAT16 에는 없다)

주황색  음영 부분은 부트스르랩 코드(Bootstrap Code) 이다.
해당 영역에는 해당 볼륨 정보, 파일시스템 타입, 부트코드 및 에러메세지 등이 담겨있다.

그리고 끝에 0x55, 0xAA 는 MBR 영역에서도 확인했던 시그니쳐이다. 이 값은 고정인 모양이다.

어차피 FAT16 포스팅 내용에 FAT16 VBR 구조를 설명하겠지만, VBR 용어 자체의 의미를 알고 있어야 내용 이해에 좀더 효율적일 것 같아 별도로 작성했다.

아래 그림은 FAT16의 VBR 구조이다. FAT16이 가장 간단한 구조를 갖고 있기 때문에 예시로 사용하였다.

그림출처 : http://forensic.korea.ac.kr/DFWIKI/index.php/구조분석/FAT

앞서 디스크 덤프를 보며 설명했던 내용들 중 BPB까지 포함되어 있다. (EBPB 부분과 부트코드, 서명은 빠져있음)
좀 더 디테일한 내용은 FAT, NTFS 에 대한 내용에서 다룰 예정이다.

 

참고 URL
http://forensic-proof.com/archives/431
http://forensic.korea.ac.kr/DFWIKI/index.php/%EA%B5%AC%EC%A1%B0%EB%B6%84%EC%84%9D/FAT

참고 도서
<리버싱 윈도우> - 저자 : 한주성

 

반응형