Timesketch - Foglio di aiuto per l”analisi collaborativa della timeline forense
Timesketch è uno strumento open-source (di Google) per l”analisi collaborativa della timeline forense. Gli investigatori ingestiscono dati con timestamp — artifact di disco/triage analizzati da Plaso, log, CSV — in uno “sketch”, quindi cercano, filtrano, etichettano, commentano e contrassegnano stelle agli eventi su una timeline condivisa. È costruito per il lavoro di squadra DFIR: più analisti lavorano lo stesso incidente, condividono ricerche salvate e eseguono analizzatori automatici per far emergere attività sospetta. Funziona naturalmente con strumenti di raccolta come Velociraptor.
Deployment
| Method | Command / Note |
|---|
| Docker Compose (recommended) | segui il deploy ufficiale docker-compose nella documentazione |
| Quick dev install | usa la configurazione deploy/docker del progetto |
| Create a user | tsctl create-user <username> |
| Add to group | tsctl add-user-to-group ... |
| Web UI | served on the configured host/port after startup |
Timesketch è un”applicazione server (Elasticsearch/OpenSearch + PostgreSQL + UI web), non un binario singolo. Esegui il deploy con Docker Compose per la configurazione più fluida.
Ingesta dei dati
| Source | Come |
|---|
| Plaso storage file | Carica un file .plaso prodotto da log2timeline.py |
| CSV / JSONL | Carica con le colonne richieste datetime, message, timestamp_desc |
| CLI import | timesketch_importer -u user -p pass --host URL data.csv |
| API import | Usa il client Python 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
Ricerca nella timeline
Timesketch usa una sintassi di query nello stile Elasticsearch/Lucene.
| Query | Corrisponde a |
|---|
powershell | Eventi contenenti il termine |
data_type:"windows:evtx:record" | Un tipo di parser di dati specifico |
message:*mimikatz* | Wildcard nel campo del messaggio |
tag:bad | Eventi che hai etichettato “bad” |
datetime:[2026-06-01 TO 2026-06-02] | Un intervallo di tempo |
event_identifier:4624 AND username:admin | Combinazioni booleane |
Lavoro su eventi
| Action | Descrizione |
|---|
| Star | Contrassegna con stella gli eventi di interesse |
| Tag | Applica etichette (es. bad, suspicious, lateral-movement) |
| Comment | Aggiungi note dell”investigatore a un evento |
| Saved search | Memorizza una query per riutilizzo / condivisione |
| Story | Scrivi una narrazione che incorpora ricerche salvate e risultati |
Analizzatori
Gli analizzatori vengono eseguiti automaticamente su una timeline per contrassegnare i pattern.
| Analizzatore | Fa emergere |
|---|
| Browser search / artifacts | Attività web di interesse |
| Login/Windows events | Anomalie di autenticazione |
| Sigma | Corrisponde alle regole di rilevamento Sigma contro gli eventi |
| Yet, threat intel feeds | Indicatori noti come cattivi |
| Tagger | Etichetta automaticamente gli eventi in base alle regole |
| Task | Come |
|---|
| Run an analyzer | Attiva dall”UI o API su una timeline |
| Sigma rules | Gestisci le regole in modo che l”analizzatore Sigma possa farvi corrispondere |
| Aggregations | Costruisci grafici (es. eventi nel tempo, utenti principali) |
API / Automazione
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)
Flussi di lavoro comuni
# 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 Altri strumenti di timeline
| Aspetto | Timesketch | Plaso (log2timeline) | Splunk |
|---|
| Ruolo | UI di analisi collaborativa | Generazione di timeline | SIEM/log analytics |
| Collaboration | Di prima classe (sketch, storie) | Nessuno (CLI) | Dashboard del team |
| Input | Plaso, CSV, JSONL | Filesystem/artifact | Forwarders/indexes |
| Best for | Revisione della timeline DFIR del team | Produrre la timeline | Logging aziendale ampio |
Resources