콘텐츠로 이동

Timesketch - 협력적 포렌식 타임라인 분석 치트시트

Timesketch - 협력적 포렌식 타임라인 분석 치트시트

Timesketch는 협력적 포렌식 타임라인 분석을 위한 오픈소스 도구 (Google에서 제작)입니다. 조사자는 시간 기반 데이터 — Plaso로 구문 분석한 디스크/트리아주 아티팩트, 로그, CSV — 를 “스케치”에 수집한 다음, 공유 타임라인에서 이벤트를 검색, 필터링, 태그 지정, 주석 처리, 별표 표시합니다. DFIR 팀 작업을 위해 만들어졌습니다: 여러 분석가가 동일한 사건을 처리하고, 저장된 검색을 공유하며, 자동화된 분석기를 실행하여 의심스러운 활동을 찾아냅니다. Velociraptor 같은 수집 도구와 자연스럽게 조합됩니다.

배포

방법명령어 / 참고
Docker Compose (권장)설명서의 공식 docker-compose 배포를 따르세요
빠른 개발 설치프로젝트의 deploy/docker 구성 사용
사용자 생성tsctl create-user <username>
그룹에 추가tsctl add-user-to-group ...
웹 UI시작 후 구성된 호스트/포트에서 제공

Timesketch는 서버 애플리케이션 (Elasticsearch/OpenSearch + PostgreSQL + 웹 UI)이며, 단일 바이너리가 아닙니다. 가장 부드러운 설정을 위해 Docker Compose로 배포하세요.

데이터 수집

소스방법
Plaso 저장소 파일log2timeline.py로 생성한 .plaso 파일 업로드
CSV / JSONL필수 datetime, message, timestamp_desc 열을 포함한 업로드
CLI 가져오기timesketch_importer -u user -p pass --host URL data.csv
API 가져오기Python 클라이언트 import_streamer 사용

Plaso → Timesketch

# Plaso로 이미지/트리아주에서 수퍼 타임라인 생성 후 가져오기
log2timeline.py --storage-file evidence.plaso /mnt/triage
timesketch_importer --host https://ts.example.com \
  -u analyst evidence.plaso --sketch_id 1

타임라인 검색

Timesketch는 Elasticsearch/Lucene 스타일 쿼리 문법을 사용합니다.

쿼리일치
powershell용어를 포함하는 이벤트
data_type:"windows:evtx:record"특정 파서 데이터 타입
message:*mimikatz*메시지 필드 내 와일드카드
tag:bad”bad”로 태그한 이벤트
datetime:[2026-06-01 TO 2026-06-02]시간 범위
event_identifier:4624 AND username:admin부울 조합

이벤트 작업

동작설명
Star관심사 마크
Tag라벨 적용 (예: bad, suspicious, lateral-movement)
Comment이벤트에 조사자 메모 추가
Saved search재사용 / 공유용 쿼리 저장
Story저장된 검색 및 발견사항을 포함하는 내러티브 작성

분석기

분석기는 타임라인 패턴을 플래그하기 위해 자동으로 실행됩니다.

분석기표시
Browser search / artifacts관심 웹 활동
Login/Windows events인증 이상
Sigma이벤트에 대한 Sigma 탐지 규칙 일치
Yet, threat intel feeds알려진 나쁜 지표
Tagger규칙으로 자동 태그 이벤트
작업방법
분석기 실행UI 또는 API에서 타임라인에 대해 트리거
Sigma 규칙Sigma 분석기가 일치시킬 수 있도록 규칙 관리
Aggregations차트 빌드 (예: 시간 경과 이벤트, 최상위 사용자)

API / 자동화

from timesketch_api_client import client
ts = client.TimesketchApi("https://ts.example.com", "analyst", "password")
sketch = ts.get_sketch(1)
for event in sketch.explore("tag:bad", as_pandas=True).itertuples():
    print(event.message)

일반적인 워크플로우

# 트리아주 출력에서 수퍼 타임라인 빌드하고 스케치에 로드
log2timeline.py --storage-file case.plaso /evidence
timesketch_importer -u analyst case.plaso --sketch_id 5

# UI에서: 의심스러운 활동을 검색하고, 발견사항에 태그를 지정하고, Story 작성
#   message:*mimikatz*  →  tag "credential-access"  →  Story에 추가

Timesketch vs 기타 타임라인 도구

측면TimesketchPlaso (log2timeline)Splunk
역할협력적 분석 UI타임라인 생성SIEM/로그 분석
협력첫 번째 클래스 (스케치, 스토리)없음 (CLI)팀 대시보드
입력Plaso, CSV, JSONL파일시스템/아티팩트포워더/인덱스
최고 용도팀 DFIR 타임라인 검토타임라인 생산광범위한 엔터프라이즈 로깅

리소스