이번 글은 FAT 파일시스템의 마지막 참조 모델인 파일 이름 참조 모델에 대해서 알아 볼 것이다.
(FAT 파일시스템은 응용 프로그램 참조 모델이 존재하지 않음)

파일 이름 참조 모델은 파일 이름 데이터를 가지고 있는 참조 모델로 메타데이터 참조 모델을 분석 할 때에도 언급 했듯이

메타데이터 참조 모델에 파일 이름 데이터가 포함되어 있다.

이제 파일 참조 모델이 파일명을 어떻게 다루는지 알아보자. 

[파일 이름 참조 모델의 파일 이름 관리]
파일 참조 모델은 파일명의 길이가 8 보다 크거나, 이름에 특별한 문자가 있으면 디렉토리에 LFN(Long File Name) 타입을 추가한다. LFN 타입을 가지고 있는 디렉토리(파일)은 SFN(Short File Name) 이라는 디렉토리 엔트리를 또 갖게 된다. LFN 엔트리는 시간, 크기, 시작 클러스터 정보를 포함하지 않아 SFN이 이를 대신하여 해당 정보들을 포함하기 때문에 추가되는 것이다.

 * 참고 : LFN 엔트리는 파일명만 포함하며 디렉토리 엔트리에 파일 할당이 비 할당 상태로 전환되는 것은 LFN 엔트리가 비 할당 상태로 전환 되는 것을 뜻하는데 이때 디렉토리 엔트리의 첫 번째 바이트가 "0xE5" 로 설정되는 것이다.
 
LFN과 SFN의 속성 항목은 같은 위치에 존재하며, LFN 엔트리의 경우 특별한 속성 값을 사용한다. 해당 속성 항목을 제외한 나머지 바이트들은 UTF-16으로 인코딩 된 13개의 유니코드 문자들을 저장하는데 사용되며, 만약 파일명의 길이가 13 글자 이상이면 추가적으로 LFN 엔트리를 사용한다.
LFN 엔트리는 SFN 엔트리와의 관계를 나타내는 체크섬을 포함한다.

 * 참고 : LFN 엔트리들은 순서가 반대이기 때문에 파일명 첫 번째 부분이 SFN 엔트리와 가깝다.  

 
할당 알고리즘은 메타데이터 참조 모델과 동일하며, 한가지 차이점이 있는데 LFN과 SFN의 순서이다.

LFN 엔트리가 SFN 엔트리보다 전에 위치하고 있어야 한다.

삭제 방법 또한 메타데이터 참조 모델과 동일하다.

[분석]
파일 참조 모델을 분석하는 목적은 파일명을 찾기 위해서이다. 파일명을 찾기 위해서 FAT 파일시스템에서는 FAT 버전에 따른 루트 디렉토리 위치를 먼저 파악해야 한다. FAT 파일시스템은 각 32byte 디렉토리 엔트리 구조체를 통해 디렉토리 내용을 하나씩 처리하며, 만약 타입이 LFN 엔트리로 설정되어 있는 디렉토리가 있다면 해당 내용들을 저장하고 다음 엔트리를 조사한다. 이러한 과정은 LFN의 비 할당 엔트리, 긴 이름 엔트리와 일치하는 체크섬을 찾을 때 까지 반복한다.
분석 시 주의사항은 히든 데이터가 숨겨져 있을 만한 공간을 분석하는 것이다. 메타데이터 참조 모델처럼 디렉토리 끝에 데이터를 숨길 수 있기 때문이다. 대부분의 운영체제는 모든 값이 0인 디렉토리 엔트리를 발견하면 그 후 디렉토리 엔트리의 처리는 하지 않는다. 이러한 점을 이용하여 모든 값이 0인 디렉토리 엔트리 이후에 데이터를 숨길 수도 있다.  

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

File System - FAT (7)  (0) 2012.02.02
File System - FAT (6)  (0) 2012.02.02
File System - FAT (5)  (0) 2012.02.02
File System - FAT (4)  (0) 2012.02.01
File System - FAT (3)  (0) 2012.01.31

+ Recent posts