티스토리 뷰


1. 이미지 파일 준비 및 분석

삭제된 파일을 복구하기 위해, 분석해야 할 이미지 파일을 확보했다.
이 이미지 파일에는 3개의 삭제된 파일이 포함되어 있다.

1.1. FTK Imager를 활용한 기본 구조 분석

먼저, FTK Imager를 사용하여 이미지 파일을 열고 구조를 확인해보았다.
분석 결과, 이미지 내부에 NTFS.Recovery.001이라는 RAW 파일이 포함되어 있음을 확인했다.
이 RAW 파일을 추출하여, 직접 분석을 진행하기로 했다.

 

1.2. NTFS 파티션 및 VBR 확인

이미지 파일 내부에 있는 NTFS.Recovery.001을 FTK Imager에서 확인한 결과,
"Partition 2"가 NTFS로 포맷된 것을 확인할 수 있었다.

하지만 HxD를 통해 확인했을 때, MBR과 VBR이 잘 보이지 않았다.
이는 NTFS 파티션이 두 번째 파티션에 존재하기 때문이며,
VBR(Volume Boot Record)이 32,768 섹터에 위치하는 것을 확인하였다.

2. MFT 위치 및 엔트리 확인

NTFS 파일 시스템에서는 삭제된 파일의 정보를 MFT($MFT)에서 찾을 수 있다.

 

2.1. MFT 위치 계산

NTFS 구조에서는 MFT의 시작 위치를 확인하고, 이를 통해 특정 파일의 MFT 엔트리를 찾을 수 있다.
MFT의 시작 위치는 NTFS VBR(32,768 섹터)에 저장되어 있으며, 이를 기반으로 MFT 위치를 계산할 수 있다.

MFT Entry 위치 공식:

MFT 시작 클러스터(04 00 00) * 클러스터 크기(08) + NTFS 시작 섹터(32768)


계산 결과:
2129920 섹터 (MFT의 시작 위치)

 

2.2. 파일의 MFT Entry 확인

삭제된 파일을 찾기 위해, MFT 엔트리에서 특정 파일이 기록된 위치를 찾아야 한다.
이를 위해 NTFS Walker를 사용하여 파일의 MFT Entry 번호를 확인했다.

 

  • 삭제된 파일: recovery_file1.txt
  • MFT Entry 번호: 39

 

2.3. 파일의 MFT Entry 위치 계산

MFT에서 특정 파일의 엔트리 위치를 찾기 위해 아래 공식을 사용한다.

파일의 MFT Entry 위치 = MFT Entry 번호 * 2 + MFT 시작 위치

계산 결과: (39 * 2) + 2129920 = 2129998 섹터

 

HxD에서 해당 섹터로 이동한 결과, recovery_file1.txt의 MFT 엔트리를 확인할 수 있었다.

 

3. Runlist 분석 및 파일 데이터 위치 찾기

이제 MFT 엔트리에서 파일 데이터가 저장된 위치를 찾아야 한다.
NTFS에서는 파일이 작은 경우Resident Flag되고, 파일이 크면 Non-Resident Flag된다.

3.1. Runlist를 사용한 파일 데이터 위치 확인

MFT 엔트리 내부에는 Runlist 정보가 포함되어 있다.
Runlist는 파일이 저장된 실제 클러스터 위치를 알려주는 정보이다.

데이터 위치 공식:

( Run Offset(789) * 클러스터 크기(8) ) + NTFS 시작 섹터(32768)

HxD에서 Runlist 값을 확인한 결과:

Run Offset: 789

파일 데이터 위치 계산

(789 * 8) + 32,768 = 48,200 섹터

3.2. 파일 데이터 복구

HxD에서 48,200 섹터로 이동하여 확인한 결과,
recovery_file1.txt의 데이터가 해당 섹터에 존재함을 확인했다.

이제 파일 내용을 복사하여 새로운 파일로 저장하면 복구가 완료된다.