Notice
Recent Posts
관리 메뉴

Hacking Arts

FAT32 Analysis - 2 본문

Forensic/File System Analysis

FAT32 Analysis - 2

Rakehell 2014. 8. 23. 03:08

<FAT1 영역>

 

-FAT는 파일의 내용이 저장되어 있는 클러스터의 위치를 기록하는 표

 

-FAT2는 FAT1의 백업본

 

-FAT Entry는 4Byte씩 구성되어 있으며 각 클러스터와 대응(=>FAT Entry 번호는 클러스터 번호와 동일하다는 의미)

 

-FAT1 영역에 대한 구조(97번 섹터)

 

-최초 4Byte(0번 Entry)와 그 다음 4Byte(1번 엔트리)만 다르고 나머지 Entry는 자신의 번호와 일치하는 클러스터와 1:1 대응하며, 자신의 번호에 해당하는 클러스터의 상태 값을 저장

 

 -클러스터 0번과 1번은 존재하지 않으므로 실제 데이터 영역의 맨처음에 오는 클러스터는 2번 클러스터 (8271섹터)임

 

-FAT Entry의 값이 0x?FFFFFFF => 해당 파일의 마지막 클러스터를 의미 (여기가 끝), 다른 표현으로는 EOC(End Of Cluster)라 함 FAT Entry의 값이 0x?FFFFFFF이 아니면 파일의 내용이 들어있는 다음 클러스터 번호를 의미

 

-FAT Entry의 값이 0x?0000000 => 비어있는 클러스터, 누구에게도 사용되지 않고 연결되기를 기다리고 있는 클러스터를 의미

※파일 명은 FAT에 존재하지 않으며 디렉토리가 할당된 클러스터에서 확인 가능

 

===================================================

 

<DATA 영역>

-Root Directory

1)루트 디렉토리의 위치는 마지막 FAT 바로 뒤에서 시작

2)좀 더 정확하게 표현하며 BR에 Root Directory의 시작 클러스터 번호가 적혀 있음

※루트 디렉토리의 첫 번째 Entry는 다른 목적으로 사용 (파티션의 이름(볼륨명))

 

<Directory Entry>

-Name (8Byte)

1)파일 이름 또는 디렉토리 이름을 적는 항목으로 최대 8자리까지 입력할 수 있으며 반드시 대문자만 사용이 가능함

2)만약 파일명이 8자 이하인 경우에는 남는 공간을 반드시 0x20이라는 값으로 채워 넣어야 하며 , NULL(0x00)이 아님

 

▶Name[0] : (Name 항목의 첫 바이트를 의미)에 올 수 있는 값

  - 0xE5 : 삭제된 파일이나 디렉토리임을 나타내며, 파일이나 디렉토리가 삭제되면 파일 이름의 첫 바이트만 0xE5로 변경됨

  - 0x00 : 엔트리가 사용되고 있지 않음을 의미하며 뒤에 오는 엔트리들도 비어있다는 것을 의미

  - 0x05 : 일본어로 파일이름을 사용할 경우 사용하는 항목

 

-Extender (3Byte)

1)확장자가 오는 항목으로 대문자만 사용가능

2)디렉토리의 경우 확장자가 없으므로 해당 항목은 0x20으로 채워짐

 

-Attribue (1Byte)

1)속성을 나타내며 이 값을 확인하면 파일인지 디렉토리인지 구분이 됨

 

▶속성 항목 값

  - 0x01 : Read only로 읽기 전용 파일 속성

  - 0x02 : Hidden으로 숨김 속성 파일

  - 0x04 : System으로 운영체제 파일 속성

  - 0x10 : Directory로 서브디렉토리를 의미

  - 0x20 : Archive로 일반 파일을 의미

  - 0x0F : Long File Name Entry로 추 후 설명

 

-NT Resource (1Byte)

1) 운영체제가 사용하기 위해 예약해 놓은 공간, 포렌식 관점에서는 중요도 떨어짐

 

-Create Time Tenth , Create Time, Create Date , Last Access Time , Write Time , Write Date

1)Create Time Tenth은 파일이 생성된 시각을 1/10초 단위로 기록한 항목

2)Create Time , Create Date은 2개의 항목은 데이터가 생성된 시간과 날짜를 의미

3)Last Access Time은 해당 파일에 읽기/쓰기 작업을 했던 마지막 날짜를 기록

4)Write Time은 가장 최근에 이 파일을 수정한 시간이며, 파일 최초 생성 시 기재되는 값이기도 함

5)Write Date는 가장 최근에 이 파일을 수정한 날짜이며, 파일 최초 생성 시 기재되는 값이기도 함

※항목의 내용들은 MAC Time이라 하여 전체적인 포렌식 관점에서는 중요한 내용이지만 파일시스템 분석 항목에서는 중요도가 떨어짐

 

-File Size ( 파일 크기 , 4Byte)

 

-First Cluster High (2Byte)

1)파일의 첫 번째 클리스터 번호의 상위 2Byte를 담고 있음

 

-First Cluster Low (2Byte)

1)파일의 첫 번째 클러스터 번호의 하위 2Byte를 담고 있음

 

-----------------------------------

<Long File Names>

1)기존의 Directory Entry에서의 이름 길이 제한을 위해 개발됨

2)최대 255자까지 저장 가능하며 확장자도 3자 이상 가능

3)특수 문자 허용 범위가 넓어짐

 

-Order (1Byte)

1)Long File Name Entry가 정렬된 순번을 기록하는 항목

2)6번째 비트가 1이라면 해당 파일명을 구성하는 마지막 Entry를 의미(0x40)

 

-Name1 (10Byte)

1)해당 Entry에 저장할 문자열 중 1 ~ 5번째 문자열을 여기에 저장

 

-Attribute (1Byte)

1)LFN을 의미하는 '0x0F'값만이 들어옴

 

-Type(1Byte)

1)LFN을 의미하는 '0'값이 들어옴

 

-Check Sum(1Byte)

1)Short Directory Entry 항목에 들어가는 11자의 문자열에 대한 Checksum 값 저장

 

-Name2 (12Byte)

1)해당 Entry에 저장할 문자열 중 6~11번째 문자열을 여기에 저장

 

-First Cluster Low(2Byte)

1)의미 없는 값이지만 기존 FAT 코드와 호환성을 위해 반드시 0으로 해야함

 

-Name3 (4Byte)

1)해당 Entry에 저장할 문자열 중 12~13번째 문자열을 여기에 저장

 

----------------------------

여기서 중요한건 뭐니뭐니해도 클러스터 high,low이다. 그다음 name도 중요하다. 클러스터가 어떤식으로 들어가는지도 중요하다.

'Forensic > File System Analysis' 카테고리의 다른 글

FAT32 Analysis - 1  (0) 2014.08.23
MBR(Master Boot Record) Analysis  (0) 2014.08.23