본문 바로가기
9. 디지털 포렌식

디지털 포렌식 Sub 7 - FAT32 파일시스템 구조 이해, 루트디렉터리 추적

by Robert8478 2023. 12. 14.

실습 파일 - FAT32_file.001
목표 - FAT32를 사용하는 파일시스템 BR영역 분석

FAT32는 부트섹터-Reserved-FAT-FAT Mirror-Root Directory-Data Area 의 구조로 되어있다.


[Boot Sector의 구조]
Boot Code - 0~2byte
BIOS Parameter Block - 3~89byte
Boot Code와 Error Message - 90~509byte
시그니처 2byte - 510~511byte

[Boot Code 영역]
위에서 부트코드 이후부터 89까지 BIOS Parameter Block
90 부터 맨 마지막 2 byte를 제외한 부분까지 Boot Code와 Error Message 이다.

[FAT 영역]
1.4byte는 미디어 타입으로 F8 FF FF 0F는 하드디스크이다.
2.4byte는 파티션 상태로 보통 FF FF FF FF
3.4byte는 루트 디렉터리의 클러스터 정보
나머지는 실제 데이터의 연속된 클러스터 공간 할당 영역

[2] 루트 디렉터리 추적 - 루트디렉터리를 분석해보고 삭제된 파일을 수동으로 복구

HxD에서 128섹터인 파티션 시작위치로 이동하자.
FAT Area의 주소를 알아야하는데 128(BR주소) + 4122(Reserved Sector(0x101A)) = 4250 섹터가 주소이다.
0x101A는 맨 상단 제일 우측의 1A 10 을 리틀 엔디안 방식으로 읽으면 0x101A가 된다.
이제 4250 섹터로 이동한다.

FAT의 구조를 볼 수 있다. 00으로 채워진 공간들은 사용하지 않는 FAT Area 영역이다.
FAT 주소에 FAT 크기의 2를 곱한 값을 더해주면 루트디렉터리로 갈수있다. (FAT 개수가 기본적으로 2개쓰기 때문에 2를 곱함)
4250 + 2035(0x07F3)*2=8320 이다. 0x07F3은 BR에서 구조를 보았을때 FAT Size 부분에서 알아낼 수 있다.

루트 디렉터리에 대한 정보를 볼 수 있다.
루트 디렉터리는 총 32byte로 한개의 파일에 대한 정보를 저장한다.
루트 디렉터리 구조에서 NAME의 경우 0xE5로 시작되면 삭제된 파일을 의미하며 다른 문자열로 바꾸면 복구 가능
0x00이면 사용하지 않는 영역이다. 파일 생성 시간은 A6 93 정보 저장되어있어 리틀 엔디안으로 93A6으로 해서 2진수로 변환해서 우측에서 좌측으로 5자리 6자리 5자리씩 끊어주면 된다.


이를 다시 10진수로 변환해 주면 18 29 6 이 나오며 6이 초단위이다. 초단위는 2를 곱해주어야 하고 이는 18시 29분 12초이다. 생성 날짜는 82 48이다. 이것도 리틀엔디안 변환후 7 4 5 자리로 2진수 끊어주고 10진수 변환, 36 4 2가 나오는데 36에 1980 더해주면 2016년 4월 2일이 나온다.

앞에가 E5인것으로 보아 삭제된 파일인것으로 확인할 수 있으며, FTK Imager로 보면 디렉터리에서 확인 가능하다.
0xE5를 다른 문자열(숫자,영문,특수문자)로 변경해주면 파일이 복구되어 원본 이미지 확인이 가능하다.

(원래 삭제되었던 파일이 원상태로 복구되었다)


이제 실제 데이터가있는 위치를 찾아가보자

00 00 + 00 05 (Cluster Hi + Low) = 5
(5-2)*8=24
8320+24=8344

8344로 이동하면 실제 데이터 시그니처를 볼수있다.
맨 윗줄을 복사해서 HxD에서 New 파일로 새로 만들어주면 파일을 수동으로 추출할수 있다.