Security & Forensic

반응형

삭제파일 목록 조회

 

휴지통은 사용자가 삭제한 파일이나 폴더가 완전 삭제하기 전에 이동되는 중간 임시 영역이다. 이러한 휴지통은 파일시스템으로 보면 하나의 디렉터리에 불과하다. 이러한 휴지통 디렉터리의 접근은 다른 어플리케이션은 불가능하고 단지 휴지통 어플리케이션만 가능하며 휴지통 내 파일 역시 휴지통 어플리케이션이 해석 가능한 포맷의 파일명을 가진 것들만 표시가 가능하다.

 

사용자가 삭제한 즉 휴지통으로 이동된 파일 또는 폴더는 실제 파일은 그대로 남겨둔 채 파일 시스템에 기록된 파일 또는 폴더의 메타 정보만을 변경한다. 그러므로 포렌식 관점에서 덮어쓰여 지지만 않았으면 복원이 얼마던지 가능하고 원본 파일 복원을 위해 다양한 정보를 저장하는 파일을 휴지통 정보 파일이라고 부른다. 이러한 휴지통 정보파일은 Vista 이전 버전에서는 단일 파일로 관리하였고 Vista 이후 부터는 삭제된 개체별로 하나씩 생성하여 관리하고 있다.

 

파일 삭제 시 메타 정보 변화

삭제 시 : 원본파일 MFT Entry 삭제, 휴지통 폴더의 새로운 MFT Entry 생성
복원 시 : 휴지통 폴더의 MFT Entry 삭제, 원본파일 MFT Entry 생성

휴지통 파일

휴지통은, 내부에 삭제된 파일을 저장할 때 아래와 같은 규칙을 통해 파일의 이름을 생성한다. 

Windows XP 휴지통 정보 파일
삭제된 파일명 : D[drive letter][index number].[extension of original]
정보 파일명 : INFO2


Windows 7+ 휴지통 정보 파일
삭제된 파일명 : $R[random].[extension of original]
정보 파일명 : $I[same with $R].[extension of original]


윈도우 vista 이전에서는 파일이 삭제될 경우 INFO2 파일과 D로 시작하고 원본 파일의 확장자로 끝나는 파일이 생성된다. 


"D" + 드라이브경로 + 증가되는 숫자 + "." + 원본 파일의 확장자 예) Dc1.hwp


D로 시작하는 파일은 삭제된 파일의 실제 데이터이며 INFO2 파일은 삭제된 파일을 표현하는데 사용되는 정보가 저장되어있다.  Vista 방식에서 사용되는 $I 와 다르게 INFO2 단일 파일에 삭제된 파일들의 메타정보가 저장되며 파일이 추가적으로 삭제될 경우 계속 업데이트 되는 방식이다. 

Vista+ 에서는 위와같은 방식을 사용하지 않고 삭제된 파일별로 $I, $R 파일이 생성되는데 $R의 경우 원본 파일의 내용이 저장되어있으며 $I는 삭제된 파일의 정보를 저장하고있다.
$R,I의 명명 규칙은 $R 혹은 $I 문자열 뒤 랜덤 영문(대문자),숫자 값과 원본 파일의 확장자로 명명되어있다.

$R의 경우 원본파일 그 자체이기 때문에 OS별로 차이점이 없지만 $I는 OS별로 조금씩 다르므로 분석 시 유의해야 한다.

 

파일이 휴지통으로 이동된 후 완전 삭제되더라도 디스크 내부에서 $I 파일의 조각을 발견하게 된다면 삭제된 파일이 

존재하였다는 중요한 단서가 될 수 있다. 

획득 정보

INFO2
원본 파일 경로 및 이름 (File Record)
휴지통 내의 파일 식별자 (Record Number)
원본 파일이 위치하고 있었던 드라이브의 번호 (Drive Designator)
파일이 삭제된 날짜 및 시간 (File Deleted Date/Time)
원본 파일 크기 (Deleted File Physical Size)

$I
원본 파일 크기 (File Size)
파일이 삭제된 날짜 및 시간 (File Delete Date/Time)
원본 파일 경로 및 이름 (File Record)


휴지통은 파일명 규칙에 맞지 않는 파일이 휴지통에 있을 경우, 일반적인 휴지통 열람으로는 내용을 보여주지 않는다.

이와 같은 특성 때문에 악성코드 혹은 사건 용의자가 정보를 은닉하는데 애용되기 때문에 반드시 파일 시스템을 해석하여 내부의 정보를 살펴볼 필요가 있다는 점을 기억하자. 

 

휴지통 폴더 내부에는 사용자 계정 별로 계정 SID 이름으로 된 폴더가 존재하고 서로 공유되지 않고 독립적으로 사용되며 다른 사용자의 접근은 일반 사용자 권한으로는 불가능하다. 그러므로 조사를 원하는 사용자의 휴지통 경로를 구분하여 분석을 진행할 필요가 있다.

 

각 파티션마다 휴지통 폴더가 생기는 이유?

드라이브(파티션)마다 각각 휴지통 폴더가 존재한다. 서로 다른 파티션은 논리적으로 독립된 공간이다. 따라서 같은 파티션 내에서 파일을 이동 시키면 해당 파일 데이터는 그대로 둔 채 경로만 변경한다. 하지만 파티션 간에 데이터를 이동할 경우에는 원본 파티션에서 데이터를 읽어 목적지 파티션에서 해당 데이터를 써야만 한다. 여기서 각 파티션은 하나의 볼륨 내에 존재하는 것을 의미한다.

 

