ݺߣ

ݺߣShare a Scribd company logo
FORENSIC INSIGHT;
DIGITAL FORENSICS COMMUNITY IN KOREA
PLASO – 슈퍼 타임라인 분석 도구 활용 방안
proneer
proneer(at)gmail.com
forensic-proof.com
forensicinsight.org Page 2
개요
1. 타임라인 분석 개요
2. log2timeline
3. Plaso
forensicinsight.org Page 3
타임라인 분석 개요
forensicinsight.org Page 4
타임라인 분석 개요
 분석 데이터를 시간 순으로 나열하여 분석하는 방법
타임라인 분석이란?
forensicinsight.org Page 5
타임라인 분석 개요
 타임라인 분석을 왜 하는가?
• 특정 이벤트 발생 시점 전, 후로 시스템 상에서 어떤 일이 발생했는지 쉽게 파악 가능
• 정밀 분석 대상을 빠르게 선별 가능
 타임라인 분석의 필요 요소
• 상관관계
• 맥락, 전후 사정
• 신뢰성
• 근접한 시간 분석
• 시간에 기반한 정확한 정렬
활용 방안
forensicinsight.org Page 6
타임라인 분석 개요
 시점 KNOWN
• 타임라인 추출 후 해당 시점을 기준으로 분석
 시점 UNKNOWN
• 사건 성격이나 분석 대상에 따른 분석 지표를 조사하여 시점 파악
• 정보 유출 사고
 사용자 이상 행위, 외장저장매체 연결 시각, 외부 서비스 접속 시간 등
• 침해사고
 침해 지표 생성 시점, 프로그램 실행 시점 등
활용 방안
forensicinsight.org Page 7
타임라인 분석 개요
 파일시스템 메타데이터 (FAT=3, NTFS=8)
 프리패치 파일 생성 시간, 내부 최종 실행 시간
 레지스트리 키의 마지막 기록 시간
 이벤트 로그의 이벤트 생성/작성 시간
 바로가기 파일의 생성/수정/접근 시간과 바로가기 대상의 생성/수정/접근 시간
 IIS, FTP, MS-SQL Error, AV 로그 등의 시간 정보
 웹 브라우저 사용 흔적의 방문/수정/접근/만료/다운로드 시간
 PE 파일의 컴파일 시간
 JPEG EXIF의 사진 촬영 시간
 … …
타임라인 아티팩트
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/
분석 도구
forensicinsight.org Page 9
log2timeline
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
개발 과정
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)
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)
• 유용한 정보 추출 (촬영 시간 포함)  뭘 뽑아낼 것인가?
로그 형식 통합
forensicinsight.org Page 13
log2timeline
 [date_time] [timezone] [MACB] [source] [sourcetype] [type] [user] [host] [short] [desc]
[version] [filename] [inode] [notes] [format] [extra]
정형화!!
forensicinsight.org Page 14
log2timeline
 디스크 이미지
 라이브 볼륨
 아티팩트 폴더
입력 방식
$> perl log2timeline -z Asia/Seoul -r -p -w timeline.txt -I disk.dd
$> perl log2timeline -z Asia/Seoul -r -p -w timeline.txt “C:”
$> perl log2timeline -z Asia/Seoul -r -w timeline.txt “d:artifacts”
$> perl log2timeline -z Asia/Seoul -r -p -w timeline.txt -p 0 -I partition.dd
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
출력 모듈
forensicinsight.org Page 16
log2timeline
 한글 인코딩 처리 문제
 시간 형식 (월/일/년)
 일부 파싱 모듈 오류
 리눅스 환경에서 동작
log2timeline 문제점
forensicinsight.org Page 17
log2timeline
1. 타임라인 생성
2. 시간 순 정렬
3. TIMELINE_COLOR_TEMPLATE 이용
• http://computer-forensics.sans.org/blog/2011/12/07/digital-forensic-sifting-super-timeline-
analysis-and-creation
log2timeline_mod
$> python log2_sort.py -i <input file> -o <output file> -n <line number>
$> python log2_sort.py -i timeline.txt -o timeline_sort.csv -n 200000
$> perl log2timeline_mod -z Asia/Seoul -r -p -w timeline.txt “d:artifacts”
forensicinsight.org Page 18
log2timeline
forensicinsight.org Page 19
log2timeline
forensicinsight.org Page 20
log2timeline
forensicinsight.org Page 21
Plaso
forensicinsight.org Page 22
Plaso
 펄로 작성
 단일 쓰레드 사용
 초 단위의 시간 정밀도 사용
 텍스트 형식의 출력
 새로운 기능 추가를 위해 많은 노력 필요
 필터나 사후 처리 기능 빈약
 한글 처리의 한계
 시간 형식의 차이 (년-월-일 <-> 월/일/년)
