본문 바로가기

[+] Forensic

File System - NTFS (16)

이전글에서는 모든 파일에 할당 되는 속성을 알아봤다면 이번 글부터는 인덱스 속성의 데이터 구조체를 알아 볼 것이다.

[$INDEX_ROOT]
해당 속성은 타입 식별자 144를 가지며, 항상 거주 속성이다. 해당 속성은 항상 인덱스 트리의 루트이며, 오직 인덱스 엔트리들의 작은 목록만 포함한다. 해당 속성의 레이아웃은 아래와 같다.

 [그림 1 - $INDEX_ROOT 속성의 레이아웃]

$INDEX_ROOT 속성 헤더는 16바이트의 크기를 가지며, 노드헤더 또한 16바이트의 크기를 가진다. 

 * 참고 : 노드헤더는 $INDEX_ROOT와 $INDEX_ALLOCATION에 모두 동일하게 적용되므로 두 속성을 분석한 후 따로 분석 할 것이다.

아래는 $INDEX_ROOT 속성 헤더 오프셋이다.

 [그림 2 - $INDEX_ROOT 속성 헤더 오프셋]

 - 인덱스 내의 속성 타입 : 인덱스에 포함되어 있는 엔트리의 속성 타입을 포함하는 오프셋인데, 엔트리가 속성을 사용하지 않는 경우 0으로 설정된다.

 - 수집 정렬 규칙 : $INDEX_ALLOCATION 속성에서 정렬되는 규칙이다.

 - 인덱스 레코드 크기(byte) : 인덱스 레코드의 바이트 크기를 포함하는 오프셋이다.

 - 인덱스 레코드 크기(클러스터) : 인덱스 레코드 크기만큼 필요한 클러스터 수

 * 참고 : $INDEX_ROOT 속성 헤더 바로 다음 바이트부터 노드헤더가 시작된다. 

 

[$INDEX_ALLOCATION]
큰 디렉토리일 경우 인덱스 엔트리가 $INDEX_ROOT 속성에 적합하지 않는다. 이러한 경우 비 거주 속성인 해당 속성이 사용된다. 해당 속성의 내용은 인덱스 레코드로 이루어져 있는데, 인덱스 레코드의 크기는 고정이며, 정렬된 트리의 노드 하나를 포함하고 있다. 인덱스 레코드의 크기는 $INDEX_ROOT 속성 헤더에 정의되어 있으며, 보통 4096byte 이다.
해당 속성의 타입 식별자는 160이며 해당 속성의 내용인 인덱스 레코드는 특별한 헤더 데이터 구조체로 시작한다. 헤더 다음으로 노드 헤더와 인덱스 엔트리의 목록이 온다.
아래는 해당 속성의 레이아웃이다.

 [그림 3 - $INDEX_ALLOCATION 속성의 레이아웃]

 아래는 인덱스 레코드 헤더의 오프셋이다.

 [그림 4 - 인덱스 레코드 헤더의 오프셋]

 - 시그니처 : 인덱스 레코드에는 시그니처가 존재하며 시그니처는 "INDX" 이다.

 - Fixup 배열 오프셋 : 해당 오프셋의 값은 Fixup 배열의 오프셋 주소로 인덱스 레코드 헤더 시작부분에서 상대적이다. 


 * 참고 : 인덱스 레코드 헤더 바로 다음 바이트부터 노드헤더가 시작된다. 


[$BITMAP]
해당 속성은 인덱스 레코드의 할당 상태를 관리하는 속성이다. 모든 인덱스 레코드가 할당 되는 것은 아니며 운영체제 판단에 의해 필요시 할당 된다.

 * 참고 : $BITMAP 속성은 MFT 엔트리 할당 추적을 위해 $MFT에 의해서 사용 된다.

해당 속성은 타입 식별자 176을 가지며 각 바이트를 비트로 변환하여 인덱스 레코드와 맵핑한다.

[그림 5 - $BITMAP 속성의 오프셋]

위 이미지를 분석하여 보면 첫 바이트가 0x01인데 비트로 변환 시 0000 0001 이다. 이건 인덱스 레코드 0이 할당되었다는 것을 의미한다.
만약 0x02 바이트이어서 0000 0010 이라면 인덱스 레코드 1에 할당 되었다는 것을 의미한다. 


[인덱스 노드 헤더 데이터 구조체]
앞서 말한 노드헤더를 여기서 분석하여 볼 것이다. 노드 헤더는 각 속성의 헤더가 끝나고 바로 다음 바이트부터 시작이 되는데 그 크기는 16byte 이다.

 [그림 6 - 노드헤더 오프셋]

 - 인덱스 엔트리 목록의 시작 오프셋 : 해당 값은 노드 헤더 시작에서 상대적이다.

 - 인덱스 엔트리 목록의 마지막 오프셋 : 해당 값은 노드 헤더 시작에서 상대적이다.

 - 플래그 : 플래그는 설정되지 않거나 0x01로 설정되는 경우 밖에 없으며, 0x01로 설정되는 경우 인덱스 엔트리 목록에 있는 엔트리에 의해 지정된 자식 노드가 있다는 것을 의미한다. 



 

'[+] Forensic' 카테고리의 다른 글

File System - NTFS (18)  (0) 2012.02.18
File System - NTFS (17)  (0) 2012.02.17
File System - NTFS (15)  (0) 2012.02.16
File System - NTFS (14)  (0) 2012.02.15