[Windows Artifacts] $LogFile
(1) $LogFile이란?
-
NTFS 트랜잭션 로그 파일
-
작업 중 갑작스런 파일 손실 시, 복구를 위해서 사용
-
모든 트랜잭션 작업 레코드 단위로 기록
-
트랜잭션이란?
-
job A = "시작-작업, 1-작업, 2-작업, 3-완료"
-
'작업 2' 실패 시 '시작' 상태였던 당시로 모든 데이터 회귀
-
모든 '작업 1, 2, 3' 완료 시, 데이터 변경 수행
-
(2) $LogFile 상세 내용
2-1. Kind of
-
NTFS Filesystem Log
2-2. Information
-
Record Unit Event Such as Create Dir/File, Delete Dir/File, Change Dir/File, Etc.
2-3. Path
-
MFT 2nd Entry
2-4. Characteristic
-
Need to Translate that Record Unit Event
-
Enable tracking of deleted files.
2-5. Tools
-
NTFS Log Tracker
-
JP
-
LogFileParser
2-5-1. NTFS Log Tracker : https://sites.google.com/site/forensicnote/ntfs-log-tracker
2-5-2. JP : https://tzworks.net/prototype_page.php?proto_id=5
2-5-3. LogFileParser : https://code.google.com/archive/p/mft2csv/wikis/LogFileParser.wiki
(3) 분석 실습
3-1. FTK Imager > Physical Drive > NTFS 파일 시스템 root 디렉토리에 $LogFile 존재
3-2. $LogFile - Export Files
여기서 중요한 것은, $LogFile 아티팩트 수집(추출)이나 출력 결과물 저장은 수집 대상물의 데이터 무결성을 위해 분석 환경에서 진행해야 하며, 가상 환경 공유 폴더나 이동식 매체로 지정해야 한다.
즉, 수집 도구에 의한 수집물은 '이동식 매체'로 저장하고 분석 결과도 수집 대상물에 저장되지 않도록 분석은 수집 대상물 PC가 아닌 분석용 로컬 PC(호스트)에서 진행해야 한다.
수집된 파일이나, 디렉토리는 수집 대상물의 디스크에 바로 저장되어서는 안 되며, 바로 공유 폴더 등의 이동식 매체에 저장되어야 데이터 무결성이 깨지지 않는다.
또한, 아티팩트를 수집할 시에 MAC 타임 보존은 필수적으로 숙지하고 진행한다.
위 [그림 4]는 해당 아티팩트 분석을 위해 분석 환경 공유 폴더로 해당 아티팩트를 지정해 준 화면이다.
3-3. NTFS Log Tracker 활용, $LogFile 분석
분석 진행을 위해 생성될 DB 파일의 이름과 저장 경로를 선택한 다음, 파싱을 진행한다.
3-4. 분석(파싱) 완료
3-5. 레코드 & 컬럼 추가 설명
-
102061788477 = 각 작업 레코드는 고유의 LSN($LogFile Sequence Number)을 가짐
-
2020-04-07 02:09:21 = UTC +9를 기준으로 이벤트 시간, 생성 시간, 수정 시간, MFT 수정 시간, 접근 시간 을 뜻함
-
File Creation = 해당 파일에 대한 이벤트를 뜻함
-
$MFT = 파일의 이름을 뜻함
-
Initialize File Record Segment = Redo(작업한 데이터)를 뜻함
-
0x1260 = Target VCN으로 Redo 데이터가 적용되는 $MFT 상의 Virtual Cluster Number를 뜻함
-
2 = 클러스터 인덱스이며, MFT 엔트리가 있는 하나의 클러스터 내에서 몇 번째 엔트리에 해당하는지에 대한 값을 뜻함
(4) 추가 내용 정리
-
$LogFile은 NTFS 트랜잭션 로그파일이라 불리며, 시스템 오류나 갑작스런 전원 차단 발생 시에 작업 중이던 파일 복구를 위해 사용 됨
-
모든 트랜잭션 작업을 레코드 단위로 기록
-
MFT Entry 번호, 변경된 속성, 수정된 위치, 값 등 변경 전과 후의 모든 정보를 상세하게 기록
-
$LogFile은 본래 파일 시스템 복구 기능을 위해 존재하는 파일이지만, 사고 분석 시에 삭제된 악성코드 혹은 포렌식 시에 삭제된 문서들을 복원하는 데 유용한 아티팩트
-
로깅된 파일이 실제 데이터 영역 n번째 클러스터에서 write 되었는지 파악할 수 있기에 복원이 가능한 원리
-
삭제된 파일은 $MFT 엔트리에서도 Overwrite 될 수 있어 $MFT에는 없지만 $LogFile에 남아 있으면 삭제되었다고 판단할 수 있으며, 복원 가능성도 있음
-
$LogFile의 각 작업 레코드는 순차적으로 증가하는 식별 값(LSN)을 가지며, 이것을 해석하기 위해서는 최종적으로 $MFT와 교차하여 파일 단위 이벤트(생성, 삭제, 수정, 이름 변경) 해석이 필요
(5) 내 컴퓨터 $LogFile 확인
내 Desktop에 얼마나 큰 $LogFile을 남기는지 확인할 수 있는 명령어는 다음과 같다.
-
cmd(명령 프롬프트)를 관리자 권한으로 실행하고, chkdsk.exe /L을 입력하게 되면 [그림 9]와 같은 결과 창을 확인 가능
# Reference
'Digital Forensics > Artifacts' 카테고리의 다른 글
[Windows Artifacts] Event Log (0) | 2020.05.25 |
---|---|
[Windows Artifacts] Prefetch (0) | 2020.05.24 |
[Windows Artifacts] Registry (0) | 2020.05.24 |
[Windows Artifacts] $UsnJrnl (0) | 2020.05.24 |
[Windows Artifacts] $MFT (0) | 2020.05.24 |