컴퓨터 데이터는 파일을 쉽게 관리하기 위해 파일시스템을 사용한다. Windows는 대표적으로 FAT, NTFS를 사용하며 이번 장에선 FAT를 알아보겠다. FAT는 단순한 구조를 가지고 있어 메모리카드, 디지털카메라, 플래시 메모리 등에 사용된다. FAT 파일시스템은 FAT12, FAT 16, VFAT, FAT32, exFAT가 존재한다. 12, 16, 32는 표현 가능한 비트 수를 의미한다. FAT12, 16은 현재 잘 사용하지 않아 FAT32를 설명하겠다.


FAT32 파일시스템은 예약된 영역, FAT 영역, Data 영역으로 구성된다.

FAT 구조.png

1. 예약된 영역(Reserved Area)

FAT 파일시스템 첫번째 영역이며 32개 섹터를 사용한다. 예약된 영역 안에는 Boot Sector, FSINFO, 추가적인 섹터(More Reserved Sector)가 있다.

FAT.jpg

1-1. 부트 섹터(Boot sector)

FAT 파일시스템 0번째 섹터에 있으며 BR 또는 VBR이라 부르기도 한다. Boot Sector는 오프셋별로 가리키는 의미가 있고 6번째 섹터에 백업본이 존재한다.

① Boot Code : 0 ~ 2 Byte
② BIOS Parameter Block : 3 ~ 89 Byte
③ Boot Code와 Error Message : 90 ~ 509 Byte
④ Signature : 510 ~ 511 Byte

첫번째 영역은 부트코드로 점프하라는 명령어다. 두번째 영역은 파일시스템 정보를 기록한다. 세번째 영역은 해당 파일시스템을 부팅하기 위한 부트코드가 존재하며 실행과정 중 에러가 발생할 경우 에러메시지가 출력된다. 부트 코드는 점프 명령에 의해 실행되는데 이때 BPB(BIOS Parameter Block) 정보를 참조하여 파일시스템을 부팅한다.

1-2. FSINFO

FSINFO는 운영체제가 새로운 클러스터를 어디에 할당하는지 설명하는 구조체다.
1번째 섹터(부트 섹터 다음)에 저장되며 7번째 섹터에 백업본이 존재한다.
볼륨에 파일 할당 시 첫번째 비할당 클러스터 위치를 알려줘 빠르게 할당할 수 있도록 도와준다. 그리고 OS에 전체 비할당 클러스터 수를 알려줘 볼륨에 파일을 할당 가능한지 알 수 있다.

FSINFO.png

바이트범위 설명
0-3 시그니처 (0x41615252)
4-483 사용되지 않음
484-487 시그니처 (0x61417272)
488-491 비할당(여유) 클러스터 수 (0x0001F889)
492-495 다음 비할당(여유) 클러스터(0x00000079)
496-507 사용되지 않음
508-511 시그니처(0xAA550000)

이 파일시스템은 129,161(0x0001F889)개 비할당 클러스터가 있다. 그리고 다음 비할당 클러스터는 클러스터 121(0x00000079)이다.

1-3. 추가적인 섹터

부트 섹터는 0, 6번 섹터를 VBR, VBR 백업본으로 사용한다. 1, 7번 섹터는 FSINFO, FSINFO 백업본으로 사용한다. 2번 섹터는 부트 섹터의 부트 코드 영역이 부족하면 추가로 사용하는 섹터다. 8번에 백업본이 있다. FAT32는 0, 1, 2, 6, 7, 8번의 섹터를 사용한다. 32개 섹터 중 6개 섹터만 사용하고 나머지 섹터는 만약을 대비해 예약되어 있다. 나머지 섹터는 만약의 경우를 제외하곤 사용하지 않아 데이터를 은닉할 수 있다.
예약된 영역이 무조건 32개 섹터를 사용하는 건 아니다. 클러스터 당 몇개의 섹터를 사용하느냐에 따라 유동적이다. 그러므로 분석 전에 예약된 영역을 가리키는 BIOS Parameter Block의 14-15 바이트를 확인해야 한다.


해당 글은 공부한 내용을 정리한 글이며 잘못된 부분은 댓글 부탁드립니다.

출처 :
http://forensic-proof.com/archives/370
http://forensic-proof.com/archives/372
START UP 디스크 포렌식 (이별 지음)
파일시스템 포렌식 분석 (주필환 옮김)
디지털 포렌식 기술 (노명선 지음)