C: 파티션에 운영체제를 설치한 후 D: 파티션에서 파일을 지웠다면 이 파일은 C:의 휴지통 폴더로 이동하는 것이 아니라 D:의 휴지통 폴더로 이동한다. 즉 D: 파티션에서 파일을 지울 때마다 C:로 이동시켜야 하는 번거로움이 없어진다. 그렇지 않다면 큰 파일이나 많은 양의 파일을 한번에 지울 경우 파일을 지우는 시간이 무척 많이 걸릴 것이며 시스템 성능 저하를 초래할 것이다.

 

하지만  바탕화면의 휴지통을 클릭했을 때 C: 파티션뿐만아니라 D: 파티션에서 삭제된 파일도 보이는게 그 이유는 볼륨 내에 존재하는 모든 파티션의 휴지통 폴더에서 같은 휴지통 이름을 가지는 폴더를 전부 링크 시켜 놓아 함께 보여주기 때문이다.

 

Rifiuti
Rifiuti[2] is a for analyzing Windows Recycle Bin INFO2 file in Window XP- and $i Files in Windows Vista+. 

rifiuti.exe : INFO2 파일 분석
rifiuti-vista[64].exe : $i 파일 분석

 

먼저 휴지통 폴더 조회

C:\>dir /ad /s c:\ | findstr /i /c:"recy" 
2020-03-09  오전 09:05              $Recycle.Bin 
 c:\$Recycle.Bin 디렉터리 
 c:\$Recycle.Bin\S-1-5-18 디렉터리 
 c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001 디렉터리 

C:\>dir c:\$Recycle.Bin /s
c:\$Recycle.Bin 디렉터리
2020-03-09  오후 08:30                 2 WhufT^].jpg

 c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001 디렉터리
2019-12-14  오후 01:09               104 $IZ522XF.vscode
2017-11-14  오전 08:41                98 $I4HT8VQ.lnk 
2019-12-20  오후 01:31               102 $IJ8H8A0.lnk 
2019-12-13  오전 09:20               122 $IQRGYB6.lnk 

휴지통 내 lnk 링크 파일은 형식이 lnk 이지만 일반 링크파일 분석 방법으로 분석이 되지 않는다.

 

C:\rifiuti>rifiuti-vista64.exe c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001
Recycle bin path: 'c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001'
Version: 2
Index   Deleted Time    Size    Path
$IZ522XF.vscode 2019-12-14 04:09:57     12      C:\vscodeworkspace\JavaScript\.vscode
......

 

C:\rifiuti>rifiuti-vista.exe f:\$RECYCLE.BIN\S-1-5-21-2555433415-3599755044-3103386514-1001

Recycle bin path: 'c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001'

Version: 2

OS Guess: Windows 10 or above

Time zone: Coordinated Universal Time (UTC) [+0000]

 

Index   Deleted Time    Size    Path

$I27ZKYW.torrent        2019-07-09 12:42:55     105071  C:\Temp\한나몬타나_시즌1.torrent

$IAZX7PY.torrent        2019-07-11 10:32:03     473356  C:\Temp\[limetorrents.info]Hannah.Montana.Season.4.torrent

$I0I5U18.avi    2019-07-11 10:32:12     218361856       C:\Temp\SEZON 4\Hannah Montana Forever.S04E01.640x480.avi

$I4IEUQQ.avi    2019-07-11 10:32:12     222615552       C:\Temp\SEZON 4\Hannah Montana Forever.S04E08.640x480.avi

$I4OEP2Z.avi    2019-07-11 10:32:12     221011968       C:\Temp\SEZON 4\Hannah Montana Forever.S04E09.640x480.avi

......


NTFS Journal Files
$MFT 추출
C:\>RawCopy64.exe /FileNamePath:C:0 /OutputPath:C:\Results

$LogFile 추출
C:\>RawCopy64.exe /FileNamePath:C:2 /OutputPath:C:\Results

$UsnJRNL 추출
C:\>ExtractUsnJrnl64.exe /DevicePath:C: /OutputPath:C:\Results

$UsnJRNL CSV 저장, 반드시 Comma로 필드 분리
C:\>UsnJrnl2Csv64.exe /UsnJrnlFile:C:\Results\$UsnJrnl_$J.bin /OutputFormat:csv /Separator:,

/OutputPath:C:\Dropbox\DFIR\Window\FileSystem\Results

C:\>LogParser.exe -h -i:CSV c:\Results\UsnJrnl_2019-07-18_23-37-34.csv -headerrow:on
Fields:
  Filename (S)           RowNumber (I)               癤풭ffset (S)
  FileName (S)           USN (I)                     Timestamp (T)
  Reason (S)             MFTReference (I)            MFTReferenceSeqNo (I)
  MFTParentReference (I) MFTParentReferenceSeqNo (I) FileAttributes (S)
  MajorVersion (I)       MinorVersion (I)            SourceInfo (S)
  SecurityId (I)

C:\>LogParser.exe -stats:on -i:csv "select Timestamp, FileName,  FileAttributes, reason

from UsnJrnl_2019-07-18_23-37-34.csv where reason like '%delete%'"
Timestamp           Filename                                                                  FileAttributes           Reason
------------------- ------------------------------------------------------------------------- ------------------------ ------------
2019-07-17 01:51:25 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:51:25 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:51:55 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv hidden+archive+temporary CLOSE+FILE_DELETE
2019-07-17 01:51:55 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv hidden+archive+temporary CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv hidden+archive+temporary CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:53:26 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:53:26 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
......

Windows Search DB

Windows Search DB를 통해서도 삭제 파일 정보 확인 가능

WinSearchDBAnalyzer Tool

- 삭제된 파일에 대한 정보 및 파일 내용도 확인 가능

반응형