디지털포렌식

What is File Carving?

여니두 2020. 5. 1.

파일 카빙 (File Carving)

: metadata 보다는 파일 자체의 바이너리 데이터(content, signature, header ...)를 이용하여 디스크의 비할당 영역에서 파일을 복구하는 방식

** 파일이 디스크에 분할되어 저장되어 있는 경우, 비연속적 카빙을 사용해야 함

> 바이너리 데이터에서 정보 획득 후 할당되지 않은 영역에서 파일을 복구

 

- 연속적인 카빙 vs 비연속적 카빙 차이: 파일이 저장될 때 분할이 되어서 저장되는가/아닌가에 차이를 둔다.

 

* 종류

1. 시그니처 기반 카빙

파일 카빙은 metadata를 이용하지 않기 때문에 고유의 특성으로 복구해야 한다.

>> 각 파일의 포맷별로 존재하는 파일 시그니처를 이용하는 방법

- 시그니처는 1) Header 시그니처, 2) Footer 시그니처 가 존재한다.

- Header 시그니처를 시작으로 Footer 시그니처를 확인할 수 있다면 그 사이의 데이터는 해당 시그니처에 해당하는 파일일 것!

 

 

2. 램 슬랙 카빙

** 램 슬랙: 파일 내용을 디스크에 기록할 때 512의 배수가 되지 않아 생긴 0x00 영역을 뜻함

>> Footer 시그니처 이후에 램 슬랙이 대체로 존재하는데, 램 슬랙 카빙을 바탕으로 Footer 시그니처와 램 슬랙을 확인할 수 있으면

많은 오탐을 줄일 수 있다.

 

3. 파일 구조체 카빙

- 파일의 미리보기를 제공하는 파일에는 실제 내용 이외에도 파일 포맷에 썸네일을 포함한다.

- 실제 파일의 포맷과 썸네일의 파일 포맷은 동일 구조로 이루어져 있다.

>> 파일 포맷에 Header 시그니처는 존재하지만, Footer 시그니처가 존재하지 않을 때 파일 포맷 내부에 존재하는 여러 개의 시그니처를 보고 구조를 분석하는 기법

 

1) 파일 크기 획득 방법 기반의 카빙

- 파일은 대부분 데이터 표현을 위해서 가장 맨 윗단에 파일 구조체가 존재한다.

- 파일의 구조체 안에 파일의 크기를 알려주는 부분이 존재한다.

>> 파일 구조체에서 제공해주는 파일 크기 정보를 획득하여 카빙하는 방법

 

 

2) 파일 구조 검증 방법 기반의 카빙

- 문서 파일과 같이 빈번한 수정이 이뤄지는 경우에 데이터 표현을 위해서 고유한 계층 구조를 사용한다.

>> 이러한 계층 구조를 검증해서 카빙하는 방법

- 특히 Microsoft 복합 문서, 압축 파일 같은 경우에 계층 구조마다 고유한 시그니처가 존재

- 파일의 시작 위치를 지정하고 계층 구조를 확인해가면서 올바른 구조라면 '정상적인 파일이다' 라고 판단을 내릴 수 있다.

 

참고: https://whitesnake1004.tistory.com/248?category=814007

댓글