본문 바로가기

[+] Forensic

File System - NTFS (13)

이번 글부터는 지금까지 알아본 NTFS 시스템의 갖가지 개념들을 기초로 하여 NTFS 내에서 사용되는 데이터 구조체들을 분석하여 볼 것이다.

데이터 구조체를 분석하기에 앞서 한가지 참고적으로 알아둬야 할 개념이 있다.

Fixup 이라는 개념인데, 이 개념은 아래와 같다.

[Fixup]
Fixup이라는 것은 NTFS에서 신뢰성을 향상 시키기 위하여 사용하는 저장 기술로, 데이터가 저장된 섹터의 손상여부를 판단하기 위한 기술이다. 
해당 기술의 원리는 일반적인 섹터의 마지막 2바이트를 특정 시그니처로 교체 해 두고, 원래의 2바이트 값은 Fixup 배열에 저장하여 교체 해 둔 시그니처가 다른 값으로 교체되지 않았다면 섹터가 손상되지 않은 것으로 보고 배열에 있는 원래의 값을 다시 섹터 마지막 2바이트에 넣는다. 오직 이 기술은 데이터 구조체에만 사용되면 클러스터등에는 사용되지 않는다.

 
아래에는 MFT 엔트리의 오프셋을 분석한 것이다.

이전 글에서 분석한 방법처럼 오프셋 별로 어떠한 것을 의미하는지 알아보고 설명이 필요하다면 따로 설명을 추가하는 방법을 사용하겠다.

[MFT 엔트리]
MFT(Master File Table)는 NTFS에서 핵심적인 것이며, 파일과 디렉토리에 대한 엔트리를 갖는다. MFT 엔트리의 크기는 일정하며, 그 크기는 부트섹터에서 정의하고 일반적인 크기는 1024byte 이다. 아래는 오프셋 별로 분석한 것이다.

 [그림 1 - MFT 엔트리 오프셋]

 - 시그니처 : MFT 엔트리의 시그니처로 "FILE" 이란 문자열로 정해져있다. 하지만 chkdsk가 엔트리에 오류를 발견하면
                 시그니처는 "FILE"이 아닌 "BAAD"로 교체된다. 

 - Fixup 배열 오프셋 : 해당 오프셋은 MFT 엔트리의 시작으로부터 상대적인 오프셋이다.

 - $LogFile 순서 번호 : 해당 번호는 응용 프로그램 참조모델에서 알아본 저널링에 사용되는 번호이다. 

 - 순서 번호 : 엔트리가 할당되거나 비 할당 될때 증거하는 값으로 운영체제에 의해 결정된다.

 - 링크 카운트 : 하드 링크의 개수를 나타내는 것이다.

 - 사용여부와 디렉토리 플래그 : 해당 오프셋의 값은 "0x0001"로 설정된다면 해당 엔트리가 사용 중이라는 것을 의미하며,
                                           "0x0002"로 설정된다면 해당 엔트리가 디렉토리에 할당된 엔트리라는 것을 의미한다.


[속성]
MFT 엔트리의 대부분은 속성으로 되어 있으며 그 속성들은 속성 헤더와 속성 내용으로 나뉘게 된다.
속성 헤더는 모두 같은 데이터 구조체를 지니고 있고, 속성 내용은 거주 속성과 비거주 속성으로 나뉘어 조금씩 다른 데이터 구조체를 지니고 있다. 분석 할 때에는 속성헤더와 거주 속성을 함께 분석하겠다.

 [그림 2 - 속성 헤더와 거주속성의 속성 내용 오프셋]

 * 참고 : 속성 식별자까지가 속성 헤더에 속하며, 속성 내용 크기와 내용의 오프셋이 거주 속성 구조체이다.

 - 비거주 플래그 : 해당 오프셋 값은 속성 내용이 비거주 속성일 경우 셋팅 되는 값으로 비거주 속성일 경우 "0x01" 로
                         설정된다.

 - 속성 이름의 오프셋 : 속성헤더의 시작으로부터 상대적인 오프셋 값이다.

 - 플래그 : 해당 값은 속성의 압축(0x001), 암호화(0x4000), sparse(0x8000)을 의미하는 값이다.

 - 속성 식별자 : MFT에서 속성에 대한 고유한 번호이다.


부득이하게 현재 가지고 있는 NTFS 이미지에는 비거주속성의 MFT 엔트리가 없어 표로 오프셋 분석을 대신하겠다.

[그림 3 - 비거주속성 내용의 오프셋]

 - VCN : 논리적 파일 주소에 대한 다른 이름으로, 해당 값의 시작과 끝은 여러 MFT 엔트리들이 하나의 속성을 설명할
              필요가 있을 때 사용된다. 

 - Runlist 오프셋 : 해당 값은 속성헤더 시작 오프셋에서의 상대적인 값이다.


MFT 엔트리에 대한 기본적인 분석은 끝이 났다. 하지만 이정도 분석으로 MFT 엔트리의 분석이 끝이나는 것은 아니다. 

MFT 엔트리에 할당되는 표준 속성들을 모두 분석해야 MFT 엔트리 분석이 비로소 끝이난다.

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

File System - NTFS (15)  (0) 2012.02.16
File System - NTFS (14)  (0) 2012.02.15
File System - NTFS (12)  (0) 2012.02.14
File System - NTFS (11)  (0) 2012.02.13