반응형

오늘은 NTFS 파일 시스템에서의 파일복구를 실습해볼것이다.

툴은 NTFS Walker, HxD(+ FTK Imager, 010 Editor)를 이용해 볼 것이다.

 

*본 실습엔 개념을 NTFS에 대한 이해를 전제로 진행한다.

 


0. 파일 생성

실습을 위해 복구할 파일을 만들고자 한다.
D드라이브에 텍스트 파일을 하나 생성해보았다.

 

파일 명 : Forensic_NTFS_Study_Day1.txt

파일 타입 : .txt

크기 : 1,296byte(디스크 할당 크기 4,096byte)

 

*내용은 Non-resident 형태로 만들기 위해 700바이트가 넘도록 내용을 작성하였다.



1. 파일 삭제

우선 실습환경이 SSD 이기때문에 Trim을 비활성화하였다.

CMD 관리자 권한으로 fsutil behavior set DisableDeleteNotify 1 명령어로 비활성화가 가능하다.

 

그리고 파일을 완전히 삭제한다.



2. 분석

이제 분석을 진행 할 시간이다.


우선 HxD(관리자 권한 실행)를 통해 D드라이브를 물리디스크 형식(도구-디스크열기-물리디스크)으로 열어본다.


아래를 보면 VBR이 0x00 00 08 00으로 2048번째 섹터에 위치 해 있는 것을 확인 할 수 있다.

 

 

VBR이다. 해당 영역의 13번째 인덱스의 값은 클러스터 당 섹터의 개수이다. 0x08로 8개인 것을 확인 할 수 있다.

 

 

위 정보를 이용하여 이제 삭제한 파일의 데이터를 찾아가 볼 것이다.



3. 파일 복구

이제 본격적으로 파일을 복구해 볼 것이다.

일단 NTFS Walker를 이용하여 삭제된 파일의 MFT Entry Number를 확인한다.

1209번이 삭제된 파일의 Entry Nubmer이다.

 

한 Entry당 두개의 섹터(본 시스템 기준 512byte*2 = 1024byte 크기)를 가지고 있다.
VBR 영역에서 Start Cluster for $MFT를 통해 해당 섹터를 찾아가서 1209 * 2 섹터만큼 건너 뛰면 되지만,

본 포스팅에서는 편리를 위해 FTK Imager로 $MFT를 덤프하여 010 Editor를 통해 열어 해당 Entry를 찾아가 보았다.

 

 

해당 FileName 영역을 보면 삭제된 파일의 이름이 존재한다. 해당 영역이라는 것은 증빙이 되었다.

 

 

이제 Runlist부분을 찾아가 본다.

 

 

Runlist는 0x31 01 DD 3B 0C 부분이다.

Run Length는 0x01, Run Offset은 0x0C 3B DD이다.

해당 값과 공식을 이용하여 실제 컨텐츠 데이터에 접근해 보겠다.

(사진에 드래그한 앞에 8바이트는 파일의 Initalized Size를 이야기한다. 0x05 10 값으로 1296byte였던 파일이었다는 정보를 알 수 있다.)

 

0C 3B DD * 8(클러스터 당 섹터) + 2048(VBR 시작 섹터) = 6,416,104섹터(10진수/실제 컨텐츠 데이터)

 

HxD에서 해당 섹터로 찾아가본다.

 

 

삭제되었던 텍스트 파일이 존재한다!

해당 주소부터 파일의 크기인 1296byte만큼 복사하여 새로운 파일로 저장한다.

 



3. 파일 복구 성공

다음과 같이 파일이 복구가 된 것을 확인 할 수 있다.

 

 


이제 실습끝났으니 다시 Trim을 활성화하여 빠른 속도로 사용합니다!

반응형

+ Recent posts