Forensics_Analysis_of_Recycle_Bin
2019-10-14 / ws1004

목차

  • 휴지통 분석의 개요(Recycle Bin)
  • 휴지통이란?
  • 휴지통 분석(Recycle.Bin)
    • Windows XP 휴지통 분석
      • C:\RECYCLER\\{USER SID} 폴더 찾기
      • Windows XP에서의 INFO2 file 과 저장되는 파일 이름
      • INFO2 FILE Structure Analysis
    • Windows 10 휴지통 분석
      • C:\$Recycle.Bin\\{USER SID} 폴더 찾기
      • Windows 10에서의 $I 와 $R Analysis
      • $I FILE Structure
      • $R FILE Structure
  • DFC(Digital Forensic Challenge) 2019 Incident Response 100 문제 일부 풀이.
  • 추후 개선 해야 할 점.


휴지통 분석의 개요(Recycle Bin)

휴지통 이미지

우리가 자주 사용하는 윈도우에서 없어서는 안되는 프로그램중 하나인 휴지통 에 대해서 분석을 해보려고 합니다.

중요한 데이터를 삭제 해서 복구를 요청하는 경우도 있고 윈도우 사용자라면 누구나 한번 쯤은 휴지통을 사용해 보고 기능도 잘알지만 휴지통의 원리를 아는 사람은 몇 없을 것이라고 생각해서 글을 한번 써보려고 합니다.


휴지통이란?

Windows 데스크톱에 있는 휴지통 프로그램은 파일을 삭제했을때 임시로 저장되는 디렉터리를 가르킵니다.

우리가 Microsoft Windows 운영체제에서 파일을 삭제되면 우리 눈으로는 완전히 삭제 된 것 처럼 보이지만 영구적으로 휴지통에서 삭제 되는 것이 아닙니다.

휴지통에서 완전히 삭제 되는 것이 아니기 때문에 사용자가 휴지통에서 삭제된 파일을 복원 하려는 경우에 휴지통 포렌식(Recycle Bin Forensic)을 수행 할 수 있습니다.

디지털 포렌식(Digital Forensic)을 수행하는 궁극적인 이유는 사건에 필요한 자료를 찾기 위함이 1순위로 생각이 되는데 운영체제에서 가장 많이 데이터가 오가는 곳이 휴지통이라고 생각을 합니다.

그래서 포렌식(Forensic) 즉, 법의학 관점에서 보았을때 휴지통은 증거 및 단서를 수집하는데에 있어서 금광이라고 불릴 정도로 많은 데이터가 존재 하고, 정확한 분석을 하면 유용한 데이터를 복구 할 수 있습니다.


휴지통 분석(Recycle.Bin)

앞서 이야기 했듯이 휴지통은 Windows desktop에서 가장 눈여겨 보는 아티팩트(artifacts)중에 하나입니다.

Microsoft Windows 버전을 보면 지금까지 많은 버전들이 변화 하고 바뀌면서 Windows 10 까지 나왔습니다.

휴지통 프로그램은 Windows 95를 시작으로 Windows 운영체제와 함께 쭉 계속해서 사용해 왔으며 MS-DOS에서도 유사한 기능의 프로그램이 있었습니다.

컴퓨터 사용자가 Windows에서 파일을 ‘삭제’할때 사용자 눈에는 완벽하게 삭제된 것 처럼 보이지만 컴퓨터에는 해당 파일에 대한 데이터가 남아있습니다. 파일이 삭제된 시점에 파일은 휴지통의 시스템 폴더에 복사가 자동으로 되면서 사용자가 해당 파일로 어떠한 행위를 하기 전까지는 시스템 폴더에 저장됩니다.

아래의 표는 사용하는 OS(Operating System)에 따른 파일시스템 및 삭제된 파일 경로 등등을 작성한 표입니다.

각 OS에 따른 Recycle.bin 위치


Windows XP 휴지통 분석
C:\RECYCLER\\{USER SID} 폴더 찾기

아래의 사진은 Windows XP에서 휴지통 폴더(RECYCLER)의 내용을 확인 한 것 입니다.

win_xp recycler

