Security/Forensics
[Artifact] NTFS - $MFT
bonggang
2019. 11. 13. 04:31
MFT Entry Header
Content | offset | size | |
Signature | 0x00 | 4 | FILE |
Offset of Fixup Array | 0x04 | 2 | 48(0x30) |
Count of Fixup Values | 0x06 | 2 | 3(0x03) |
$LogFile Sequence Number(LSN) | 0x08 | 8 | |
Sequence Value | 0x10 | 2 | |
Hard Link Count | 0x12 | 2 | 1 |
Offset to First Attribute | 0x14 | 2 | 56(0x38) |
Flags | 0x16 | 2 | 0x01(MFT Entry 사용중) 0x02(MFT Entry = directory) |
Used Size of MFT Entry | 0x18 | 4 | |
Allocated Size of MFT Entry | 0x1C | 4 | 1024(0x0400) |
File Reference to Base MFT Entry | 0x20 | 8 | |
Next Attribute ID | 0x28 | 2 | |
Align to 4B boundary | 0x2A | 2 | |
Number of this MFT Entry | 0x2C | 4 |
MFT Attribute
MFT Entry Header | Attr Header | Attr Content | Attr Header | Attr Content | END Marker (0xFFFFFFFF) |
- MFT Entry는 MFT Entry Header와 여러 개의 Attribute로 이루어진다.
Attribute Header
Content | offset | size | |
Attribute Type ID | 0x00 | 4 | |
Length of Attribute | 0x04 | 4 | |
Non-Resident Flag | 0x08 | 1 | 0(resident) 1(non-resident) |
Length of Name | 0x09 | 1 | |
Offset to Name | 0x10 | 2 | |
Flags | 0x12 | 2 | 1 |
Attribute Identifier | 0x14 | 2 |
Attribute Type ID
속성 ID | 이름 | 내용 |
0x10 | $STANDARD_INFORMATION | 최근 접근/생성 시간, 소유자, 보안 ID와 같은 일반적 정보 |
0x20 | $ATTRIBUTE_LIST | 속성 리스트 정보 |
0x30 | $FILE_NAME | 파일 이름(유니코드 형식) |
0x40 | $VOLUME_VERSION | 볼륨 정보, 오직 1.2버전에만 존재 |
0x40 | $OBJECT_ID | 16bytes로 이루어진 파일이나 디렉토리 고유 값 |
0x50 | $SECURITY_DESCRIPTOR | 파일의 접근 제어와 보안 속성 |
0x60 | $VOLUME_NAME | 볼륨 이름과 관련 정보를 소유 |
0x70 | $VOLUME_INFORMATION | 파일시스템의 버전과 여러 Flags |
0x80 | $DATA | 파일 내용 |
0x90 | $INDEX_ROOT | 인덱스 트리의 루트 노드 |
0xA0 | $INDEX_ALLOCATION | 인덱스 트리와 연결된 노드 |
0xB0 | $BITMAP | 할당 정보 관리 |
0xC0 | $SYMBOLIC_LINK | Soft Link 정보(버전 1.2에만 존재) |
0xC0 | $REPARSE_POINT | Reparse 위치 정보 |
0xD0 | $EA_INFORMATION | |
0xE0 | $EA | |
0x0100 | $LOGGED_UTILITY_STREAM | 암호화된 속성 정보 및 Key 소유 |
Resident 항목
Content | offset | size |
Size of Content | 0x10 | 4 |
Offset to Content | 0x14 | 2 |
Indexed Flag | 0x16 | 1 |
Padding | 0x17 | 1 |
Non-Resident 항목
Content | offset | size |
Startin VCN of the runlist | 0x10 | 8 |
Ending VCN of the runlist | 0x18 | 8 |
Offset to the runlist | 0x20 | 2 |
Compression unit size | 0x22 | 2 |
Padding | 0x24 | 4 |
Allocated Size of Attribute content | 0x28 | 8 |
Real Size of Attribute content | 0x30 | 8 |
Initialized Size of Attribute Content | 0x38 | 8 |
$STANDARD_INFORMATION
Content | offset | size | |
속성 헤더(공통 헤더+Resident 속성 헤더) | |||
Creation Time | 0x00 | 8 | 파일 생성 시간 |
Modified Time | 0x08 | 8 | 파일 마지막 수정 시간 |
MFT Modified Time | 0x10 | 8 | MFT 마지막 수정 시간 |
Last Accessed Time | 0x18 | 8 | 파일 마지막 접근 시간 |
Flags | 0x20 | 4 | 0x0001(읽기 전용), 0x0002(숨김), 0x0004(시스템), 0x0020(Archive), 0x0040(장치), 0x0080(일반), 0x0100(임시), 0x0200(Sparse), 0x0400(Reparse Point), 0x0800(압축됨), 0x1000(오프라인), 0x4000(압축) |
Maximum number of Version | 0x24 | 4 | |
Version Number | 0x28 | 4 | |
Class ID | 0x2C | 4 | |
Owner ID | 0x30 | 4 | |
Security ID | 0x34 | 4 | |
Quota Charged | 0x38 | 8 | |
Update Sequence Number(UCN) | 0x40 | 8 |
$FILE_NAME
Content | offset | size | |
속성 헤더(공통 헤더+Resident 속성 헤더) | |||
Parent File Refernce Address | 0x00 | 8 | 부모 디렉토리 위치 |
Creation Time | 0x08 | 8 | 파일 생성 시간 |
Modified Time | 0x10 | 8 | 파일 마지막 수정 시간 |
MFT Modified Time | 0x18 | 8 | MFT 마지막 수정 시간 |
Accessed Time | 0x20 | 8 | 파일 마지막 접근 시간 |
파일 할당 크기 | 0x28 | 8 | |
파일 실제 크기 | 0x30 | 8 | |
Flag | 0x38 | 4 | |
Reparse Value | 0x3C | 4 | |
Length of name | 0x40 | 1 | |
Namespace | 0x41 | 1 | |
Name | 0x42 | 유니코드(utf-16)로 인코딩 된 파일 이름 |
$DATA
Content | offset | size | |
속성 헤더(공통 헤더+Resident 속성 헤더) | |||
실제 데이터 | 0x00 | 가변 | 실제 데이터 |