디지털포렌식

파일 카빙을 통한 데이터 복구

여니두 2020. 4. 5.

1. 파일 (File)

: 각종 컴퓨터 프로그램 등에서 사용하기 위한 데이터로서, 저장장치에 기록되어 사용된다.

종이 문서로 이루어진 '파일'과 같은 비슷한 역할

 

2. 파일 시스템 (File System)

: 파일이 저장장치에 기록되어 있어도 저장장치의 어느 위치에 저장되어 있는지 모른다면 해당 파일을 사용할 수 없을 것.

이런 일을 막기 위하여 각 저장장치에는 저장장치 내의 모든 파일을 관리하는 파일 시스템이라는 것을 둔다.

- 각 파일들이 어디에 저장되어 있는지 기록하여, OS나 여러 프로그램들이 저장장치에 기록되어 있는 파일들을 원활히 사용할

수 있게 함

- 생성/수정/접근 시간 등의 다양한 정보를 기록. 이렇게 파일을 위한 정보들메타 데이터 (Meta Data)라 부른다.

 

3. 할당 (Allocation)
: 파일 시스템이 각 파일이 어디에 저장되어 있는지 기록한다고 했는데, 이는 정확히 말하면 파일 시스템이 해당 파일에게 저장 장치의

일정 영역을 할당하는 것. 이렇게 파일에게 할당된 영역은, 다른 파일들이 사용할 수 없다.

 

4. 파일 삭제

: 파일을 삭제한다고 하면 파일의 데이터를 모두 제거한다고 생각하지만, 대부분 파일 시스템에서는 그렇지 않다.

보통 파일에 할당된 영역을 할당 해제하여 다른 파일들이 사용할 수 있는 상태로 만들고, 해당 파일의 메타 데이터를 사용하지 않는

으로 파일을 삭제한다.

 

5. 파일 복구 (Recover)

: 파일이 삭제되어도 데이터와 메타 데이터는 남아있기 때문에, 데이터가 다른 파일로 덮여 쓰여지지 않았다면 메타 데이터에

기록되어 있는 할당 영역을 살펴보면 어렵지 않게 파일을 복구해낼 수 있다.

 

6. 파일 카빙 (Carving)

: 하지만 메타 데이터 또한 다른 메타 데이터에 의해 덮여씌어질 수 있고, 모종의 이유로 손상/변조될 수 있다.

이런 경우에는 메타 데이터의 도움을 받지 못하기 때문에 분석가가 직접 저장장치에서 원하는 파일을 찾아내야 한다.

 

7. 파일 구조

* 시그니처 (Signature)

: 여러 프로그램 등에서, 파일을 쉽게 구분하기 위해 대부분 파일은 데이터의 여러 위치에 시그니처를 새겨 놓는다.

일반적으로 데이터의 가장 앞에 있는 시그니처를 헤더 (Header), 마지막에 있는 시그니처를 푸터 (Footer), 혹은 트레일러 (Trailer)

시그니처라 한다.

- 파일의 구분뿐만 아니라, 파일의 처리를 위해 데이터를 여러 영역으로 구분하여 기록하는 경우도 있는데, 이런 경우에는 영역마다

시그니처가 붙어있는 경우도 있다.

 

8. 비할당 영역 (Unallocated Area)

: 특정 파일을 카빙해내기 위해서는 단순히 저장장치의 모든 영역에 대해서 해당 파일의 시그니처를 탐색해내면 된다.

그러면, 그 파일과 같은 형식의 파일을 전부 찾을 수 있고, 찾아낸 파일 중 원하는 파일을 찾으면 된다.

- 하지만, 저장장치의 전 영역을 살펴보는 것은 용량에 따라 매우 긴 시간이 필요한 작업이 될 수 있고, 저렇게 찾아낸 파일은

복구가 필요하지 않은, 지워지지 않은 파일일 수도 있다. 따라서 검색 대상을 지워진 파일로 한정할 필요가 있다.

 

- 파일이 파일 시스템으로부터 공간을 할당받는다고 했는데, 이렇게 파일에게 할당되지 않은 공간을 비할당 영역이라 한다.

이 비할당 영역은 파일에 할당되지 않은 공간과, 파일이 삭제됨에 따라 할당이 해제된 영역을 포함한다.

- 파일 시스템은 저장장치의 할당 상태를 기록하고 있으므로, 파일 시스템이 손상되지 않았다면 쉽게 비할당 영역을 추려낼 수

있다.

>> 비할당 영역을 대상으로 시그니처 탐색을 수행하면 조금 더 빠르게 원하는 파일을 찾아낼 수 있다.

 

9. 조각화 (Fragmentation)

: 데이터가 덮어씌워져 복구가 불가능한 것 외에도 파일 카빙 작업에 있어 큰 문제점이 있다. 파일 생성, 삭제 과정을 반복하면

저장장치의 공간을 완벽하게 채워 사용하지 못하고, 중간 중간에 크고 작은 빈 영역이 생기게 된다.

이런 빈 영역들을 사용하다 보면, 파일의 데이터를 한번에 다 기록하지 못하고 여러 영역에 나누어 기록하게 되는 경우가 있는데,

이를 조각화라 한다.

- 메타 데이터를 이용할 경우, 파일이 어느 영역을 얼마나 할당 받았는지에 대한 기록이 있기 때문에 파일이 조각나도 문제 없이

사용할 수 있지만, 메타 데이터의 도움을 받지 않는 파일 카빙 과정에서는 여러 문제점이 발생한다.

특히

1) 파일 헤더부터 푸터까지 복구하는 경우: 중간에 다른 파일의 데이터가 포함되는지 알 수 없음

2) 파일 헤더를 분석하여 파일 크기만큼 복구하는 경우: 파일의 일부분이 복구되지 않는다.

 

- 조각화를 극복하고 파일 카빙해내려는 다양한 시도가 있으나 아직 완벽한 방법은 없다고 한다.

 

 

참고

http://dal4segno.github.io/digitalforensics/data-recovery-via-the-file-carving/#%EC%8B%9C%EA%B7%B8%EB%8B%88%EC%B2%98signiture

댓글