File System Forensics

[File System] NTFS (06) - 인덱스

도깬리 2023. 7. 2. 06:26

안녕하세요. 도깬리 포렌식스 입니다.

오늘은 NTFS의 Index에 대해 알아 보겠습니다. 모두 화이팅 하세요!!!

 

인덱스

인덱스는 정렬된 순서대로 저장된 속성(:$FILE_NAME)의 모음 입니다.

인덱스 데이터 구조를 사용하는 가장 대표적인 것은 바로 디렉토리’ 입니다.

인덱스를 사용하면 원하는 자료를 빠르게 검색할 수 있습니다.

 

B-Trees

NTFS Binary_Tree구조를 약간 변형시켜 B-Tree라는 이름을 사용합니다.

아래의 예에서, 전수조사를 하는 경우 모두 5번을 비교하여야 하지만, 트리 구조를 이용하면 3번의 비교만으로 원하는 값을 찾을 수 있게 됩니다.

이것은 검색 속도를 빠르게 합니다.

 

 

NFTS에서의 B-Tree 구조에서는 각 노드당 2개 이상의 자식을 둡니다.

NTFS에서는 각 노드를 Index Node라고 부릅니다.

Index Node는 마지막에 끝을 나타내는 노드(End of Node)를 갖습니다.

NTFS에서 Index Node가 포함할 수 있는 자식노드의 수는 n + 1개 입니다.

하위 디렉토리는 다시 각자의 독립적인 B-Tree를 만듭니다.

 

 

NTFS의 인덱스 노드

Index Node Header Index Entry로 나뉜니다.

각 노드의 마지막 Entry에는 End of Node가 옵니다.

 

 

인덱스 노드는 반드시 $INDEX_ROOT 또는 $INDEX_ALLOCATION에 속해 있어야 합니다.

 

NTFS의 인덱스 속성

$INDEX_ROOT 속성

항상 거주형이고, 한 개의 노드를 갖습니다.

 

$INDEX_ALLOCATION 속성

비거주형이고, 많은 노드를 포함할 수 있습니다.

4KB의 고정된 크기(인덱스 레코드)의 노드를 외부 클러스터에 저장합니다.

 

$BITMAP 속성

외부 클러스터에 저장되는 인덱스 레코드의 할당 상태를 보여 줍니다.

 

 

 

 

 

감사합니다. 오늘도 즐거운 하루 되세요.

"좋아요"와 "구독하기"는 힘이 됩니다.

참고문서 : File System Forensic Analysis (Brian Carrier)