휴지통이라는 것은 누구나 아는 것이며 그 기능 또한 누구나 다 알고 있을 것이다.

하지만 휴지통의 원리를 아는 사람은 휴지통을 아는 사람 중 얼마나 될까?

조사관이라면 휴지통이 어떠한 구조와 원리로 되어 있는지 알아야 한다.

지금부터 휴지통에 대해서 분석 해 보자.

일단 모두가 알고 있는 삭제 기능을 정리하면 다음과 같다.

[윈도우의 삭제 기능]
 - 휴지통에 삭제할 파일을 이동하여 휴지통 비우기로 삭제
 - 휴지통을 거치지 않고 Shift+Delete 키로 삭제


휴지통은 볼륨마다 있으며 INFO2($I)라는 파일을 사용한다.

이 파일의 길이는 800바이트이고, Win Vista/7 이후 부터는 INFO2 파일을 사용하지 않고 $I라는 파일을 사용한다.

휴지통 폴더의 이름은 RECYCLER이며 Win Vista/7 이후 부터는 폴더 이름 앞에 $가 붙는다.

휴지통 폴더 아래에는 SID로 된 하나 이상의 서브폴더가 있는데 만약 휴지통을 통해 파일을 한번도 삭제하지 않았다면 이 서브

폴더는 생성되지 않는다.

휴지통 폴더는 시스템 파일에 속해 폴더 옵션에서 시스템 파일 숨김을 체크해제 하여야만 탐색기로 볼 수 있다.

[그림 1 - 휴지통 폴더(XP)]

현재 png 그래픽 파일 하나가 휴지통에 있는 상태인데 탐색기로 보았을 때에는 정상적으로 휴지통 폴더를 클릭한 것 처럼

보이지만 cmd로 보았을 때에는 Dc2.PNG라는 이름으로 보인다.

이제부터 이것에 대해 설명 할 것이다. 

D로 시작하는 이름의 파일은 삭제된 파일의 임시파일이다. 즉, 이 파일을 삭제하면 해당 파일을 휴지통에서 삭제한것과 같은

효과를 볼 수 있다.

휴지통을 통한 파일 삭제 순서를 짚어보자.
1. 파일 삭제 버튼 클릭
2. 파일이 삭제되며 해당 파일의 MFT 엔트리가 삭제, 동시에 D로 시작하는 임시파일이 생성되고 이 파일에 대한 MFT 엔트리가 새로 할당
3. 휴지통 비우기를 통해 D로 시작하는 이름의 파일을 삭제하면 해당 파일에 MFT 엔트리가 삭제되면서 완전 삭제가 됨.


위에서 D라는 이름으로 생성되는 파일은 생성되면서 삭제된 파일과 동일한 컨텐츠와 타임스탬프, 클러스터를 가지게 된다.

D로 시작하는 파일의 이름은 일정 규칙을 가지고 있는데 그 규칙은 다음과 같다.

[그림 2 - 임시파일 이름 생성 규칙]

휴지통에서 파일을 복구하려면 원본 파일의 이름과 전체경로, 원본 파일의 클러스터와 컨텐츠가 필요한데 원본파일의

클러스터와 컨텐츠의 경우 임시파일이 가지고 있지만, 원본 파일의 이름과 전체경로는 임시파일이 가지고 있지 않다.

이 정보는 앞에서 말한 INFO2 파일이 가지고 있으며, INFO2 파일에는 파일의 이름과 전체경로말고도 여러가지 정보가

기록되어 있다.

이러한 정보들도 복원된 파일은 원본 파일과 동일하게 복구되며 접근시간만 복원시점으로 갱신된다.

휴지통은 앞서 봤듯이 하위 폴더를 지니고 있지만 휴지통 아이콘을 클릭하면 하위 폴더를 보여주지 않는다. 또 INFO2 라는

파일을 사용하고 있어 휴지통은 정확히 말하면 폴더가 아닌 유틸리티에 속한다.

INFO2 파일을 직접 오프셋을 분석하려 했지만, 하나의 이미지에서 모든 오프셋을 분석하기가 불가능하여 목록표로 대체하겠다.

[그림 3 - INFO2 파일의 헤더 offset]

[그림 4 - INFO2 파일의 offset]

지금까지는 XP 버전의 INFO2 파일 분석이었다면 지금부터 다룰 $I 파일은 Vista/7에서 INFO2 역할을 하는 파일이다.

Vista/7에서는 XP와 다르게 $I<random>.<원본 확장자> 의 규칙을 적용하여 임시파일 이름을 할당한다.

[그림 5 - Win Vista/7 임시파일 이름]

또 INFO2 파일처럼 따로 존재하는 것이 아닌 위 이미지에 있는 임시파일 자체가 $I 파일이다.

크기는 544 바이트로 고정이다.

$I 파일의 오프셋 구조는 다음과 같다.

[그림 6 - $I 파일의 offset]


이제 휴지통이 어떻게 파일을 복구하는지 알아 볼 차례이다.

1. 복원될 파일의 MFT 엔트리를 할당
    - MFT 엔트리에는 접근시간을 제외하고 원본파일과 동일한 파일 메타데이터를 가지게 한다.
2. 휴지통에 있는 D로 시작하는 이름의 임시파일을 삭제
3. D로 시작하는 이름의 임시파일에 대한 INFO2레코드의 전체 경로의 첫 문자를 0x00으로 변경.
    - 이렇게 하면 어플리케이션은 클러스터를 비할당 한것으로 인식 한다. 
* 참고 : INFO2 레코드의 예약문자(첫문자)가 0x00으로 변경된 레코드는 레코드 번호를 재사용 할 수 있게 됨.


3번 처럼 파일을 삭제하는 경우 어플리케이션은 클러스터가 비할당된 것 처럼 여기지만 실제로는 데이터가 존재하는 격이 되

추후에 이 영역을 이용하여 INFO2 레코드 복구가 가능하다.

복구된 INFO2 레코드는 삭제된 후 MFT 레코드가 덮어씌여져 존재를 알 수 없는 파일을 찾는데 매우 귀중한 단서가 된다.

'[+] Forensic' 카테고리의 다른 글

바로가기(LNK) 파일  (0) 2012.01.11
이벤트 로그  (1) 2012.01.11
휴지통 분석  (0) 2012.01.10
윈도우 계정  (0) 2012.01.10
Registry (11)  (0) 2012.01.07

+ Recent posts