5. forensicinsight.org Page 5
타임라인 분석 개요
타임라인 분석을 왜 하는가?
• 특정 이벤트 발생 시점 전, 후로 시스템 상에서 어떤 일이 발생했는지 쉽게 파악 가능
• 정밀 분석 대상을 빠르게 선별 가능
타임라인 분석의 필요 요소
• 상관관계
• 맥락, 전후 사정
• 신뢰성
• 근접한 시간 분석
• 시간에 기반한 정확한 정렬
활용 방안
6. forensicinsight.org Page 6
타임라인 분석 개요
시점 KNOWN
• 타임라인 추출 후 해당 시점을 기준으로 분석
시점 UNKNOWN
• 사건 성격이나 분석 대상에 따른 분석 지표를 조사하여 시점 파악
• 정보 유출 사고
사용자 이상 행위, 외장저장매체 연결 시각, 외부 서비스 접속 시간 등
• 침해사고
침해 지표 생성 시점, 프로그램 실행 시점 등
활용 방안
7. forensicinsight.org Page 7
타임라인 분석 개요
파일시스템 메타데이터 (FAT=3, NTFS=8)
프리패치 파일 생성 시간, 내부 최종 실행 시간
레지스트리 키의 마지막 기록 시간
이벤트 로그의 이벤트 생성/작성 시간
바로가기 파일의 생성/수정/접근 시간과 바로가기 대상의 생성/수정/접근 시간
IIS, FTP, MS-SQL Error, AV 로그 등의 시간 정보
웹 브라우저 사용 흔적의 방문/수정/접근/만료/다운로드 시간
PE 파일의 컴파일 시간
JPEG EXIF의 사진 촬영 시간
… …
타임라인 아티팩트
8. forensicinsight.org Page 8
타임라인 분석 개요
파일시스템 타임라인 분석 도구
• EnCase, FTK, X-Ways Forensics, X-Ways WinHex, Autopsy 등
메모리 타임라인 분석 도구
• Redline – http://www.mandiant.com/resources/download/redline
• Volatility Plugin “timeliner” –
https://code.google.com/p/volatility/wiki/CommandReference23#timeliner
통합 타임라인 분석 도구
• log2timeline – http://log2timeline.net/
• Plaso – http://plaso.kiddaland.net/
분석 도구
10. forensicinsight.org Page 10
log2timeline
2009-07-31 : 첫 베타 버전 v0.12b
2009-11-25 : 타임 존 기능 추가 등의 요구사항을 반영한 v4.0
2010-06-30 : 구조 변경과 추가 기능이 늘어난 v5.0
2010-08-25 : SANS Gold Paper 선정, Mastering the Super Timeline With log2timeline
2011-05-04 : Forensic4Cast Award의 “best computer forensic software” 수상
2012-09-19 : utmp, selinux 모듈이 추가된 v.0.65
개발 과정
11. forensicinsight.org Page 11
log2timeline
Apache2 Access logs
Apache2 Error logs
Google Chrome history
Encase dirlisting
Windows Event Log files (EVT)
Windows Event Log files (EVTX)
EXIF
Firefox bookmarks
Firefox 2 history
Firefox 3 history
FTK Imager Dirlisting CSV file
Generic Linux log file
Internet Explorer history files
Windows IIS W3C log files
ISA server text export.
Mactime body files
McAfee AntiVirus Log files
입력 모듈 MS-SQL Error log
Opera Global and Direct browser history
OpenXML metadata
PCAP files
PDF. Parse the basic PDF metadata
Windows Prefetch directory
Windows Recycle Bin (INFO2 or I$)
Windows Restore Points
Safari Browser history files
Windows XP SetupAPI.log file
Adobe Local Shared Object files (SOL/LSO),
Squid Access Logs (httpd_emulate off)
TLN (timeline) body files
UserAssist key of the Windows registry
Volatility. The output from psscan/psscan2
Windows Shortcut files (LNK)
Windows WMIProv log file
Windows XP Firewall Log files (W3C format)
12. forensicinsight.org Page 12
log2timeline
Apache2 Access logs (TEXT)
• [Remote Host IP] [Remote Logname] [User ID] [Date] [Client Request] [Status Code] [Size]
MS-SQL Error Log (TEXT)
• [Date] [Source] [Message]
NTFS MFT (BINARY)
• 유용한 정보 추출 (8개의 시간 정보, 파일 이름, 속성, 데이터 등)
Internet Explorer History Files (BINARY)
• 유용한 정보 추출 (접속 URL, 접속 시간, 방문 횟수, 웹 페이지 제목, 로컬 파일 열람 정보 등)
EXIF (BINARY)
• 유용한 정보 추출 (촬영 시간 포함) 뭘 뽑아낼 것인가?
로그 형식 통합
15. forensicinsight.org Page 15
log2timeline
BeeDocs. A visualization tool designed for the Mac OS X.
CEF. Common Event Format as described by ArcSight
CFTL. A XML file that can be read by CyberForensics TimeLab
CSV. Dump the timeline in a comma separated value file (CSV).
Mactime. The format supported for use by TSK's mactime
SIMILE. An XML file that can be read by a SIMILE timeline widget
SQLite. Dump the timeline into a SQLite database.
TLN. Tab Delimited File
TLN. Timeline format that is used by some of H. Carvey tools, ASCII output
TLNX. Timeline format that is used by some of H. Carvey tools, XML document
출력 모듈
22. forensicinsight.org Page 22
Plaso
펄로 작성
단일 쓰레드 사용
초 단위의 시간 정밀도 사용
텍스트 형식의 출력
새로운 기능 추가를 위해 많은 노력 필요
필터나 사후 처리 기능 빈약
한글 처리의 한계
시간 형식의 차이 (년-월-일 <-> 월/일/년)
log2timeline 한계
26. forensicinsight.org Page 26
Plaso
Preprocessing
• 모든 기능 중 가장 먼저 수행되며 마운트 포인트나 이미지 대상
• 파싱에 사용할 수 있는 정보를 사전에 미리 획득
• 타임존, 사용자 경로, 호스트명, 브라우저, 애플리케이션 등
Collection
• 파일, 마운트 포인트, 이미지를 대상으로 Worker에서 처리할 아티팩트를 식별 큐
Worker
• 큐에 저장된 각 작업을 처리
Storage
• 처리된 데이터를 구조적으로저장
역할
27. forensicinsight.org Page 27
Plaso
log2timeline
• 파일, 마운트 포인트, 이미지를 대상으로 아티팩트를 처리하여 스토리지로 저장
pinfo
• 저장된 스토리지 정보를 출력
pprof (plaso profiler)
• 파일에 대한 프로파일링 정보 출력 파서를 최적화하거나 개발 시 주로 사용
preg
• 레지스트리 파일, 이미지에서 레지스트리를 파싱하기 위한 도구
pshell
• 출력, 디버깅, 테스트를 위해 Plaso 모든 라이브러리에 접근 가능한 iPython 콘솔
psort
• 스토리지 파일에 대한 필터, 정렬을 담당하는 도구
plasm (Plaso Langar Að Safna Minna)
• 스토리지 파일 내 이벤트를 그룹화하거나 태깅하기 위한 도구
지원 도구
28. forensicinsight.org Page 28
Plaso
log2timeline
• [STORAGE_FILE] : 파싱 결과를 출력한 스토리지 파일 지정
• [SOURCE] : 파일, 디렉터리, 마운트 포인트, 이미지 지정
• [FILTER] : 사전 필터 작업이 필요한 경우 필터링 규칙 추가 (보통은 사후 필터링)
지원 도구
usage: log2timeline.exe [-z TIMEZONE] [-t TEXT] [--parsers PARSER_LIST] [-h]
[--logfile FILENAME] [-p] [--buffer_size BUFFER_SIZE]
[--workers WORKERS] [-i] [--vss_stores VSS_STORES]
[--single_thread] [-f FILE_FILTER] [-o IMAGE_OFFSET]
[--sector_size BYTES_PER_SECTOR]
[--ob IMAGE_OFFSET_BYTES]
[--partition PARTITION_NUMBER] [-v] [--info]
[--show_memory_usage] [--disable_worker_monitor]
[--use_old_preprocess] [--output OUTPUT_MODULE] [-d]
[STORAGE_FILE] [SOURCE] [FILTER]
29. forensicinsight.org Page 29
Plaso
log2timeline
• [-z TIMEZONE] : 타임존 지정, “-z list”로 확인
• [-p] : preprocess 작업 여부 (이미지는 기본으로 수행, 마운트 포인트는 사용자 입력 요구)
• [-i] : 이미지 지정
• [-o] : 이미지 파일 내 볼륨의 위치 지정 (섹터 번호)
지원 도구
usage: log2timeline.exe [-z TIMEZONE] [-t TEXT] [--parsers PARSER_LIST] [-h]
[--logfile FILENAME] [-p] [--buffer_size BUFFER_SIZE]
[--workers WORKERS] [-i] [--vss_stores VSS_STORES]
[--single_thread] [-f FILE_FILTER] [-o IMAGE_OFFSET]
[--sector_size BYTES_PER_SECTOR]
[--ob IMAGE_OFFSET_BYTES]
[--partition PARTITION_NUMBER] [-v] [--info]
[--show_memory_usage] [--disable_worker_monitor]
[--use_old_preprocess] [--output OUTPUT_MODULE] [-d]
[STORAGE_FILE] [SOURCE] [FILTER]
30. forensicinsight.org Page 30
Plaso
이미지 파일 대상
마운트 위치 대상
파일 또는 디렉터리 대상
log2timeline 활용, http://plaso.kiddaland.net/usage/log2timeline
$> log2timeline.exe –z Asia/Seoul /path/to/output.dump /path/to/image.dd(E01)
$> log2timeline.exe –z Asia/Seoul -p /path/to/output.dump /path/to/mount_point
$> log2timeline.exe –z Asia/Seoul /path/to/output.dump /path/to/file_or_directory
31. forensicinsight.org Page 31
Plaso
선별 분석
log2timeline 활용, http://plaso.kiddaland.net/usage/log2timeline
$> log2timeline.exe –z Asia/Seoul -f browser_filter.txt history.dump /mnt/browser.E01
/(Users|Documents And Settings)/.+/AppData/Local/Google/Chrome/.+/History
/(Users|Documents And Settings)/.+/Local Settings/Application Data/Google/Chrome/.+/History
/Users/.+/AppData/Local/Microsoft/Windows/History/History.IE5/index.dat
/Users/.+/AppData/Local/Microsoft/Windows/History/History.IE5/MSHist.+/index.dat
/Users/.+/AppData/Local/Microsoft/Windows/History/Low/History.IE5/index.dat
/Users/.+/AppData/Local/Microsoft/Windows/History/Low/History.IE5/MSHist.+/index.dat
/Users/.+/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/index.dat
/Users/.+/AppData/Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/index.dat
/Users/.+/AppData/Roaming/Microsoft/Windows/Cookies/index.dat
/Users/.+/AppData/Roaming/Microsoft/Windows/Cookies/Low/index.dat
/Documents And Settings/.+/Local Settings/History/History.IE5/index.dat
/Documents And Settings/.+/Local Settings/Temporary Internet Files/Content.IE5/index.dat
/Documents And Settings/.+/Cookies/index.dat
/(Users|Documents And Settings)/.+/AppData/Roaming/Mozilla/Firefox/Profiles/.+/places.sqlite
/(Users|Documents And Settings)/.+/Local Settings/Application Data/Mozilla/Firefox/Profiles/.
+/places.sqlite
33. forensicinsight.org Page 33
Plaso
스토리지 파일 정렬
• [-o FORMAT] : 출력 형식 지정
L2tcsv, L2ttln, Dynamic, Rawpy, Raw, Sql4n6, Pstorage, Tln
• [-w OUTPUTFILE] : 정렬 후 저장할 파일 지정
• [--slice DATE] : 지정한 날짜만 전, 후 이벤트만 표시
• [STORAGE_FILE] : 정렬할 스토리지 파일
• [FILTER] : 정렬 시 필터링
정렬 후 SQLite 출력 예
psort 활용, http://plaso.kiddaland.net/usage/psort
$> psort.exe [-o FORMAT] [-w OUTPUTFILE] [--slice DATE] [STORAGE_FILE] [FILTER]
$> psort.exe -o Sql4n6 -w TESTCASE.db TESTCASE.dump
34. forensicinsight.org Page 34
Plaso
[--slice DATE]
• --slice "2012-04-05 17:01:06" sample_output.dump
• --slicer sample_output.dump "date > '2012-01-01' AND parser is 'winjob'“
• --slicer --slice_size 10 sample_output.dump "date > '2012-01-01' AND parser is 'winjob'“
[FILTER], http://plaso.kiddaland.net/usage/filters
• "date > '2013-01-23 15:23:51' and date < '2013-01-23 21:42:13'“
• "date > '2012-01-01' AND tag contains 'Application Execution'“
• "parser is 'SyslogParser' and message contains 'root'"
• "source_short is 'LOG' AND (timestamp_desc CONTAINS 'written' OR timestamp_desc
CONTAINS 'visited')“
• "parser contains 'firefox' AND pathspec.vss_store_number > 0"
psort 활용, http://plaso.kiddaland.net/usage/psort
35. forensicinsight.org Page 35
Plaso
태그 파일 생성
• TAG MESSAGE : 자유롭게 정의 가능
• CONDITION : 이벤트 필터 규칙 사용
• 응용프로그램 실행 관련 태그
스토리지 파일에 태깅하기
plasm 활용, http://plaso.kiddaland.net/usage/plasm
TAG MESSAGE
CONDITION
CONDITION
Application Execution
data_type is 'windows:prefetch:prefetch'
data_type is 'windows:lnk:link' and filename contains 'Recent' and (local_path
contains '.exe' or network_path contains '.exe' or relative_path contains '.exe')
$> plasm.exe tag --tagfile="/path/to/tag/file/tagfile.txt" TESTCASE.dump
36. forensicinsight.org Page 36
Plaso
태깅 결과 확인
태깅 이벤트 필터하기
plasm 활용, http://plaso.kiddaland.net/usage/plasm
$> pinfo.py TESTCASE.dump
...
Counter information:
Counter: Total = 210
Counter: Application Execution = 196
Counter: Document Opened = 11
Counter: Startup Application = 3
Counter: AutoRun = 3
...
$> psort.exe TESTCASE.dump
"date > '2013-01-01' AND tag contains 'Application Execution '"
37. forensicinsight.org Page 37
Plaso
태그 파일 예제 (계속)
plasm 활용, http://plaso.kiddaland.net/usage/plasm
Application Execution
data_type is 'windows:prefetch'
data_type is 'windows:lnk:link' and filename contains 'Recent' and (local_path contains '.exe' or
network_path contains '.exe' or relative_path contains '.exe')
data_type is 'windows:registry:key_value' AND (plugin contains 'userassist' or plugin contains
'mru') AND regvalue.__all__ contains '.exe'
data_type is 'windows:evtx:record' and strings contains 'user mode service' and strings contains
'demand start'
data_type is 'fs:stat' and filename contains 'Windows/Tasks/At'
data_type is 'windows:tasks:job'
data_type is 'windows:evt:record' and source_name is 'Security' and event_identifier is 592
data_type is 'windows:evtx:record' and source_name is 'Microsoft-Windows-Security-Auditing'
and event_identifier is 4688
data_type is 'windows:registry:appcompatcache'
38. forensicinsight.org Page 38
Plaso
태그 파일 예제 (계속)
plasm 활용, http://plaso.kiddaland.net/usage/plasm
Document Opened
data_type is 'windows:registry:key_value' AND plugin contains 'mru' AND regvalue.__all__ not
contains '.exe' AND timestamp > 0
Logon
data_type is 'windows:evt:record' and source_name is 'Security' and event_identifier is 540
data_type is 'windows:evtx:record' and source_name is 'Microsoft-Windows-Security-Auditing'
and event_identifier is 4624
data_type is 'windows:evtx:record' and source_name is 'Microsoft-Windows-TerminalServices-
LocalSessionManager' and event_identifer is 21
Logoff
data_type is 'windows:evt:record' and source_name is 'Security' and event_identifier is 538
data_type is 'windows:evtx:record' and source_name is 'Microsoft-Windows-Security-Auditing'
and event_identifier is 4634
data_type is 'windows:evtx:record' and source_name is 'Microsoft-Windows-TerminalServices-
LocalSessionManager' and event_identifer is 21
39. forensicinsight.org Page 39
Plaso
태그 파일 예제
plasm 활용, http://plaso.kiddaland.net/usage/plasm
Task Scheduled
data_type is 'windows:evt:record' and source_name is 'Security' and event_identifier is 602
data_type is 'windows:evtx:record' and source_name is 'Microsoft-Windows-Security-Auditing'
and event_identifier is 4698
AutoRun
data_type is 'windows:registry:key_value' and plugin contains 'Run'
File Downloaded
data_type is 'chrome:history:file_downloaded'
timestamp_desc is 'File Downloaded'
Document Printed
(data_type is 'metadata:hachoir' OR data_type is 'olecf:summary_info') AND timestamp_desc
contains 'Printed'
Startup Application
data_type is 'windows:registry:key_value' AND (plugin contains 'run' or plugin contains 'lfu') AND
(regvalue.__all__ contains '.exe' OR regvalue.__all__ contains '.dll')
40. forensicinsight.org Page 40
Plaso
사용자 정의 파서 및 플러그인 작성 지원
파서 (parser)
• 파일 단위로 동작하는 모듈
플러그인 (plugin)
• 파일 확장 형식 (Chrome History SQLite Database)
• 파일의 부분 데이터 (Application Compatibility cache Windows Registry data)
파서 & 플러그인 작성
42. forensicinsight.org Page 42
Plaso
SQLite 활용
SELECT
datetime, MACB, sourcetype, type, description, filename
FROM log2timeline
WHERE description like '%Desktop%‘
WHERE datetime BETWEEN '2014-09-01' AND '2014-09-10';