RECYCLER 폴더 아래에 가 있습니다.

USER SID를 확인하는 방법은 레지스트리 키를 확인해 보는 것 입니다.

  1. win+r 을 입력후 regedit 를 입력후 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 에 있습니다.

    registry ProfileList

  2. cmd를 실행 시키고 vmic UserAccount Where LocalAccount=True Get SID 명령을 입력하면 아래와 같이 SID를 확인 할 수 있습니다.

    win_xp SID

그렇다면 이제 직접 해당 디렉터리에 가서 데이터가 있는지 확인해 보겠습니다.

이제 c:\ 하위에 RECYCLER 폴더를 확인하기 위해서는 폴더 옵션을 좀 확인 해야합니다.

폴더 옵션

위와 같이 보호된 운영체제 파일 숨기기(권장)을 체크 해제를 하고 숨김 파일 및 폴더 표시를 체크 하면 아래와 같이 폴더를 확인 할 수 있습니다.

View RECYCLER1

해당 폴더에 들어가 보면 아래와 같이 값을 이름으로 하고있는 휴지통을 확인 할 수 있습니다.

해당 시스템에는 1개의 User를 사용하기 때문에 휴지통이 1개밖에 없습니다.

View RECYCLER2

를 이름으로 하고있는 파일로 들어가 보면 다음과 같이 삭제 되었던 파일이 존재 합니다.

DATA

하지만 명령어 창을 통해서 해당 폴더의 내용을 확인하면 내용이 다르게 보입니다.

View Data file


Windows XP에서의 INFO2 file과 저장되는 파일 이름

그 이유는 폴더에서 확인한 데이터는 INFO2 파일의 정보에 있는 데이터를 기반으로 원래 파일이름으로 표시를 해주기 때문에 명령어 창으로 데이터를 확인하면 위와 같이 Dc3.txt 라는 데이터를 확인할 수 있습니다.

명령어 창으로 확인되는 파일 이름 및 확장자는 다음의 형식에 따릅니다.

D [original drive letter of file] [index number].[original file extension]의 형식을 가집니다.

위의 파일은 지워졌고[D], C드라이브에 있던 데이터[c] 이면서 확장자는 txt[txt] 이기 때문에 그렇습니다.

만약 데이터가 D드라이브에서 삭제가 되었다면 Dd[index].[extension] 의 파일명으로 존재 할 것입니다.

index의 값은 삭제된 파일이 늘어나면 늘어날 수록 값이 늘어납니다.

저기 보이는 INFO2 라는 파일 때문에 폴더에서 파일을 보면 정확한 원본 파일명이 나왔었는데요!

저 파일은 Windows Vista 이전의 운영체제 에서만 확인 할 수 있습니다.

해당 파일은 쉽게 열수가 없고 눈으로 볼 수 없는 파일 입니다.

그래서 rifiuti2.exe 프로그램을 사용합니다.

rifiuti2.exe install URL : https://github.com/abelcheung/rifiuti2/releases/tag/0.7.0

rifiuti2.exe 사용법은 아래와 같습니다.

rifiuti2.exe [INFO2]이지만 저는 명령어 창에 rifiuti.exe INFO2 > result.txt라고 입력했습니다.

rifiuti2.exe result1

위와 같이 지금까지 삭제된 데이터가 다 들어있습니다. (분명 data.txt 만 있었는데 말이죠)

rifiuti2.exe 를 이용하면 [삭제된 파일의 IDX 값] [삭제된 날짜] [Gone? 값] [사이즈] [파일의 경로] 를 확인 할 수 있는데, 사이즈의 값이 전부 4096 으로 되어 있습니다. txt 파일과 pptx 파일의 사이즈가 4096으로 통일될 가능성은 거의 없는데 말이지요.

그 이유는 4096보다 작은 사이즈면 기본값으로 4096이라고 표시 되는 것 같습니다.

rifiuti2.exe result2

확인차 사이즈가 큰파일을 삭제해 봤는데 위와 같이 2871296 이라고 나왔습니다.

