Windows 삭제 파일 복구

qwq·2026년 1월 1일

Forensics

목록 보기
2/5
post-thumbnail

일반적으로 Windows에서 파일을 삭제하면 휴지통으로 이동하고, 휴지통 비우기를 하거나 Shift+Del 키를 이용해 삭제하면 파일이 완전히 삭제된 것처럼 보인다. 이렇게 완전히 삭제된 것처럼 보이는 파일을 복구하는 법을 알아보자.

파일의 삭제 방식

Windows 사용자 기준에서, 파일의 완전 삭제는 어떤 통상적인 방법으로 목표 파일을 찾을 수 없음을 의미하며, 해당 파일을 가리키는 메타데이터가 남아있지 않아 해당 파일에 접근할 수단이 없다는 것이다.

모든 파일의 메타데이터, MFT 엔트리가 모여있는 $MFT에서 해당 파일을 가리키는 MFT 엔트리를 삭제하는 식으로 동작하기 때문에 파일에 대한 접근 수단은 없어지지만, 데이터는 원래 파일의 위치에 그대로 남아있게 된다.

파일의 복구

$MFT에서 해당 파일의 MFT 엔트리의 플래그가 in-use에서 free로 변경되었을 때, 이 영역이 덮어씌워지지 않았다면 그 MFT 엔트리를 따라 복구가 가능하며, MFT 엔트리가 이미 덮어 씌워졌을 경우 완전한 복구가 불가능 하다.

파일의 복구는 일반적으로 다음과 같은 순서로 진행된다.

  1. NTFS에서 $MFT 영역을 찾는다.
  2. 해당 $MFT영역에서 복구할 파일의 이름을 찾는다. 이미 MFT 엔트리가 덮어씌워졌다면 복구할 수 없을 수 있다.
  3. 해당 MFT 엔트리의 Attribute Area에서 $DATA 섹션(Attribute ID: 0x80)을 찾는다. 파일의 크기가 약 700바이트 이상일 경우(Non-Resident) 해당 섹션의 마지막에 있는 클러스터 런을 식별한다. 이하일 경우(Resident) 해당 섹션의 내용에 파일의 데이터가 포함되어 있다.
  4. 해당 클러스터 런에 따라 원본 파일을 탐색한다.

FTK Imager에서는 파일의 MFT 엔트리의 플래그가 free 상태이지만 해당 엔트리가 덮어씌워지지 않았을 때 파일 아이콘에 X 표시를 붙여 삭제된 파일을 복구가 가능함을 표시한다.

파일 카빙

MFT 엔트리 없이 파일을 복구하는 과정을 카빙(Carving)이라고 한다. 크게 파일 시그니처를 기반으로 하는 것과 파일 구조를 기반으로 하는 것으로 나눌 수 있다. 파일의 구조적인 특성을 이용하기 때문에 MFT 엔트리만 탐색하고 필요한 부분을 수집하는 것이 아닌, 볼륨 전체를 탐색한 후 식별해야 한다.

파일 시그니처 기반 카빙

대부분의 파일은 파일의 타입을 나타내는 특수한 시그니처가 파일의 시작과 끝에 있기 때문에, 해당 시그니처를 기준으로 파일을 복구할 수 있다. 볼륨 내에서 파일의 시작 시그니처를 탐색한 후, 해당 지점부터 파일의 끝 시그니처를 탐색해 그 영역을 파일로서 식별하는 것으로, 연속된 클러스터에 파일 조각이 나뉘어 저장되어 있을 때 사용가능하다.

파일 구조 기반 카빙

모든 파일의 끝에 시그니처가 있는 것은 아니기 때문에, 파일의 시작 시그니처부터 파일 헤더를 식별한 후 해당 파일의 구조에 맞게 파일을 재구성하며 식별하는 것이다. 파일의 헤더에는 파일 내의 각 영역에 대한 메타데이터가 있을 것이고, 그를 이용해 헤더의 길이, 메인이 되는 데이터의 길이 등을 식별한 후 해당 정보에 맞게 데이터를 식별하여 복구한다.

파일 복구 도구

  • Recuva - 간단한 파일 복구 도구다.
  • TestDisk - 파티션 복구용 도구다. MFT의 백업을 이용해 복구한다.
  • PhotoRec - 디스크 전체를 읽으며 파일 시그니처를 기반으로 복구한다.
  • binwalk - 파일의 구조를 기반으로 복구한다.
profile
QwQ

0개의 댓글