파일 시스템 상의 파일 복구

파일시스템에 파일이 저장할 때, 파일의 이름, 시간 정보, 크기 등의 메타정보가 함께 기록되는데 보통 파일을 삭제할 경우 메타정보와 실제파일 내용을 초기화하지 않고 단순히 메타정보의 특정 플래그만 변경한다. 파일 시스템상의 파일 복구는 이와 같이 삭제된 것으로 표시된 메타정보를 이용하여 복구하게 된다.


1. FAT파일 시스템에서 파일 복구

FAT 파일 시스템은 파일의 메타정보를 유지하기 위해 FAT영역과 Directory Entry를 사용한다. 파일이 삭제될 경우 FAT영역에서는 파일에 할당 되었던 클러스터에 대응되는 FAT Entry가 0x00으로 초기화가 된다. 그리고 해당 파일의 Directory Entry의 오프셋 0x00의 값이 삭제를 나타내는 0xE5로 변경되고 이 경우 파일에 할당되었던 클러스터에는 파일의 내용이 그대로 남아 있게 된다. 따라서 해당 클러스터가 새로운 파일에 사용되지 않았다면 삭제 표시된 Directory Entry에 파일 크기와 시작 클러스터 정보를 통해 비교적 쉽게 파일을 복구 할 수 있다.


2. NTFS에서 삭제된 파일 복구

NTFS에서는 파일의 메타정보를 유지하기 위해 MFT Entry와 MFT Entry의 할당상태를 표시하기 위한 $MFT(MFT Entry 0) 파일의 $BITMAP 속성, 클러스터의 할당 상태를 표시하기 위한 $Bitmap(MFT Entry 6)파일의 $DATA속성을 사용한다.
파일이 삭제될 경우 $MFT파일의 $BITMAP속성에서 해당 파일이 사용했던 MFT Entry 비트가 0으로 설정되고 $BITMAP파일의 $DATA 속성에서 해당 파일에 할당되었던 클러스터 비트가 0으로 설정된다. 결국 파일의 MFT Entry와 실제 파일에 할당되었던 클러스터 내용이 새로운 파일의 정보로 덮여 쓰여지지 않았다면 비교적 쉽게 파일을 복구할 수 있다.



3. 파일 카빙

파일 카빙 기법은 저장 매체의 비할당 영역으로부터 파일을 복구하는 기법으로 저장 매체의 공간 할당에 따라 연속적인 카빙(continuous carving)기법 과 비 연속적인 카빙(fragment recovery carving)기법으로 나눌 수 있다. 연속적인 카빙 기법은 파일 내용이 저장 매체의 연속된 공간에 저장된 경우 수행하는 카빙 기법이고 비 연속적인 카빙기법은 파일의 내용이 저장 매체의 여러 부분에 조각이나 저장된 경우에 수행하는 카빙 기법이다.


3-1. 시그니처 기반 카빙

파일 카빙은 파일이 메타정보를 이용하지 않기 때문에 파일의 고유한 특성으로 복구해야 한다.
시그니처 기반 카빙 기법은 파일 포맷별로 존재하는 고유한 시그니처를 이용하는 방법이다. 시그니처는 파일의 시작부분에 위치하는 헤더(Header)시그니처와 파일의 마지막에 존재하는 푸터(Footer)시그니처가 있다.
따라서 헤더와 푸터 시그니처가 모두 존재하는 파일의 경우 두 시그니처 사이의 데이터가 파일의 내용이 된다.
하지만 시그니처 기반 카빙의 경우 파일을 구분하는 시그니처의 크기가 작거나 일반적인 경우 파일 내용의 바이트 스트림에서도 같은 값이 존재할 가능성이 매우 높기 때문에 많은 오탐이 생길 수 있다.  

+ Recent posts