FAT32 VBR 분석 및 파일추적

RINM·2023년 3월 5일
0

1. FAT32 파일시스템 구조 이해

  • 파일 시스템 시그니처: Jump boot code+OEM Name
  • BPS: 볼륨에 할당된 섹터크기 => 0x200(512byte)으로 고정
  • SP: BPS*SP=해당 볼륨에서 사용하는 사용자지정 클러스터(파일 입출력 단위) 크기
  • RS: reserved 영역의 시작 주소값
  • Total Sector 32: 해당 볼륨에 대한 총 섹터 개수 (MBR에 있는 것과 동일)
  • FAT size 32: 클러스터 영역 사이즈 =>가변적
  • Root directory cluster
  • Volume ID: 볼륨 아이디 정보 / dir 명령시 나오는 볼륨 일련번호
  • Volume Label: 볼륨에 사용자가 지정한 이름

2. 루트 디렉토리

  • 루트 시작 주소 계산: VBR Address + Reserved Address+(FAT size*2)

  • 32byte 단위 저장

  • 이름의 첫 byte가 E5인 경우 삭제된 파일

  • 클러스터 시작 주소

  • LFN: Long file name system 즉, 파일 이름이 8byte 이상일때는 구조가 다름

3. 실습

1) FAT 찾아가기

  • FAT 시작 주소 = VBR(128) addr + Reserved sector(0x181A) = 128 + 6170 = 6298
  • 4byte씩 끊어서 분석
  • 차례대로 숫자가 쓰여진 부분은 다음 클러스터 주소를 가리키는 것
  • 0x78-3=120-3=117 총 117개의 클러스터 사용 중

2) root 디렉토리 찾아가기

  • root 시작 주소 = FAT addr + FAT size 2 = 6298 + 0x03F3 2 = 6298 + 1011*2= 8320

  • IU.jpg 파일 확인 가능

  • 파일 사이즈: 0x07509A = 479,386 byte = 468KB

  • 생성시간(0x2D3A): 0010 1101 0011 1010
    => 5 6 5 법칙: 00101(시) 101001(분) 11010(초) => 5시 41분 52초(=26*2)
    -생성날짜(0x4E97)”: 0100 1110 1001 0111
    => 7 4 5 법칙: 0100111(년) 0100(월) 10111(일) => 2019년(=39+1980) 4월 23일

  • FTK imager로 export한 해당 파일을 우클릭하여 확인한 속성값과 일치(UTC+9)

3) 파일의 실제 데이터 주소 찾기

  • root addr+(cluster high + cluster low – 예약된 영역(2개)) SP
    = 8320 + (0 + 3 - 2)
    8 =8328

  • 클러스터 크기 = BPS SP = 512 8 =4096byte

  • 할당된 클러스터 개수 = 파일 크기//클러스터 크기 =117개

  • 파일 크기= 4096 117 = 512 936 즉, 936개의 섹터

  • 8328 sector ~ 9264 sector 복사 후 복구된 파일 생성

4. 삭제된 파일의 변화

  • 파일명의 첫 byte가 E5로 변경됨 => 수정시 강제로 복구 가능
  • FAT에서 해당 클러스터 영역이 0으로 초기화됨 (링크 끊김)

0개의 댓글