USB 복구

RINM·2023년 3월 5일
0

문제

I accidently formatted the USB, which was being used for storing photos. The volume name was not changed during fast formatting and the file system, before formatted, was not the same as the current file system. Use the features of the old file system to restore the files inside the USB.

목표

포맷된 USB의 이전 파일 시스템을 확인하고 저장된 파일 복구하자

풀이

USB 파일 시스템에는 NTFS, FAT32, exFAT 등이 존재한다. 사진 파일을 저장하고 있던 USB임으로 jpg, bmp, png 등의 파일을 복구해내야한다. 빠른 포멧이 적용되었으며 이때 파일 시스템이 바뀌었다고 한다.
USB 이미지를 FTK Imager로 마운트한다.

현재 파일 시스템은 NTFS이다. 이전 파일 시스템은 FAT32, exFAT이 가능하다. root 디렉토리에 저장된 별도의 파일은 없다. 볼륨의 이름은 IU이다.

FAT32와 exFAT의 구조 비교

  • 공통점: 루트 디렉토리는 32byte 단위로 구성

1) exFAT 볼륨 구조

exFAT의 루트 디렉토리 구조는 다음과 같다. Type Code에 따라 항목 분류, 이름, 시간 정보 등을 확인 가능하다.

2) FAT32 볼륨 구조

FAT32의 루트 디렉토리 구조는 다음과 같다. 이름/시간 정보/ 파일 사이즈 등을 확인 가능하다.

strings를 활용하여 USB 이미지에서 문자열을 추출한다. 추출한 문자열 목록에서 사진 파일 확장자 “jpg, bmp, png” 검색한다. jpg 파일 몇개를 확인할 수 있다. (IU.jpg 등)

HxD로 USB 이미지를 분석한다. 디스크 이미지 열기 옵션으로 USB 이미지를 불러온다.

exFAT의 확장자는 공백과 함께 저장되는 반면, FAT32는 공백 없이 저장된다. (위: exFAT 아래: FAT32) 두 경우의 확장자를 모두 검색해본다. 섹터 768에서 exFAT에서 저장되는 jpg의 hex값이 검색된다. FAT32의 jpg hex값은 발견되지 않는다. 즉 포맷 이전 파일 시스템은 exFAT인 것을 알 수 있다.
IU.jpg, Central Park.jpg, Night View.jpg 3개의 사진 파일을 찾을 수 있다.
jpg파일의 헤더(FFD8)와 푸터를 직접 복구하거나 binwalk를 통하여 추출할 수 있다. Rstudio를 사용하여 복구할 수도 있다.

이미지 파일 마운트 > 우클릭 scan > 옵션 detailed > Extra Found Files 에서 복구된 파일 확인할 수 있다. JPED Digital Camer(카메라로 촬영되어 생성) 2장, JPEG Image(일반 사진 파일) 1장이 복구되었다.

HxD에서 사진 파일을 직접 추출하여 복구한다.
exFAT의 기본 클러스터 크기는32KB로 64개 섹터이다. (섹터 크기: 512byte)

R-Studio의 각 이미지 헤더와 푸터 정보를 기록해두었다가 HxD에서 hex값 검색 후 위치(섹터)를 찾는다. 복구시에 슬랙 공간까지 저장해야한다. 파일에 할당된 섹터수(슬랙 포함)를 클러스터 개수로 변환한다.
예를 들어 첫번째 파일(central park.jpg)의 header에서 두번째 파일(Night view.jpg)의 header까지 총 4992개 섹터 = 64*78 즉 78개의 클러스터에 파일이 들어있다.
(용량을 클러스터 크기로 나누어도 됨) 파일 복구는 클러스터 단위로 해야하므로 해당 78개의 클러스터 영역의 hex값을 복사해 새로운 파일(central park.jpg)을 생성한다.
같은 방법으로 3개의 파일 모두 복구한다.

새로 알게 된 것

  • 파일 시스템 exFAT와 FAT32 차이점
  • 파일 복구 도구 R-Studio 사용법
  • 이미지 덤프에서 hex값 기반 파일 복구 방법

0개의 댓글