그리고 알수 없는 Gone? 라는 값이 있습니다. Yes / No 를 반환 하는 값으로 생각이 되는데 RECYCLER 하위에 있는 SID의 파일명을 가진 휴지통에서 파일을 완전 삭제를 했는가 아니면 완전 삭제 하지 않고 아직 휴지통 안에 있는지를 확인하는 반환 값 인것 같습니다.

aaa.txt 파일과 powerpoint.pptx 는 아예 휴지통에서 삭제를 해서 없는 상태인데 YES 반환 해 놓은 것 을 보면 알 수 있습니다.


INFO2 FILE Structure Analysis

이렇게 INFO2를 rifiuti2.exe tool을 이용해서 쉽게 확인 할 수 있었습니다.

이번에는 직접 HxD를 이용해서 INFO2 File Structure를 공부해 보겠습니다. 참고로 INFO2 파일은 눈으로 볼수가 없고 cmd 명령어 창에 dir /a명령을 통해서만 확인 할 수 있습니다.

그래서 필자 같은 경우에는 C:\RECYCLER\{USER SID}폴더 자체를 localhost 컴퓨터에 옮겨서 FTK Imager tool을 이용해서 INFO2 파일을 추출 했습니다.

INFO2 data

INFO2 파일을 HxD에 넣어보면 아래와 같습니다.

[글을 작성하기 위해서 실습하던중 여러 데이터가 들어가서 INFO2 파일에서 불필요한 요소는 삭제를 했습니다. 레코드 번호나 다른 데이터 들의 순서가 다를 수도 있습니다.]

INFO2 data in HxD

위와 같이 Hex Value 값만을 보고 파일 구조를 바로 이해하기 어렵기 때문에 INFO2 FILE Structure 를 정리한 표를 작성해 보겠습니다.

INFO2 FILE Structure

파일의 헤더 + 파일 레코드로 구성되어 있으며, 파일의 헤더는 0~F(15) 까지 나타나 있고 그후 파일레코드의 반복으로 INFO2 파일이 만들어 집니다.

info2 file structure

NT/2K/XP - INFO2 FILE Structure

세부적인 INFO2 FILE Structure

위의 구조에 맞춰서 INFO2 FILE과 대조 해보겠습니다.

INFO2 FILE 대조

위와 같은 데이터 파일 구조를 바탕으로 rifiufi2.exe tool이 파일 정보를 추출해서 시각적으로 보기 쉽게 만들어 주는것 같습니다.

휴지통을 깨끗하게 비우고 INFO2 FILE을 보면 아래와 같습니다.

휴지통 비우기 후 HxD

Header 만을 남겨두고 파일 레코드가 깨끗하게 사라지게 됩니다.


Windows 10 휴지통 분석
C:\$Recycle.Bin\\{USER SID} 폴더 찾기

Windows XP 처럼 폴더를 찾아 보겠습니다.

Windows10 Recycle.bin1

휴지통이라는 이름을 가지고 있네요

Windows10 Recycle.bin2

폴더에서는 휴지통으로 사용자에게 보이지만 명령어 창에는 S-1-5-21-165820823-1628512024-356916387-1001 라고 값이 출력됩니다.

폴더 하위를 보면 폴더에서는 같지만 XP와는 다른 파일이 명령어 창에서 존재 합니다.

휴지통 내용물

↑↑ 폴더에서 본 $Recycle.Bin\\{USER SID}

Recycle.bin에 숨긴 파일로 존재하는 파일들

↑↑ 명령어창에서 본 $Recycle.Bin\\{USER SID}


Windows 10에서의 $I 와 $R FILE Analysis

Windows XP 와 달리 $I 와 $R 의 이름이 붙은 파일이 보이고 INFO2 FILE이 보이지 않습니다.

Windows Vista 이후에서는 INFO2 FILE 대신에 $I 파일로 대체 되었습니다.

$I로 시작하는 파일은 본질 적으로 삭제된 특정 파일의 메타 데이터를 담은 데이터 입니다. Windows XP의 INFO2 FILE과는 달리 $I 파일은 고정 크기의 파일이 아닌 필요한 만큼만 할당 되어져 있습니다.

$R로 시작하는 파일은 실제로 삭제된 원본 파일을 의미 합니다.