log2timeline 한계
forensicinsight.org Page 23
Plaso
http://plaso.kiddaland.net/
forensicinsight.org Page 24
Plaso
 전반부는 log2timeline 이용
 실행 및 후반부 기능 강화
• 멀티 쓰레딩 지원
• 이미지 파일 파싱
• VSS 파싱
• 태그 기능
• 필터 기능
• 선별 수집 기능
• … …
특징
forensicinsight.org Page 25
Plaso
구조
forensicinsight.org Page 26
Plaso
 Preprocessing
• 모든 기능 중 가장 먼저 수행되며 마운트 포인트나 이미지 대상
• 파싱에 사용할 수 있는 정보를 사전에 미리 획득
• 타임존, 사용자 경로, 호스트명, 브라우저, 애플리케이션 등
 Collection
• 파일, 마운트 포인트, 이미지를 대상으로 Worker에서 처리할 아티팩트를 식별  큐
 Worker
• 큐에 저장된 각 작업을 처리
 Storage
• 처리된 데이터를 구조적으로저장
역할
forensicinsight.org Page 27
Plaso
 log2timeline
• 파일, 마운트 포인트, 이미지를 대상으로 아티팩트를 처리하여 스토리지로 저장
 pinfo
• 저장된 스토리지 정보를 출력
 pprof (plaso profiler)
• 파일에 대한 프로파일링 정보 출력  파서를 최적화하거나 개발 시 주로 사용
 preg
• 레지스트리 파일, 이미지에서 레지스트리를 파싱하기 위한 도구
 pshell
• 출력, 디버깅, 테스트를 위해 Plaso 모든 라이브러리에 접근 가능한 iPython 콘솔
 psort
• 스토리지 파일에 대한 필터, 정렬을 담당하는 도구
 plasm (Plaso Langar Að Safna Minna)
• 스토리지 파일 내 이벤트를 그룹화하거나 태깅하기 위한 도구
지원 도구
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]
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]
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
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
forensicinsight.org Page 32
Plaso
 스토리지 파일 정보 출력
