B1ueJay

NTFS 파일 시스템 - (2)MFT 본문

Digital Forensic/File System

NTFS 파일 시스템 - (2)MFT

B1ueJay 2019. 11. 14. 20:17

MFT(Master File Table)

  • VBR 다음 위치하고 크기는 가변적이라서 필요시 데이터 영역에 추가 할당돼서 저장
  • 파일, 디렉터리, 메타 데이터를 모두 파일 형태로 관리
  • 각 파일의 이름, 시간, 위치, 크기 등의 정보를 저장
  • MFT Entry의 집합으로 구성됨
    → 파일 시스템에 파일이나 디렉터리가 증가하면 MFT Entry도 마찬가지로 새로 생성된 파일이나 디렉터리만큼 늘어남
  • 각 MFT Entry는 0번부터 시작하는 주소를 가짐
  • 0 ~ 15번 MFT Entry는 시스템에 할당됨
    → 메타 데이터는 여기에 저장됨
  • 일반 사용자 파일과 구별하기 위해 파일명이 '$'으로 시작됨

[그림 1] 메타 데이터 파일 MFT Entry

MFT Entry

저장된 모든 파일과 디렉터리 최소한 1개 이상의 MFT Entry에 자신의 정보를 저장하고 있으며 저장되는 정보의 양이

많으면 여러 개의 MFT Entry에 나누어 저장하기도 한다.

  • 1개의 MFT Entry 크기는 1KB
  • MFT Entry Header와 Attribute로 구성됨
  • MFT Entry Header의 크기는 42 bytes
    → MFT Entry의 정보와 상태를 기록
  • 1KB에서 Header 부분을 제외한 나머지는 Attribute에 저장됨
    → 파일이나 디렉터리의 정보를 저장
    → Attribute는 여러 개를 가질 수 있음

[그림 2] MFT Entry 구조

Attribute(속성)

  • 저장된 파일과 디렉터리의 이름, 시간, 속성, 내용 정보를 모두 속성 형태로 저장
  • Attribute에는 Header와 Content 부분으로 구성됨
  • Attribute 간의 Header 구조는 같지만 Content 부분은 Attribute의 종류에 따라 다르게 구성됨

[그림 3] 속성이 2개인 MFT Entry 구조

Resident & Non-Resident

MFT Entry의 크기는 한정적이기 때문에 Attribute 내용 크기에 따라 Resident와 Non-Resident Attribute로 다시 구분할 수

있다.

Resident 방식

Attribute의 내용이 크지 않아 MFT Entry 안에 속성 전체를 완전하게 저장할 수 있는 방식

Non-Resident 방식

Attribute의 내용이 너무 커서 MFT Entry 안에 전부 다 기록할 수 없을 때 사용하는 방식

MFT Entry 안에 Attribute Header만 존재하고 Content는 별도의 클러스터를 할당받아 저장함

→ 실제 Content 클러스터 위치 정보만 저장

[그림 4] Non-Resident 개념도

Cluster Runs

Cluster Runs이라는 데이터 구조를 통해 Cluster Runs 구조체가 실제 Attribute Content이 저장된 클러스터 위치로 연결해준다.

  • Cluster Runs 구조는 Attribute Content이 저장된 클러스터의 시작 위치와 길이가 저장됨

[그림 5] Cluster Runs 개념도

LCN & VCN

NTFS 파일 시스템에는 LCN과 VCN이라는 주소 할당 방식을 사용한다.

※ LCN(Logical Cluster Number)

볼륨의 첫 번째 클러스터부터 순차적으로 저장하는 주소

→ 할당된 주소는 고유하다

※ VCN(Virtual Cluster Number)

파일의 첫 번째 클러스터부터 순차적으로 저장하는 주소

→ 파일 내적 주소가 고유

[그림 6] LCN과 VCN 개념도