본문 바로가기

[+] Forensic

File System - NTFS (7)

이번 글 에서는 NTFS를 파일시스템 참조 모델 중 파일시스템 참조 모델에 맞춰 분석 해 볼 것이다.

파일시스템 참조 모델은 파일시스템을 전반적으로 설명하는 데이터를 포함하고 있는 참조 모델이다.

NTFS에서 이러한 데이터를 포함하는 것은 메타데이터 파일이며, NTFS에서는 모든 것이 파일로 할당 되기 때문에 메타데이터 파일은 파일시스템 전체를 데이터 영역으로 보고 어디든지 위치 할 수 있다.

 * 참고 : 부트 코드는 예외로 정해진 곳에만 위치 할 수 있다.

메타데이터 파일들의 흥미로운 점은 일반 파일들과 비슷한 구조의 타임 스탬프를 가지고 있다는 것이다.

메타데이터 파일이 가지고 있는 타임스탬프는 파일시스템이 생성 될 때 설정되기 때문에 분석 시 유용하게 사용 할 수 있다.


그럼 이제부터 파일시스템 참조 모델에 해당하는 메타데이터 파일을 하나씩 살펴보자.

[$MFT]
$MFT 파일은 메타데이터 파일 중에서도 가장 중요한 파일로, 모든 파일과 디렉토리의 엔트리를 가지고 있는 MFT를 설명한다. MFT의 레이아웃은 $MFT 파일을 분석 함으로써 파악 할 수 있다.
$MFT 파일은 MFT의 첫 번째 엔트리 이며, 해당 파일의 $DATA 속성의 내용은 MFT에 의해 사용되는 클러스터들을 포함하고 있다. $MFT 파일은 파일시스템이 시작 할 때 되도록 크기가 작은 상태에서 시작되며, 파일들이나 디렉토리가 생성되면 그 크기가 커진다. 하지만 한번 생성된 엔트리는 지워지지 않아 크기가 줄어들지는 않는다.


[$MFTMirr]
해당 파일은 MFT 엔트리들 중 중요한 엔트리들을 복사 해 놓은 백업본이다. 일반 파일을 찾으려면 부트섹터와 $MFT를 참조해야 하는데 부트섹터나 $MFT가 손상되게 되면 일반 파일을 찾을 수 없게 된다. 이럴 때 백업본이 필요하다.
$MFTMirr은 MFT의 두 번째 엔트리이며, 해당 파일의 $DATA 속성은 파일시스템 중간에 있는 클러스터를 할당 받아, 적어도 아래의 엔트리들을 복사하여 저장한다.

 - $MFT
 - $MFTMirr
 - $LogFile
 - $Volume 


[$Boot]
$Boot 파일은 파일시스템의 부트 섹터를 포함하는 파일로 MFT의 여덟 번째 엔트리이다. 해당 파일은 고정된 위치를 갖는 파일로, 이유는 해당 파일의 $DATA 속성 내용이 시스템 부팅에 필요하기 때문이다. 또 $DATA 속성은 항상 파일시스템 첫 번째 섹터에 위치한다.
부트 섹터는 각 클러스터의 크기, 파일시스템의 섹터 수, MFT 시작 클러스터의 주소, 각 MFT 엔트리 크기 정보를 포함하고 있으며, 파일시스템을 위한 일련번호도 제공한다.
$DATA 속성에서 부트섹터를 위해 할당 된 섹터를 제외한 나머지 섹터들은 부트 코드를 위해 할당 된다.

 * 참고 : $DATA 속성에는 기본적으로 16개의 섹터가 할당 되지만, 실제로 부트 섹터는 8개의 섹터에만 할당 된다. 

부트코드는 간단히 말해 파일시스템 부팅을 위해 사용되며, 운영체제를 적재하기 위해 사용되는 파일들의 위치를 찾아준다. 부트 섹터도 백업본이 있는데, 백업본은 볼륨 마지막 섹터나, 중간 섹터에 존재한다.

 * 참고 : NTFS의 부트섹터는 FAT 파일시스템과 유사한데, 대표적으로 시그니처(0xAA55)가 동일하다. 


[$Volume]
해당 파일은 볼륨 레이블과는 다른 버전 정보를 포함하며, MFT의 네 번째 엔트리이다. 해당 파일에는 다른 메타데이터 파일에는 없는 고유 속성 2개가 존재한다.

 - $VOLUME_NAME : 볼륨의 유니코드 이름 저장
 - $VOLUME_INFORMATION : NTFS 버전과 오류상태 저장


* 참고 : 해당 파일에는 $DATA 속성도 존재하지만, 크기가 0이다. 


[$AttrDef]
$AttrDef 파일은 각 속성 타입을 위해 이름과 타입의 식별자 정보를 포함하며, MFT 다섯 번째 엔트리이다.  


[분석 시 주의사항]
해당 참조 모델을 분석 할 때에는 히든 데이터를 주의해야 한다. 히든 데이터가 있을 만한 장소로는 $Boot 파일 끝에 공간이 많아 이 부분이 해당되며, 파일시스템 섹터 수와 볼륨 크기를 비교 해 볼륨 슬랙을 찾아내 볼륨 슬랙을 조사 해 보는 것도 좋다. 또 파일시스템 다음 영역에 비 사용 공간이 있는지도 확인 해 봐야 한다. 
또 사용자가 직접 비 사용 공간을 만들 수도 있다. MFT 엔트리는 한번 생성된 엔트리는 지워지지 않아 많은 파일을 생성하여 엔트리를 할당 받은 후 해당 파일들을 지워 엔트리를 비 할당 상태로 만들면 그 공간에 히든 데이터를 넣을 수 있는 것이다.

파일시스템의 메타데이터 타임 스탬프는 파일시스템의 포맷 시간을 확인하는데 도움을 주니 이 또한 확인 해 봐야 한다. 

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

File System - NTFS (9)  (0) 2012.02.10
File System - NTFS (8)  (0) 2012.02.09
File System - NTFS (6)  (0) 2012.02.09
File System - NTFS (5)  (2) 2012.02.08