본문 바로가기

파일시스템 포렌식

File System - NTFS (18) 이번 글부터는 NTFS의 메타데이터 파일들을 분석 할 것이다. [$MFT] 해당 메타데이터 파일은 앞 글에서도 여러번 언급하였기 때문에 해당 메타데이터 파일의 일반적인 속성은 분석하지 않고 고유 속성인 $BITMAP 속성만 분석하여 볼 것이다. $BITMAP 속성은 NTFS의 MFT 엔트리 할당 상태를 관리하는 속성으로 각 비트가 MFT 엔트리와 맵핑되어 MFT 엔트리가 할당되면 해당 MFT 엔트리와 맵핑 관계인 비트가 1로 설정된다. [그림 1 - $MFT 파일의 $BITMAP 속성 오프셋] 위 이미지를 보면 F로 설정된 오프셋과 0으로 설정된 오프셋이 있는데 F로 설정된 오프셋이 할당 상태를 뜻하고 0으로 설정된 오프셋이 비 할당 상태를 뜻한다. MFT 엔트리 맵핑 관계는 각 오프셋을 비트로 변환하면.. 더보기
File System - NTFS (17) 이번 글에서는 간단히 인덱스 엔트리에 대해서 알아 볼 것이다. [표준 인덱스 엔트리] 표준 인덱스 엔트리는 따로 설명 할 것이 없다. 말 그대로 인덱스 엔트리의 표준 레이아웃을 가진 인덱스 엔트리이며, 어떠한 내용도 가질 수 있는 엔트리이다. 아래는 인덱스 엔트리의 오프셋 구조이다. [그림 1 - 표준 인덱스 엔트리 오프셋] - 플래그 : 플래그 오프셋에 올 수 있는 값은 두가지로 위 이미지에 있는 값은 쓰레기 값이다. 1) 0x01 : 자식 노드가 존재한다. 2) 0x02 : 인덱스 엔트리 목록에서 마지막 엔트리 * 참고 : 엔트리 마지막 8바이트는 $INDEX_ALLOCATION에 있는 자식 노드의 VCN 값을 가지고 있는데, 위 이미지는 $INDEX_ROOT 속성의 인덱스 엔트리이다. 또 VCN 값.. 더보기
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 (15) 계속해서 표준 속성의 데이터 구조체에 대해서 알아보자. * 참고 : 이번 글에서 다루는 속성들은 필자가 가지고 있는 이미지에 존재하지 않아 분석을 표로 대체한다. [$DATA] 해당 속성은 고유한 구조체를 가지고 있지 않다. 헤더 이후로는 파일 내용 데이터만 존재한다. 타입 식별자는 128이며 크기는 정해져 있지 않다. 하지만 내용이 700byte 이상이라면 비거주 속성이 되어 클러스터가 할당 될 것이다. [$ATTRIBUTE_LIST] 해당 속성은 MFT 엔트리에 존재하는데 $STANDARD_INFORMATION 속성과 $FILE_NAME 속성 사이에 위치한다. 타입 식별자는 32이며, MFT 엔트리에 여러 속성들이 할당되어 엔트리 크기인 1024byte를 초과 할 때 사용된다. 해당 속성 내용으로는 .. 더보기
File System - NTFS (14) 이번 글에서는 표준 속성 중 MFT 엔트리에 가장 기본적으로 할당되는 $STANDARD_INFORMATION 속성과 $FILE_NAME 속성에 대해서 알아 볼 것이다. [$STANDARD_INFORMATION 속성] 해당 속성은 항상 거주 속성으로 타입 식별자는 16이다. 또 모든 파일과 디렉토리에 존재하며, 파일이나 디렉토리를 위한 기본 메타데이터 파일들을 포함하고 있다. 아래는 해당 속성의 오프셋 별로 의미하는 것을 분석하여 두었다. [그림 1 - $STANDARD_INFORMATION 속성 오프셋] - 4개의 시간 값 : 해당 시간값들이 우리가 흔히 속성 창에서 볼 수 있는 시간 값이며, 1601년 1월 1일 UTC부터 100나노초 단위로 계산되어 저장된다. - 플래그 : 해당 파일에 적용 될 수 .. 더보기