보안이론

파일 시스템과 MBR, VBR

은동동동 2025. 9. 4. 00:37

<파일 시스템이란?>

컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 하는 체계입니다.

이와 관련된 개념으로 파티션, 볼륨이 있습니다.

  • 파티션 : 하나의 저장 장치 내의 공간을 분리해 독립적인 공간을 만든 것
  • 볼륨 : 하나의 저장 장치 내의 공간을 분리 + 파일 시스템을 갖춘 상황(드라이브라고도 부름)

<파일 시스템을 알아야 하는이유?>

  1. 파일 시스템 정보 없이 데이터 저장 위치를 알아내는 것은 힘들다
  2. 데이터 위치를 알아냈다고 해도, 메타데이터(쓰기 시간, 생성시간 등..)을 알아내기 위해서는 전반적인 파일 시스템의 구조에 대해 이해해야 한다.
  3. 대부분의 파일 시스템의 경우 저널링 기능을 지원하는데, 이를 통해 파일 변경 이력을 알아내거나 삭제 파일을 복구할수도 있다

<대표적인 파일 시스템의 종류>

 

Windows

  • NTFS : Windows NT 3.1 이후부터 현재까지 사용하고 있는 파일 시스템. 파일 암호화, 저널링, 파일 복구 기능 등을 지원
  • ReFS : NTFS를 대체하기 위한 차세대 파일 시스템. 파일 무결성 검사, 데이터 복구 기능 제공

리눅스

  • EXT4 : EXT2와 3에서 사용하던 블록 매핑 방식을 Extent 방식으로 바꾸면서 많은 파일을 빠르게 접근할 수 있게 되었음. 최대 볼륨 크기와 최대 파일 크기를 확장했음.

Unix

  • UFS

macOS

  • HFS+ : 애플 구형 파일시스템. 매킨토시에서 사용하던 HFS의 상위 버전
  • APFS : 애플 신형 파일시스템. 데이터 체크섬, 나노초 타임스탬프. 스냅샷 등의 기능을 제공

공통

  • FAT/FAT32
    • FAT32는 최대 파일 크기가 4GB, 최대 파티션 크기가 8TB로 약간 작은편. 자료 구조가 단순하고 데이터 복구와 같은 기능을 지원 X
    • 하지만 FAT32는 다양한 운영체제와의 호환성이 좋음 → 현재는 USB 등에 주로 사용됨
  • exFAT : FAT32의 크기 단점을 개선

 

<MBR과 VBR>

출처 : http://forensic-proof.com/archives/439

파일 시스템 내에서 컴퓨터의 부팅 과정에서 사용되는 영역을 의미합니다.

파일 시스템 종류에 따라 조금씩 저장 위치 등이 다를수는 있지만 파일 시스템 내에서 만드시 필요한 부분이기도 합니다.

MBR : Master Boot Record로, 디스크의 첫 섹터(맨앞 512바이트)에 저장된 정보를 말합니다. 이 디스크의 파티션 정보, 각 파티션에 설치된 볼륨 정보 등 디스크에 관한 정보가 저장되어 있습니다.

VBR : Volume Boot Record로, 볼륨 각각에 관한 정보가 저장되어 있는 것을 말합니다. 각 볼륨마다 다른 VBR을 가지고 있게 됩니다.

컴퓨터 메인보드의 BIOS가 POST 과정 을 마치고나면 MBR내에 있는 부터 코드를 호출 하게 되고, MBR에서 다시 VBR로 흐름이 이어지는 구조입니다.

즉, 디스크 불러오고, 디스크에서 나눠진 볼륨 정보 확인하는 흐름인 것입니다

 

<MBR 구조 (512바이트)>

Offest 설명
0x0 ~ 0x1BD (446바이트) 부트코드(부팅 과정에서 이용)
0x1BE ~ 0x1CD(16바이트) 파티션 테이블 엔트리 #1
0x1CE ~ 0x1DD(16바이트) 파티션 테이블 엔트리 #2
0x1DE ~ 0x1ED(16바이트) 파티션 테이블 엔트리 #3
0x1EE ~ 0x1FD(16바이트) 파티션 테이블 엔트리 #4
0x1FE ~ 0x1FF 시그니처. 값은 0x55 0xAA로 고정

그리고 각 파티션 테이블 엔트리에 대해서 자세히 알아보겠습니다

 

<MBR의 파티션 테이블 엔트리(16바이트)>

Offset 크기 설명
1byte 부트 플래그 (0x00은 부팅 불가 0x80은 가능)
3bytes CHS 시작 주소(섹터 단위)
1byte 파일 시스템 타입(0x07은 NTFS, 0x0c는 FAT32)
3bytes CHS 끝주소 (섹터 단위)
4bytes LBA 시작 주소 (섹터 단위)
4bytes 파티션 총 섹터 개수

파티션 엔트리는 디스크 내의 할당해놓은 파티션의 정보를 담고 있습니다. 

파티션 엔트리 내의 값으로 여러 주요한 정보들을 찾을 수 있습니다.

LBA 시작주소 * 0x200 ⇒ 해당 파티션의 VBR 시작 주소

파티션 총 섹터 개수 *200 = 해당 파티션 총 크기

VBR의 경우 파일 시스템마다 전부 다르기 때문에 MBR에서 지시한 정보를 우선적으로 안 후에 각 파일시스템 종류별 학습이 필요합니다.

다음 블로그 글에서 VBR을 포함한 여러 파일시스템의 구조를 분석해보도록 하겠습니다!

 

참고자료

https://en.m.wikipedia.org/wiki/Volume_boot_record

https://en.wikipedia.org/wiki/Master_boot_record

https://en.wikipedia.org/wiki/File_system

 

(문제시 삭제하겠습니다)