티스토리 뷰

 

이전 글에서 이어지는 내용입니다.

2025.02.13 - [Forensic/DISK Forensic] - NTFS 파일 시스템 파일 복구 -1-

 

NTFS 파일 시스템 파일 복구 -1-

1. 이미지 파일 준비 및 분석삭제된 파일을 복구하기 위해, 분석해야 할 이미지 파일을 확보했다.이 이미지 파일에는 3개의 삭제된 파일이 포함되어 있다.1.1. FTK Imager를 활용한 기본 구조 분석먼

infosec-noh.tistory.com

 


MFT Entry 시작 위치 부터 시작하겠습니다.

 

이제 다음으로 삭제된 파일인 recovery_file2.jpg을 복구해줄 것이다.

1. 삭제된 파일의 MFT Entry 위치 찾기

삭제된 파일을 복구하려면, 해당 파일의 MFT Entry를 먼저 찾아야 한다.
MFT 엔트리에는 파일의 속성 정보와 실제 데이터가 저장된 위치(Runlist 정보)가 포함되어 있다.

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


삭제된 파일: recovery_file2.jpg
MFT Entry 번호: 580MFT 시작 위치: 2,129,920 섹터

(580 * 2) + 2,129,920 = 2,131,080 섹터

이제 HxD에서 2,131,080 섹터로 이동하면,
삭제된 recovery_file2.jpg의 MFT 엔트리를 확인할 수 있다.

2. Runlist 분석 - 파일 데이터 위치 찾기

이제 MFT 엔트리 내부에서 Runlist 정보를 분석하여 파일의 실제 데이터 위치를 확인해야 한다.

3. 실제 파일 데이터 위치 계산

Runlist에서 Run Offset을 사용하여 파일이 저장된 실제 섹터를 계산한다.

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

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

0xAC8D = 44,813 (10진수)

파일 데이터 위치 계산

(AC8D * 8) + 32,768 = 386,152 섹터

즉, 파일의 데이터가 386,152 섹터에서 시작된다는 것을 확인했다.

이제 HxD에서 386,152 섹터로 이동하여,
삭제된 recovery_file2.jpg의 데이터를 확인할 수 있다.

4. 파일 크기 확인 및 정확한 복구

여기서 내가 간과한 하나의 실수가 있었다. 파일 데이터를 복사하여 새로운 파일로 저장하면 되지만, 한 가지 중요한 문제가 있다.

4.1. 데이터 크기 확인의 중요성

HxD에서 386,152 섹터로 이동해 데이터를 확인한 후,
데이터를 복사하여 복구했지만, 이미지가 손상된 상태로 열렸다.
이는 우리가 파일의 시작 위치만 확인했을 뿐, 파일 크기를 고려하지 않았기 때문이다.

즉, 무작정 복사해서는 안 되고, 정확한 파일 크기를 알아야 한다.

 

공식은 아래와 같다.

 

4.2. Runlist에서 사용된 클러스터 수 확인

MFT 엔트리에서 사용된 클러스터 개수를 확인하면, 파일 크기를 정확히 계산할 수 있다.

사용된 클러스터 수: 0x06

사용된 클러스터 수 * 클러스터 크기 * 섹터 크기
사용된 클러스터 수: 0x06 (6개)클러스터 크기: 8 섹터섹터 크기: 512바이트

6 * 8 * 512 = 62,304 바이트 (약 60KB)

5. 파일 복구 및 최종 확인

5.1. HxD에서 블록 선택 후 복사

  1. HxD에서 386,152 섹터로 이동
  2. Ctrl + E를 눌러 블록 선택 (크기: 62,304 바이트 입력)
  3. Ctrl + C로 데이터를 복사
  4. Ctrl + N을 눌러 새 파일 생성 후, Ctrl + V로 붙여넣기
  5. 파일을 recovery_file2.jpg로 저장 후, 정상적으로 열리는지 확인

5.2. 최종 복구 결과

이미지를 열어본 결과,
손상되지 않은 상태로 recovery_file2.jpg가 복구된 것을 확인할 수 있었다!