pinfo 활용, http://plaso.kiddaland.net/usage/pinfo
$> pinfo.exe TESTCASE.dump
--------------------------------------------------------------------------------
Plaso Storage Information
--------------------------------------------------------------------------------
Storage file: TESTCASE.dump
Source processed: G:TESTTESTCASE.E01
Time of processing: 2014-09-27T13:44:24+00:00
Collection information:
parser_selection = win7
os_detected = N/A
configured_zone = Asia/Seoul
preprocess = True
parsers = [u'esedb', u'winfirewall', u'recycle_bin', u'filestat', u'sqlite', u'lnk', u'symantec_scanlog', u'winevtx', u'plist',
u'opera_global
', u'chrome_cache', u'prefetch', u'winreg', u'msiecf', u'bencode', u'skydrive_log', u'openxml', u'opera_typed_history', u'winjob', u'olecf',
u'java_id
x', u'firefox_cache', u'mcafee_protection', u'skydrive_log_error']
protobuf_size = 0
vss parsing = False
recursive = False
preferred_encoding = cp949
workers = 5
output_file = ./TESTCASE.dump
image_offset = 105906176
version = 1.1.0
cmd_line = C:UsersADMINI~1TOOLplasolog2timeline.exe -z Asia/Seoul -p ./TESTCASE.dump G:TESTTESTCASE.E01
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
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
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
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 '"
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'
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
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')
forensicinsight.org Page 40
Plaso
 사용자 정의 파서 및 플러그인 작성 지원
 파서 (parser)
• 파일 단위로 동작하는 모듈
 플러그인 (plugin)
• 파일 확장 형식 (Chrome History SQLite Database)
• 파일의 부분 데이터 (Application Compatibility cache Windows Registry data)
파서 & 플러그인 작성
forensicinsight.org Page 41
Plaso
Plaso 분석 방법
PLASO
STORAGE
TAG
SORT
FILTER
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';
forensicinsight.org Page 43
질문과 답변

More Related Content

(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안

  • 1. FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA PLASO – 슈퍼 타임라인 분석 도구 활용 방안 proneer proneer(at)gmail.com forensic-proof.com
  • 2. forensicinsight.org Page 2 개요 1. 타임라인 분석 개요 2. log2timeline 3. Plaso
  • 4. forensicinsight.org Page 4 타임라인 분석 개요  분석 데이터를 시간 순으로 나열하여 분석하는 방법 타임라인 분석이란?
  • 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) • 유용한 정보 추출 (촬영 시간 포함)  뭘 뽑아낼 것인가? 로그 형식 통합
  • 13. forensicinsight.org Page 13 log2timeline  [date_time] [timezone] [MACB] [source] [sourcetype] [type] [user] [host] [short] [desc] [version] [filename] [inode] [notes] [format] [extra] 정형화!!
  • 14. forensicinsight.org Page 14 log2timeline  디스크 이미지  라이브 볼륨  아티팩트 폴더 입력 방식 $> perl log2timeline -z Asia/Seoul -r -p -w timeline.txt -I disk.dd $> perl log2timeline -z Asia/Seoul -r -p -w timeline.txt “C:” $> perl log2timeline -z Asia/Seoul -r -w timeline.txt “d:artifacts” $> perl log2timeline -z Asia/Seoul -r -p -w timeline.txt -p 0 -I partition.dd
  • 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 출력 모듈
  • 16. forensicinsight.org Page 16 log2timeline  한글 인코딩 처리 문제  시간 형식 (월/일/년)  일부 파싱 모듈 오류  리눅스 환경에서 동작 log2timeline 문제점
  • 17. forensicinsight.org Page 17 log2timeline 1. 타임라인 생성 2. 시간 순 정렬 3. TIMELINE_COLOR_TEMPLATE 이용 • http://computer-forensics.sans.org/blog/2011/12/07/digital-forensic-sifting-super-timeline- analysis-and-creation log2timeline_mod $> python log2_sort.py -i <input file> -o <output file> -n <line number> $> python log2_sort.py -i timeline.txt -o timeline_sort.csv -n 200000 $> perl log2timeline_mod -z Asia/Seoul -r -p -w timeline.txt “d:artifacts”
  • 22. forensicinsight.org Page 22 Plaso  펄로 작성  단일 쓰레드 사용  초 단위의 시간 정밀도 사용  텍스트 형식의 출력  새로운 기능 추가를 위해 많은 노력 필요  필터나 사후 처리 기능 빈약  한글 처리의 한계  시간 형식의 차이 (년-월-일 <-> 월/일/년) log2timeline 한계
  • 24. forensicinsight.org Page 24 Plaso  전반부는 log2timeline 이용  실행 및 후반부 기능 강화 • 멀티 쓰레딩 지원 • 이미지 파일 파싱 • VSS 파싱 • 태그 기능 • 필터 기능 • 선별 수집 기능 • … … 특징
  • 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
  • 32. forensicinsight.org Page 32 Plaso  스토리지 파일 정보 출력 pinfo 활용, http://plaso.kiddaland.net/usage/pinfo $> pinfo.exe TESTCASE.dump -------------------------------------------------------------------------------- Plaso Storage Information -------------------------------------------------------------------------------- Storage file: TESTCASE.dump Source processed: G:TESTTESTCASE.E01 Time of processing: 2014-09-27T13:44:24+00:00 Collection information: parser_selection = win7 os_detected = N/A configured_zone = Asia/Seoul preprocess = True parsers = [u'esedb', u'winfirewall', u'recycle_bin', u'filestat', u'sqlite', u'lnk', u'symantec_scanlog', u'winevtx', u'plist', u'opera_global ', u'chrome_cache', u'prefetch', u'winreg', u'msiecf', u'bencode', u'skydrive_log', u'openxml', u'opera_typed_history', u'winjob', u'olecf', u'java_id x', u'firefox_cache', u'mcafee_protection', u'skydrive_log_error'] protobuf_size = 0 vss parsing = False recursive = False preferred_encoding = cp949 workers = 5 output_file = ./TESTCASE.dump image_offset = 105906176 version = 1.1.0 cmd_line = C:UsersADMINI~1TOOLplasolog2timeline.exe -z Asia/Seoul -p ./TESTCASE.dump G:TESTTESTCASE.E01
  • 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) 파서 & 플러그인 작성
  • 41. forensicinsight.org Page 41 Plaso Plaso 분석 방법 PLASO STORAGE TAG SORT FILTER
  • 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';