본문 바로가기

NTFS MFT

File System - NTFS (16) 이전글에서는 모든 파일에 할당 되는 속성을 알아봤다면 이번 글부터는 인덱스 속성의 데이터 구조체를 알아 볼 것이다. [$INDEX_ROOT] 해당 속성은 타입 식별자 144를 가지며, 항상 거주 속성이다. 해당 속성은 항상 인덱스 트리의 루트이며, 오직 인덱스 엔트리들의 작은 목록만 포함한다. 해당 속성의 레이아웃은 아래와 같다. [그림 1 - $INDEX_ROOT 속성의 레이아웃] $INDEX_ROOT 속성 헤더는 16바이트의 크기를 가지며, 노드헤더 또한 16바이트의 크기를 가진다. * 참고 : 노드헤더는 $INDEX_ROOT와 $INDEX_ALLOCATION에 모두 동일하게 적용되므로 두 속성을 분석한 후 따로 분석 할 것이다. 아래는 $INDEX_ROOT 속성 헤더 오프셋이다. [그림 2 - $I.. 더보기
File System - NTFS (13) 이번 글부터는 지금까지 알아본 NTFS 시스템의 갖가지 개념들을 기초로 하여 NTFS 내에서 사용되는 데이터 구조체들을 분석하여 볼 것이다. 데이터 구조체를 분석하기에 앞서 한가지 참고적으로 알아둬야 할 개념이 있다. Fixup 이라는 개념인데, 이 개념은 아래와 같다. [Fixup] Fixup이라는 것은 NTFS에서 신뢰성을 향상 시키기 위하여 사용하는 저장 기술로, 데이터가 저장된 섹터의 손상여부를 판단하기 위한 기술이다. 해당 기술의 원리는 일반적인 섹터의 마지막 2바이트를 특정 시그니처로 교체 해 두고, 원래의 2바이트 값은 Fixup 배열에 저장하여 교체 해 둔 시그니처가 다른 값으로 교체되지 않았다면 섹터가 손상되지 않은 것으로 보고 배열에 있는 원래의 값을 다시 섹터 마지막 2바이트에 넣는다.. 더보기
File System - NTFS (10) 이번 글에서는 NTFS에서 파일이름 참조모델에 해당하는 데이터들을 알아 볼 것이다. 파일이름 참조모델은 파일이름과 파일내용을 연결하여 주는 데이터를 포함하고 있는 모델이다. NTFS에서는 앞에서 언급한 인덱스를 이용하여 디렉토리 내용을 구성한다. 인덱스 엔트리는 노드 값을 포함하며, $INDEX_ROOT, $INDEX_ALLOCATION 속성에 저장된다. $INDEX_ROOT 속성에 저장된 값은 항상 트리구조에서 루트 노드 값에 해당하며, $INDEX_ALLOCATION 속성에 저장 된 인덱스 엔트리들은 트리구조에서 리프노드에 해당한다. 또 $BITMAP 속성은 인덱스 레코드들의 할당 상태를 관리하는데 사용된다. * 참고 : 인덱스 레코드는 $INDEX_ALLOCATION속성에서 인덱스 엔트리를 포함하는.. 더보기
File System - NTFS (8) 이번 글에서는 NTFS에서 내용 참조 모델에 해당하는 것에 대해 알아 볼 것이다. [클러스터] NTFS에서 파일은 속성의 집합이라고 말 할 수 있는데, 일부 속성은 거주 속성으로 MFT 엔트리에 존재하게 되고, 나머지 속성들은 비거주 속성으로 MFT 엔트리가 아닌 클러스터에 그 내용이 존재하게 된다. NTFS에서 클러스터는 다른 파일시스템과 마찬가지로 연속적인 섹터의 그룹을 의미한다. 클러스터 수는 2의 제곱이어야 한다. FAT 파일시스템과는 다르게 NTFS에서는 클러스터 주소가 0으로 시작하며, 클러스터 0은 파일시스템의 첫 번째 섹터를 포함한다. 클러스터 주소를 섹터 주소로 변환하기 위해서는 아래와 같은 공식을 적용한다. - 섹터 = 클러스터 * 클러스터 별 섹터 수 NTFS에서는 클러스터가 어떠한 .. 더보기
File System - NTFS (7) 이번 글 에서는 NTFS를 파일시스템 참조 모델 중 파일시스템 참조 모델에 맞춰 분석 해 볼 것이다. 파일시스템 참조 모델은 파일시스템을 전반적으로 설명하는 데이터를 포함하고 있는 참조 모델이다. NTFS에서 이러한 데이터를 포함하는 것은 메타데이터 파일이며, NTFS에서는 모든 것이 파일로 할당 되기 때문에 메타데이터 파일은 파일시스템 전체를 데이터 영역으로 보고 어디든지 위치 할 수 있다. * 참고 : 부트 코드는 예외로 정해진 곳에만 위치 할 수 있다. 메타데이터 파일들의 흥미로운 점은 일반 파일들과 비슷한 구조의 타임 스탬프를 가지고 있다는 것이다. 메타데이터 파일이 가지고 있는 타임스탬프는 파일시스템이 생성 될 때 설정되기 때문에 분석 시 유용하게 사용 할 수 있다. 그럼 이제부터 파일시스템 참.. 더보기