Information Security/Digital Forensic

Windows 파일 시스템과 MBR(Master Boot Record)

hdhwang 2022. 6. 3. 01:25

1. 파일 시스템

파일 시스템은 도스나 윈도우 리눅스와 같은 운영체제가 파일을 저장하기 위해 파일을 관리하는 체계를 말한다. 모든 운영체제는 각각의 파일시스템을 사용하는데 서로 호환이 되지 않고 독특한 자신들만의 파일시스템을 만들어 운영하게 된다. 파일 시스템을 작성해야 하드디스크를 포맷하고 드라이브를 설정해서 파일을 저장할 수 있고 파일을 저장하는 방식은 이 파일 시스템에 따라 결정된다. 윈도우의 파일 시스템은 FAT(File Allocation Table) NTFS(NT File System) 두 가지 종류의 파일 시스템을 사용한다.

1.1. FAT

FAT 파일 시스템은 도스 시절부터 사용되고 있는 대표적인 파일 시스템으로, 하드디스크에 FAT(File Allocation Table : 파일 할당 테이블)라는 영역을 만들어 이 안에 하드디스크에 저장되어 있는 파일의 실제 위치와 크기, 이름 등의 정보를 기록해 두고 이를 이용해 파일을 호출하고 저장한다.

도스부터 윈도우 95까지는 FAT 방식에서 파생된 FAT16 파일 시스템을 사용해 왔으며 윈도우 98/Me/XP는 거의 대부분 대용량 하드디스크를 지원하는 FAT32 파일 시스템을 사용하고 있다. FAT32 파일은 FAT16에 비해 클러스터(Cluster)의 크기가 훨씬 작기 때문에 하드디스크의 공간을 줄일 수 있고 좀 더 안정적이다. 윈도우는 하드디스크에 클러스터(Cluster) 단위로 데이터를 기록한다. 클러스터(Cluster)란 하드디스크에 데이터가 기록되는 최소 저장 단위로 하드디스크의 최소 단위인 섹터(Sector)를 여러 개 모아 만든 논리적인 저장 단위 이다. 윈도우는 파일을 저장 할 때 이 클러스터 단위로 파일을 저장한다. 이 클러스터의 크기는 파일 시스템과 드라이브 용량에 따라 달라진다. 예를 들어 클러스터 하나의 크기가 4KB일 경우, 2KB짜리 파일을 저장하면 이 파일 혼자 4KB짜리 클러스터 하나를 차지하게 된다. 만약 2KB짜리 파일이 30개가 있다면 총용량은 60KB(2KB X 30)밖에 안되지만 하드스크에서 30개의 클러스터 즉 120KB(4KB X 30)의 용량을 소비하게 된다. 각 클러스터 마다 2KB씩 총 60KB 공간이 그냥 낭비되는 것이다. 윈도우에서는 하드디스크이 용량이 커지면 커질수록 데이터를 저장하는 단위인 클러스터의 크기도 커진다.

1.2. NTFS

NTFS는 윈도 NT 계열 운영체제의 파일 시스템으로 윈도 2000, 윈도 XP, 윈도 서버 2003, 윈도 서버 2008, 윈도 비스타, 윈도 7, 윈도 서버 2008 R2 등에도 포함되어 있다. NTFSNT는 윈도 NT와 비슷하게 새로운 기술이라는 뜻의 New Technology의 준말이다. MS-DOS와 이전 버전의 윈도에서 쓰였던 마이크로소프트의 이전 FAT 파일 시스템을 대체하였다. NTFSFATHPFS(고성능 파일 시스템)을 거쳐 몇 가지 개선이 있다. 이를테면, 메타데이터의 지원, 고급 데이터 구조의 사용으로 인한 성능 개선, 신뢰성, 추가 확장 기능을 더한 디스크 공간 활용을 들 수 있다.

2. MBR(Master Boot Record)

MBR은 저장매체의 첫 번째 섹터(LBA 0)에 위치하는 512 바이트 크기의 영역이다. MBR은 다음의 것들 가운데 하나 이상을 위해 사용된다.

  • 디스크 주 파티션 테이블 소유
  • bootstrap 운영체제
  • 32비트 디스크 서명이 있는 각 디스크 매체의 구별

MBR 영역은 부트 코드(446바이트)와 파티션 테이블(64바이트)로 구성되어 있으며 자세한 MBR 데이터 구조는 다음과 같다.

범위 설명 크기
10진수 16진수
0 - 445 0x0000 - 0x01BD 부트코드 446바이트
446 - 461 0x01BE - 0x01CD 파티션 테이블 엔트리 #1 16바이트
462 - 477 0x01CE - 0x01DD 파티션 테이블 엔트리 #2 16바이트
478 - 493 0x01DE - 0x01ED 파티션 테이블 엔트리 #3 16바이트
494 - 509 0x01EE - 0x01FD 파티션 테이블 엔트리 #4 16바이트
510 - 511 0x01FE - 0x01FF 시그니처(0x55AA) 2바이트

 

주 파티션 테이블은 4개까지 사용이 가능하다. 만약 4개 이상의 파티션이 필요하다면 MBR에서 3개의 주 파일시스템 파티션을 생성하고, 디스크 나머지를 주 확장 파티션에 할당해야 한다. 파티션 레코드 구조는 다음과 같다.

 

오프셋 설명
0x00 (1바이트) 파티션 상태(0x80 = 부팅 가능, 0x00 = 부팅 불가, 기타 = 비정상)
0x01 (3바이트) 파티션의 첫 번째 섹터의 CHS 주소
0x04 (1바이트) 파티션 종류(0x07 = NTFS or exFAT)
0x05 (3바이트) 파티션의 마지막 CHS 주소
0x08 (4바이트) 파티션의 첫 번째 섹터의 LBA
0x0C (4바이트) 파티션의 크기 (단위 : 섹터)
 

Appendix. 참고 문헌

  1. 위키백과, “마스터 부트 레코드”, http://ko.wikipedia.org/wiki/%EB%A7%88%EC%8A%A4%ED%84%B0_%EB%B6%80%ED%8A%B8_%EB%A0%88%EC%BD%94%EB%93%9C
  2. 김진국, “File System/MBR/GPT”, “http://forensic-proof.com/wp-content/uploads/2010/10/FP_File_System_MBR_GPT.pdf”, 2010.
  3. 브라이언 캐리어, 주필환, “파일시스템 포렌식 분석”, 케이앤피IT, 2010.