Windows Forensic/File System

[Digital Forensic] FAT32 File System "Data Area" Analysis

DF_m@ster 2023. 12. 19. 18:39

Data Area

Data Area: 파일이나 디렉토리 데이터가 실제로 저장되는 곳이다. 해당 영역의 시작 부분 (첫 번째 섹터)에는 Root Directory 데이터가 저장되며, 이후 디렉토리와 파일의 데이터는 'Directory Entry' 형태로 순차적으로 저장된다.

Data Area

 

Directory Entry는 파일이나 디렉토리의 이름 길이에 따라  가지 유형이 있습니다. 파일 이름이 7 Byte 이하인 경우는 'Regular Directory Entry', 8 Byte 이상인 경우는 'Long name Directory Emtry' 저장된다.

 

Root Directory는 FAT #2의 다음 섹터부터 존재하기 때문에, FAT #2의 섹터에서  BPB 영역의 "FAT Size" 정보를 참조하여 "FAT #2 섹터 + FAT Size"를 계산하면 접근할 수 있다. 이 또한 FAT32의 구조를 도식화해 보면 이해하기 쉽다.

 

FAT #2 (6,285번 섹터) + FAT Size (0x07 F3 = 2,035) = Root Directory (8,320번 섹터)

Root Directory (8,320번 색터)

 

 

 

1. Short Name Directory Entry

Short Name Directory Entry: 파일 혹은 디렉토리 이름이 7 Byte 이하인 경우 생성되는 Entry로, 32 Byte의 크기를 갖는다. 파일 혹은 디렉토리 이름, 확장자, 속성 플래그 값, 메타데이터, 클러스터 주소, 크기 등의 정보를 포함한다.

 

추가적으로 파일의 생성 시간(마지막 수정일 (방법 동일))과 할당된 클러스터의 시작 주소를 계산해 보았다.

Created Time Tenth: 0xB4 = 180 (d) → 1.80초 (범위: 0 ~ 199, 즉 1.99초까지 표현 가능하다. 이는 Created Time이 짝수 초만 표현 가능하기 때문이다.)

Created Time: 0x09 7C = 00001 001011 11100 (b) → 01시 11분 56(28 x 2)초 (5(H)/6(M)/5(S) 법칙)

Created Data: 0x57 89 = 0101011 1100 01001 (b) → 2023(1980 + 43)년 12월 9일 (7(Y)/4(M)/5(D) 법칙)

파일 생성 시간 = 2023년 12월 9일 01시 11분 57.8초

 

Starting Cluster High: 0x00 00 = 0 (d)

Starting Cluster Low: 0x00 06 = 6 (d)

클러스터 시작 주소 = 0x00 00 00 06 = 6 (d)

 

아래는 FAT Area의 Cluster Allocation을 확인하기 위한 과정에서 생성한 파일들을 대상으로 정리해 보았다.

Short Name Directory Entry
Short Name Directory Entry Field

Offset Size (Byte) Information
0x00 1 Satus
0x01 ~ 07 7 Name
0x08 ~ 0A 3 Extension
0x0B 1 Attributes
(0x01 = 읽기 전용)
(0x02 = 숨김 파일)
(0x04 = 운영체제 시스템 파일)
(0x08 = 볼륨 레이블)
(0x10 = 디렉토리)
(0x20 = 일반 파일)
0x0C 1 Reserved
0x0D 1 Create Time Tenth
(0~199)
0x0E ~ 0F 2 Created Time
(Hour, Minute, Second)
0x10 ~ 11 2 Created Date
0x12 ~ 13 2 Last Accessed Date
0x14 ~ 15 2 Starting Cluster High
0x16 ~ 17 2 Last Written Time
(Hour, Minute, Second)
0x18 ~ 19 2 Last Written Date
0x1A ~ 1B 2 Starting Cluster Low
0x1C ~ 1F 4 File Size

 

 

 

2. Long Name Directory Entry

파일 혹은 디렉토리 이름이 8 Byte 이상인 경우 2개의 Long Name Directory Entry(초록색)와 하나의 Short Name Directory Entry(빨간색)가 생성되어 총 3개의 Entry가 파일의 이름을 저장한다.

이름이 8 Byte 이상인 경우의 Directory Entry

 

Long Name Directory Entry: 파일 혹은 디렉토리 이름이 8 Byte 이상인 경우 생성되는 Entry로, 32 Byte의 크기를 갖는다. 이때 파일 혹은 디렉토리 이름, 이름 체크섬, 속성 플래그의 정보를 포함한다.

Long Name Directory Entry
Long Name Directory Entry Field

Offset Size (Byte) Information
0x00 1 Sequence Number / Allocation Status
0x01 ~ 0A 10 Name 1
(1 ~ 5)
0x0B 1 Attribute
(Long Name Directory Entry = 0x0F)
0x0C 1 Reserved
0x0D 1 Checksum
0x0E ~ 19 12 Name 2
(6 ~ 11)
0x1A ~ 1B 2 Reserved
0x1C ~ 1F 4 Name 3
(12 ~ 13)

 

 

 

$RECYCLEBIN

Data Area에서 디스크를 초기화하고 처음 데이터를 저장하면, 해당 Directory Entry 생성되고 이후에 $RECYCLEBIN Directory Entry 자동으로 생성된다.

 

데이터 저장은 2번 클러스터부터 저장한다.

디스크 초기화 이후 파일 저장 시 자동으로 생성된 $RECYCLEBIN Directory Entry

 

 

 

메인 글

"[Digital Forensic] FAT32 File System Detailed Analysis"