Skip to content

Timesketch - Collaborative Forensic Timeline Analysis Cheatsheet

Timesketch - Collaborative Forensic Timeline Analysis Cheatsheet

Timesketch is an open-source tool (by Google) for collaborative forensic timeline analysis. Investigators ingest timestamped data — disk/triage artifacts parsed by Plaso, logs, CSVs — into a “sketch,” then search, filter, tag, comment, and star events on a shared timeline. It is built for DFIR teamwork: multiple analysts work the same incident, share saved searches, and run automated analyzers to surface suspicious activity. It pairs naturally with collection tools like Velociraptor.

Deployment

MethodCommand / Note
Docker Compose (recommended)follow the official docker-compose deployment in the docs
Quick dev installuse the project’s deploy/docker config
Create a usertsctl create-user <username>
Add to grouptsctl add-user-to-group ...
Web UIserved on the configured host/port after startup

Timesketch is a server application (Elasticsearch/OpenSearch + PostgreSQL + web UI), not a single binary. Deploy with Docker Compose for the smoothest setup.

Ingesting Data

SourceHow
Plaso storage fileUpload a .plaso file produced by log2timeline.py
CSV / JSONLUpload with the required datetime, message, timestamp_desc columns
CLI importtimesketch_importer -u user -p pass --host URL data.csv
API importUse the Python client import_streamer

Plaso → Timesketch

# Create a super timeline from an image/triage with Plaso, then import
log2timeline.py --storage-file evidence.plaso /mnt/triage
timesketch_importer --host https://ts.example.com \
  -u analyst evidence.plaso --sketch_id 1

Searching the Timeline

Timesketch uses an Elasticsearch/Lucene-style query syntax.

QueryMatches
powershellEvents containing the term
data_type:"windows:evtx:record"A specific parser data type
message:*mimikatz*Wildcard within the message field
tag:badEvents you tagged “bad”
datetime:[2026-06-01 TO 2026-06-02]A time range
event_identifier:4624 AND username:adminBoolean combinations

Working Events

ActionDescription
StarMark events of interest
TagApply labels (e.g. bad, suspicious, lateral-movement)
CommentAdd investigator notes to an event
Saved searchStore a query for reuse / sharing
StoryWrite a narrative that embeds saved searches and findings

Analyzers

Analyzers run automatically over a timeline to flag patterns.

AnalyzerSurfaces
Browser search / artifactsWeb activity of interest
Login/Windows eventsAuthentication anomalies
SigmaMatches Sigma detection rules against events
Yet, threat intel feedsKnown-bad indicators
TaggerAuto-tags events by rules
TaskHow
Run an analyzerTrigger from the UI or API on a timeline
Sigma rulesManage rules so the Sigma analyzer can match them
AggregationsBuild charts (e.g. events over time, top users)

API / Automation

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)

Common Workflows

# Build a super timeline from triage output and load it into a sketch
log2timeline.py --storage-file case.plaso /evidence
timesketch_importer -u analyst case.plaso --sketch_id 5

# In the UI: search for suspicious activity, tag findings, write a Story
#   message:*mimikatz*  →  tag "credential-access"  →  add to Story

Timesketch vs Other Timeline Tools

AspectTimesketchPlaso (log2timeline)Splunk
RoleCollaborative analysis UITimeline generationSIEM/log analytics
CollaborationFirst-class (sketches, stories)None (CLI)Team dashboards
InputPlaso, CSV, JSONLFilesystem/artifactsForwarders/indexes
Best forTeam DFIR timeline reviewProducing the timelineBroad enterprise logging

Resources