파일을 어떻게 분석할 것인가 - 타임스탬프, 로그, 데이터 복구
이전 글에서는 파일 시스템이 어떤 구조로 작동하고 있는지, 그리고 현재 윈도우의 기본 파일 시스템인 NTFS 파일 시스템의 파일 생성, 삭제 매커니즘을 배웠다. 파일 시스템 메타 데이터 속에는 포렌식 분석에 유의미한 다양한 정보들이 담겨있다. 하지만, 굉장히 다양한(거의 파일에 대한 모든)정보들이 있으므로 이 복잡한 데이터 속에서 수사에 필요한 정보가 무엇인지 선별하는 것이 중요하다.
이번 글에서는 실제 파일을 분석할 때 어떤 정보를 눈여겨보아야 하는지, 파일의 숨겨져 있는 부분을 어떻게 다룰 수 있는지에 대한 더 자세한 개념을 다루도록 하자.
타임스탬프는 파일이 언제 생성되었고, 마지막으로 수정된 시간, 그리고 언제 접근했는지를 알려주는 중요한 정보이다. 마치 파일의 일기장 같은 것인데, 이 정보는 디지털 포렌식에서 매우 중요한 역할을 합니다. 예를 들어, 어떤 사건이 일어났을 때 관련 파일들의 타임스탬프를 분석하면 사건의 타임라인을 재구성할 수 있다.
타임스탬프의 유형 및 표기법
Created (생성 시간): B (Birth), C (Creation).
Last Modified (마지막 수정 시간): M (Modification).
Last Accessed (마지막 접근 시간): A (Access).
MFT Entry Modified (MFT 항목 수정 시간): C (Change), E (Entry Modified).
시간 규칙 (Time Rules):
파일 시스템과 애플리케이션의 타임스탬프 변경 규칙 정리해놓은 시간 규칙(Time Rules)가 존재한다.
파일 시스템 분석 도구에는 대표적으로 Autopsy, TSK, MFTExplorer가 있다. 사용법은 실습을 통해 알아보고, 사이트를 참고해보자.
Autopsy: https://www.sleuthkit.org/autopsy/
MFTExplorer: https://ericzimmerman.github.io/
TSK(The Sleyth Kit): https://www.sleuthkit.org/sleuthkit/
파일 시스템 로그란 파일 시스템이 변경 사항을 기록하고 추적하기 위해 생성하는 로그이다. 우리의 컴퓨터는 파일이 생성되거나 수정될 때마다 이를 기록하는데, 마치 도서관에서 책의 대출 기록을 남기는 것과 비슷하다. 이 로그들은 보통 며칠 동안 보관되며, 시스템에 무슨 일이 있었는지 추적하여 사용자의 행동을 파악하는데 매우 유용하게 사용된다. 특히 악성 프로그램의 활동을 찾아내는 데 큰 도움이 된다.
NTFS 시스템의 경우 $LogFile과 $UsnJrnl이 대표적이다. 이 로그들을 분석하면 특정 기간 동안의 이벤트와 사용자 행동을 파악할 수 있다.
$LogFile (트랜잭션 로그): 커밋되지 않은 트렌잭션을 롤백하기 위해 메타 데이터 변경 사항을 기록하는 로그이다. 기본 로그 파일의 크기는 64MiB. 이 로그는 메타 데이터 변경 사항을 기록하며, 시스템 전원이 꺼지기 직전에 생성된 추적 기록도 포함한다. 주로 2~3시간동안 보관된다. 이는 시스템의 안정성과 복구성을 보장한다. 쉽게 말해서 이 트랜젝션 로그를 통해 다양한 삭제된 파일 정보를 알아내고, 그 파일을 복구시킬 수 있다.
트랜잭션 로그가 포함하는 정보 예시 : 파일/폴더 생성, 데이터 쓰기, 파일/폴더 삭제 파일/폴더 이름 바꾸기 파일/폴더 이동 MFT 기록 변경
$UsnJrnl (변경 로그): 이 로그는 파일 및 폴더의 변경 사항을 추적하며 윈도우 7부터 기본 활성화가되어 있다. 기본 로그 파일의 크기는 32MiB. 주로 악성코드 활동 추적 등에 활용될 수 있는데, 일반적으로 4~5일 동안 로그가 보관된다.
변경 로그가 포함하는 정보 예시 : USN, 변경 시간, 변경 이유, MFT 레코드 번호, 파일/폴더 이름, 속성
데이터 삭제와 디지털 포렌식
중요한 이벤트가 발생할 때 삭제된 파일은 포렌식 분석의 주요 대상이 된다.
우리가 파일을 삭제할 때, 실제로 그 데이터는 완전히 사라지지 않는다. 파일 시스템은 단지 그 공간을 '사용 가능'하다고 표시할 뿐이다. 그래서 전문가들은 이런 '삭제된' 파일들을 복구할 수 있다. 파일이 삭제될 때, 파일 시스템은 파일의 실제 데이터를 변경하는 것이 아니라 메타 데이터의 일부만 수정하기 때문에 가능하다.
데이터 복구 유형
데이터 복구는 크게 두 가지 유형으로 나눌 수 있다. 파일 시스템 메타데이터 기반 복구와 데이터 카빙이다.
파일 시스템 메타데이터 기반 복구는 파일 시스템이 가지고 있는 정보를 활용한다. 이전 시간에 다뤘던 MFT와 파일 시스템 구조에 대해 생각해보자. NTFS의 경우, 각 파일에 대한 MFT(Master File Table) 레코드의 클러스터 할당 정보가 파일 삭제 후에도 초기화되지 않아 복구에 사용된다. 반면 FAT 시스템에서는 파일이 삭제되면 FAT 영역의 클러스터 할당 정보가 초기화되어 복구가 어렵다. 또한, 복구 가능성은 해당 볼륨의 주요 역할에 따라 달라질 수 있다. 예를 들어, 운영 체제가 설치된 볼륨의 파일들은 잦은 입출력으로 인해 복구 가능성이 비교적 낮다.
데이터 카빙은 위처럼 파일 시스템의 메타데이터를 사용할 수 없을 때 사용하는 기술이다. 이 방법은 원시 데이터 조각에서 직접 파일을 재조립하는 방식인데, 파일의 시작과 끝을 나타내는 시그니처를 탐지하고, 파일 크기를 계산하며, 통계적 특성을 분석하고, 내용과 구조를 검증하는 등 다양한 알고리즘을 사용한다. 심지어 RAM 슬랙(메모리의 미사용 공간)에서도 데이터를 탐지할 수 있다.
데이터 카빙은 문서, 아카이브, 이미지, 동영상, 텍스트 등 다양한 데이터 유형에 따라 서로 다른 알고리즘을 적용하여 최적의 복구 결과를 얻을 수 있다. 즉, 파일의 메타데이터를 전혀 활용할 수 없는 손상된 상황에서도 데이터 복구가 가능한 것이다.
숨겨진 데이터 탐지는 디지털 포렌식에서 중요한 부분이다. 숨겨진 데이터는 여러 형태로 존재한다. '숨김' 속성을 가진 파일, 확장자나 서명이 변경된 파일, 슬랙 공간에 저장된 데이터, 그리고 NTFS의 대체 데이터 스트림(ADS) 등이 그 예다.
슬랙 공간이란 무엇일까? 슬랙 공간은 이전에 저장되었다가 삭제된 데이터나 의도적으로 숨겨둔 데이터를 말한다. 컴퓨터의 저장 공간을 책장이라고 생각해보자. 책장에 책을 꽂을 때, 책의 크기와 책장 칸의 크기가 정확히 맞지 않아 빈 공간이 생기는 경우가 있다. 컴퓨터의 저장 공간도 이와 비슷하게 작동한다. 이렇게 생긴 빈 공간을 '슬랙 공간'이라고 부른다. 이 공간에는 이전에 저장됐다가 삭제된 데이터의 흔적이 남아있을 수 있다. NTFS MFT 레코드 슬랙이나 NTFS 인덱스 레코드(INDX) 슬랙 등이 이에 해당한다.
슬랙 공간에 대한 더 자세한 설명과 예시는 이전 포스팅 ‘[디지털 포렌식] 03. 파일 시스템 I’을 참고하자.
https://brunch.co.kr/@jyoo212/8
NTFS라는 파일 시스템에는 '대체 데이터 스트림(ADS)'이라는 특별한 기능이 있다. 이는 하나의 파일에 여러 개의 데이터를 숨길 수 있게 해준다.. 예를 들어, 'photo.jpg'라는 이미지 파일이 있다고 가정해보자. 이 파일에는 우리가 보는 이미지 외에도 텍스트 파일이나 다른 형태의 데이터를 추가로 숨길 수 있다. 이 기능은 원래 윈도우와 맥 간의 공유되는 파일에 대한 추가 리소스를 저장하기 위한 호환성 목적으로 만들어졌지만, 때로는 악성 프로그램이 자신을 숨기는 데 사용하기도 한다.
잘 알려진 ADS로는 $EA, $EA_INFORMATION, $TXF_DATA, AFP_AfpInfo, AFP_Resource, OECustomProperty, Zone.Identifier 등이 있다.
Zone.Identifier는 NTFS ADS의 대표적인 사용 사례다. 이는 URLZONE이라고도 하며, 네트워크를 통해 다운로드된 파일에 자동으로 추가되는 보안 기능이다. Zone Transfer 정보(ZoneID, 참조 URL, 호스트 URL 등)를 포함한다
Zone.Identifier의 실제 사용 예로, Chromium 기반의 Edge 브라우저를 사용해 Google Drive에서 파일을 다운로드할 때 이 정보가 자동으로 추가된다. 이때 ZoneTransfer 정보가 포함되며, 여기에는 ZoneId와 HostUrl 등의 정보가 기록된다