-
[Windows] NTFS> Information Security/Forensics 2014. 1. 2. 21:31
NTFS File System
NTFS 파일시스템은 New Technology File System의 약자이며, MS-DOS 이전의 Windows버전에서 사용되었던 FAT파일시스템을 대체하는 파일시스템이다. 최근의 대부분의 Windows계열의 OS는 NTFS 파일시스템을 이용하고 있다.
NTFS의 구조는 크게 VBR(Volume Boot Record), MFT(Master File Table), Data Area로 구성되어 있다.
VBR(Volume Boot Record)
MFT(Master File Table)
파일과 디렉토리를 관리하기 위한 MFT Entry의 집합체
Data Area
MFT영역은 그 자체를 하나의 파일로고려하기 때문에 데이터 영역과 구별되지 않고 혼재되어 있다.
Boot Sector
Additional Boot Code
VBR(Volume Boot Record)
시스템이 부팅을 시도할 때, 디스크에서의 VBR(Volume Boot Record)을 필요로 하며 VBR은 NTFS로 포맷된 드라이브의 가장 앞부분에 위치하며, 부트 섹터와 추가적인 부트 코드가 저장되어 있다.
VBR은 클러스터 크기에 따라 VBR의 섹터 수에 차이가 있다.
클러스터 크기에 따른 VBR 크기
클러스터 크기 (Byte)
VBR 크기 (Sector)
512
1
1K
2
2K
4
4K
8
VBR의 첫 섹터에는 부트 섹터와 함께 추가적인 부트코드가 존재한다. 클러스터 크기가 512 바이트인 경우, VBR 크기가 1섹터이므로 VBR 자체가 부트 섹터가 된다. VBR의 크기가 1 섹터를 넘는 경우, 나머지 섹터들은 추가적인 부트 코드의 저장 용도 또는 NTDLR(NT Loader)을 빠르게 로드하기 위해 NTDLR의 위치를 저장하기 위한 용도로 사용된다.
NTFS의 부트섹터의 구조는 아래와 같다.
NTFS 부트 섹터 데이터 구조
바이트 offset
상세 내용
10진수
16진수
0-2
0x0000-0x0002
Jump command to boot code
(usually 0xEB5290)
3-10
0x0003-0x000A
OEM ID (typically “NTFS “)
11-12
0x000B-0x000C
BIOS
Parameter
Block
(BPB)
Bytes per sector
13-13
0x000D-0x000D
Sectors per cluster
14-15
0x000E-0x000F
Reserved sectors
16-18
0x0010-0x0012
Always 0
19-20
0x0013-0x0014
Unused
21-21
0x0015-0x0015
Media descriptor
22-23
0x0016-0x0017
Always 0
24-25
0x0018-0x0019
Sectors per track
26-27
0x001A-0x001B
Number of heads
28-31
0x001C-0x001F
Hidden sector
32-35
0x0020-0x0023
Unused
36-39
0x0024-0x0027
Unused
40-47
0x0028-0x002F
Total sectors
48-55
0x0030-0x0037
Logical cluster Number for the file $MFT
56-63
0x0038-0x003F
Logical cluster Number for the file $MFTMirr
64-67
0x0040-0x0043
Clusters per file record segment
68-71
0x0044-0x0047
Clusters per index block
72-79
0x0048-0x0053
Volume serial number
80-83
0x0050-0x01FD
Checksum
84-509
0x0054-0x00FF
Boot code and error message
510-511
0x01FE-0x0002
Siganature(0x55AA)
다음은 Boot Sector의 세부 구조를 색 별로 구분해놓은 것이다.
MFT(Master File Table)
MFT(Master File Table)는 VBR(Volume Boot Record)이후에 존재하지만 위치는 고정되어 있지 않다.
MFT는 메타 데이터 파일이라 불리는 여러 개의 MFT Entry의 집합으로 구성되어있다. MFT Entry에는 0부터 15까지 총 16개의 엔트리가 존재하는데, 파일이름 앞에 특수문자 ‘$’를 붙이는 형태이다.
[MFT Entry]
[MFT 엔트리 목록]
MFT Entry는 1,024byte의 고정된 크기를 가지며, ‘Attributes’에는 각 파일의 특성에 따라 MFT 엔트리 속성타입을 가지고 있다.
[MFT Entry > Attributes]
각 Attribute(속성)값의 16진수 형태는 $STANDARD_INFORMATION(0x0010), $ATTRIBUTE_LIST(0x0020) ....와 같이 각 속성들을 구분하는 구분자가 되기도 한다.
아래 그림을 보자. $MFT 엔트리를 열어본 것이다.
미묘하게 색이 구분되어 있는 것을 볼 수 있는데, WinHex에서 기본적으로 제공하는 기능이기도 하다.
각 필드의 2byte는 속성값의 구분자의 역할을 한다.
[ Attributes > Resident Attribute/ Non Resident Attribute]
한편, Attribute는 MFT Entry내의 속성 내용의 사이즈에 따라 Resident Attribute와 Non-Resident Attribute로 분류된다.
구분
역할
Resident Attribute
- MFT Entry내에 속성헤더와 내용이 모두 저장되는 경우
- 속성 내용이 많아지면 여러 개의 MFT Entry 사용
Non-Resident Attribute
- $Data의 속성 내용이 700byte 이상일 경우
- 별도의 클러스터에 속성 저장
Resident Attribute는 MFT Entry 내에 속성 헤더와 속성 내용이 모두 저장되는 경우이며, 속성 내용이 많아지면 여러 개의 MFT Entry를 사용한다. Non-Resident Attribute는 $Data의 속성 내용이 700byte 이상일 경우 별도의 클러스터에 해당 속성을 저장하는 경우이다. 기존 속성 내용에는 저장한 클러스터의 위치 정보만 저장한다.
<참고>
www.forensicproof.com - MFT Entry
UCS Lab 8. 파일시스템 구조 및 복구 - NTFS
728x90반응형'> Information Security > Forensics' 카테고리의 다른 글
[Windows] '$LogFile' entry at the NTFS File System (0) 2014.01.07