$R로 시작하는 파일

FILE Size 만봐도 원본 파일인것 을 알 수 있습니다.

파일을 삭제하면 $R파일은 $R[random string] 파일 형식으로 이름이 변경됩니다.

또한 $I파일은 $I[$R의 random string]의 형식으로 변경하게 됩니다.


$I FILE Structure

$I FILE Structure

$I FILE Structure를 알아보겠습니다.

$I 파일 구조 표

위의 구조를 바탕으로 적용을 해보면 다음과 같습니다.

$I 파일 대조

Windows XP 의 INFO2 FILE의 필요한것만 모아 놓은 축소판 인것 같습니다.

File Header의 Hex Value 값은 Windows 7 or Windows 8.1 일 경우엔 1, Windows 10 일경우엔 2를 의미합니다.

File Deleted Date/Time 은 TimeDecode Tool 을 이용해서 변환할 수 있습니다.


$R FILE Structure

$I 파일과 달리 $R 파일은 기존의 사용자가 삭제한 데이터를 그대로 보존하고 있습니다.

바뀐점은 파일 이름만 조금 바뀐것 뿐입니다. 실제 파일의 내용과 바뀐점이 없습니다.

$R 파일 구조 in HxD

↑↑ $RFMWWK.png 파일의 Hex Value


DFC(Digital Forensic Challenge) 2019 Incident Response 문제 일부 풀이.

몇일 전에 끝난 DFC 2019 대회에서 Artifact 부문에서 Recycle Bin 관련 문제가 출제 되었습니다.

난이도는 높지 않은 수준의 문제 였지만 Recycle Bin 관련 문제인 만큼 같이 확인 하면서 실제로 Recycle Bin을 이용한 사고가 어떻게 일어날 수 있는 지를 같이 문제를 통해서 확인 해 보겠습니다.

문제 : 공격자가 $Recycle.Bin 폴더를 공격 대상 으로 발판을 삼았다. Recycle.Bin 폴더에 생성된 멀웨어의 모든 정보(이름, 생성시간, 수정된 시간, 크기 등)을 찾아라.라는 문제였습니다.

문제 파일로 $MFT 파일을 주는데 그냥 보기엔 거의 불가능하기 때문에 AnalyzeMFT Tool을 이용해서 .csv 파일로 추출 해보겠습니다.

use analyzeMFT.exe tool

MFT.csv 파일을 열어서 $Recycle.bin를 필터링에 넣어서 추출 하면 아래와 같이 확인 할 수 있습니다.

MFT.csv data

위의 이론적인 휴지통 내용을 잘 읽어 보신 분이라면 /$Recycle.Bin/{USER SID}/ 하위에 데이터가 들어가게 됩니다. 하지만 141290 오프셋의 데이터를 보면 /$Recycle.Bin/7.exe 가 보입니다. 어떤 SID 하위에 있는 것이 아닌 SID와 동일한 경로에 있습니다.

이런 식으로 악성코드를 $Recycle.Bin에 은닉을 하기도 합니다.

그리고 실제로 디스크를 분석할때 Recycle.Bin 파일을 우선적으로 분석을 하기도 합니다.

그정도로 많은 데이터가 담겨 있기 때문입니다.


추후 개선 해야 할 점.

해당 글은 Windows XP 의 INFO2 구조나 데이터 표현 방식, Windows 10의 $I, $R에 대한 구조와 표현 방식이 설명 되어 있습니다. 휴지통에서 이러한 데이터가 있구나 라는 정도를 파악 하기 까지는 좋지만 궁극적으로 디스크에서 INFO2 FILE 이나 $I FILE을 바탕으로 삭제된 파일을 카빙하는 방법도 공부 후 설명할 필요가 있을 것으로 생각이 됩니다.

추후에 디스크에서 메타데이터를 분석하고 휴지통 파일 복구에 대해서 공부하게 되면 해당 글을 수정하여 아래에 첨부할 예정 입니다.


레퍼런스

http://forensic-proof.com/archives/288

https://www.raymond.cc/blog/what-is-info2-file-hidden-in-recycled-or-recycler-folder/