File System Forensics

[File System] FAT 파일시스템 (5)

도깬리 2023. 6. 7. 06:22

안녕하세요. 도깬리 포렌식스 입니다.

오늘은 FAT 파일시스테에서 파일의 이름에 대해 알아 보겠습니다. 모두 화이팅 하세요!!!

 

파일 이름

디렉토리 엔트리 구조체에서 파일명은 8.3 이름 규칙에 따라 기록됩니다.

파일명의 문자가 8개 이상인 경우, 해당 디렉토리 엔트리에 LFN(Long File Name) 엔트리가 추가됩니다.

즉, 일반적으로 SFN(Short File Name) 엔트리 + LFN 엔트리 형식으로 구성됩니다.

 

LFN 엔트리

파일명만 기록됩니다.

LFN 엔트리도 비할당으로 되는 경우, 첫 바이트가 0xE5로 바뀝니다.

UTF-16으로 인코딩된 13개의 문자(문자 1 = 2바이트)를 저장합니다.

영문자 ASCii 외에 한글 같은 거의 모든 문자를 지원합니다.

Code Pages를 사용하여 한글 문자로 파일명을 확인할 수 있습니다.

파일명 문자가 13개 이상이 되면, LFN엔트리가 추가됩니다.

LFN 엔트리가 SFN 엔트리보다 먼저 기록됩니다.

LFN 엔트리는 역순으로 읽어야 합니다.

 

 

할당 알고리즘

파일명이 데이터 구조체에 저장됩니다.

LFN 엔트리는 SFN보다 이전에 위치해야 합니다.

 

삭제 루틴

엔트리의 첫 번째 바이트가 0xE5로 바뀝니다.

SFN의 첫 번째 바이트(파일 이름의 첫 글자), LFN의 첫 번째 바이트(순서번호)가 모두 0xE5로 바뀝니다.

짧은 파일이름의 첫 글자가 지워졌더라도, LFN에 긴 이름의 파일명이 그대로 존재하기 때문에 LFN을 읽어 완전한 형태의 파일명으로 복구할 수 있습니다.

디렉토리를 지웠을 때, 그 내부의 엔트리는 변경될 수도 있고, 안될 수도 있습니다.

 

분석 기술

루트 디렉토리의 위치를 확인합니다.

 

FAT 12/16

FAT 영역 바로 다음 섹터부터 시작합니다.

루트 디렉토리의 크기는 부트 섹터에서 지정합니다.

 

FAT 32

루트 디렉토리의 시작 클러스터 주소를 부트 섹터에서 지정합니다.

FAT 구조체는 루트 디렉토리의 레이아웃을 결정합니다.

32바이트 디렉토리 엔트리를 단계적으로 처리합니다.

엔트리 할당 상태는 플래그처럼 동작하는 첫 바이트를 이용하여 표시합니다.

어떤 파일에 대한 모든 메타데이터는 디렉토리 엔트리에 위치합니다.

파일명 관련 메타데이터는 삭제된 후에도 덮어쓰여질 때 까지는 그대로 존재합니다.

 

분석 고려사항

LFN을 사용하여 기록된 경우, 첫 바이트가 0xE5로 바뀌었다 하더라도 파일 이름의 일부분만 손실된 것일 뿐, 긴 이름의 파일명이 그대로 존재하고 있으므로 그것을 이용하여 복구할 수 있습니다.

- SFN : ASCii로 저장됩니다.

- LFN : 유니코드로 저장됩니다.

전체이름이 순차적으로 저장되지 않고, 여러 개의 LFN엔트리로 나뉘어 질 수 있습니다.

 

분석 시나리오.

시나리오 1 : 복사 또는 이동되었다

복사된 파일은 마지막 수정 시각보다 생성 시각이 더 최근일 겁니다.

디렉토리 전체를 복사하는 경우, 파일의 시간정보는 모두 동일합니다.

 

시나리오 2 : 압축해제 되었다

ZIP 파일에 묶인 순서대로 압축해제됩니다.

압축해제된 파일은 동일한 생성시각을 갖고, 마지막 수정시각은 파일 원본의 시각과 같을 겁니다.

 

 

 

 

 

감사합니다. 오늘도 즐거운 하루 되세요.

"좋아요"와 "구독하기"는 힘이 됩니다.

참고문서 : File System Forensic Analysis (Brian Carrier)