Timesketch - Análise Colaborativa de Linha do Tempo Forense
Timesketch é uma ferramenta de código aberto (do Google) para análise colaborativa de linha do tempo forense. Investigadores ingerem dados com timestamp — artefatos de disco/triage analisados por Plaso, logs, CSVs — em um “sketch,” depois pesquisam, filtram, tagueiam, comentam e marcam eventos em uma linha do tempo compartilhada. É construído para trabalho em DFIR em equipe: múltiplos analistas trabalham no mesmo incidente, compartilham pesquisas salvas e executam analisadores automatizados para identificar atividade suspeita. Ele funciona naturalmente com ferramentas de coleta como Velociraptor.
Deployment
| Método | Comando / Nota |
|---|
| Docker Compose (recomendado) | siga o deployment oficial docker-compose na documentação |
| Quick dev install | use a configuração deploy/docker do projeto |
| Criar um usuário | tsctl create-user <username> |
| Adicionar ao grupo | tsctl add-user-to-group ... |
| Web UI | servido no host/port configurado após inicialização |
Timesketch é uma aplicação de servidor (Elasticsearch/OpenSearch + PostgreSQL + web UI), não um único binário. Implante com Docker Compose para o setup mais suave.
Ingestão de Dados
| Fonte | Como |
|---|
| Arquivo de armazenamento Plaso | Carregar um arquivo .plaso produzido por log2timeline.py |
| CSV / JSONL | Carregar com as colunas necessárias datetime, message, timestamp_desc |
| CLI import | timesketch_importer -u user -p pass --host URL data.csv |
| API import | Use o cliente Python import_streamer |
Plaso → Timesketch
# Criar uma super linha do tempo de uma imagem/triage com Plaso, depois importar
log2timeline.py --storage-file evidence.plaso /mnt/triage
timesketch_importer --host https://ts.example.com \
-u analyst evidence.plaso --sketch_id 1
Pesquisando a Linha do Tempo
Timesketch usa uma sintaxe de consulta estilo Elasticsearch/Lucene.
| Consulta | Corresponde |
|---|
powershell | Eventos contendo o termo |
data_type:"windows:evtx:record" | Um tipo de dados de analisador específico |
message:*mimikatz* | Wildcard dentro do campo de mensagem |
tag:bad | Eventos que você tagueou como “bad” |
datetime:[2026-06-01 TO 2026-06-02] | Um intervalo de tempo |
event_identifier:4624 AND username:admin | Combinações booleanas |
| Ação | Descrição |
|---|
| Star | Marcar eventos de interesse |
| Tag | Aplicar rótulos (ex: bad, suspicious, lateral-movement) |
| Comment | Adicionar notas do investigador a um evento |
| Saved search | Armazenar uma consulta para reuso / compartilhamento |
| Story | Escrever uma narrativa que incorpora pesquisas salvas e descobertas |
Analisadores
Analisadores executam automaticamente sobre uma linha do tempo para sinalizar padrões.
| Analisador | Superfícies |
|---|
| Browser search / artifacts | Atividade web de interesse |
| Login/Windows events | Anomalias de autenticação |
| Sigma | Corresponde regras de detecção Sigma contra eventos |
| Yet, threat intel feeds | Indicadores conhecidos-ruins |
| Tagger | Auto-tags eventos por regras |
| Tarefa | Como |
|---|
| Executar um analisador | Acionar da UI ou API em uma linha do tempo |
| Sigma rules | Gerenciar regras para que o analisador Sigma possa corresponder a elas |
| Aggregations | Construir gráficos (ex: eventos ao longo do tempo, usuários principais) |
API / Automação
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)
Fluxos de Trabalho Comuns
# Construir uma super linha do tempo de saída de triage e carregá-la em um sketch
log2timeline.py --storage-file case.plaso /evidence
timesketch_importer -u analyst case.plaso --sketch_id 5
# Na UI: pesquise atividade suspeita, taqueie descobertas, escreva uma Story
# message:*mimikatz* → tag "credential-access" → adicionar à Story
Timesketch vs Outras Ferramentas de Linha do Tempo
| Aspecto | Timesketch | Plaso (log2timeline) | Splunk |
|---|
| Papel | UI de análise colaborativa | Geração de linha do tempo | SIEM/log analytics |
| Colaboração | Primeira classe (sketches, stories) | Nenhuma (CLI) | Dashboards de equipe |
| Input | Plaso, CSV, JSONL | Filesystem/artifacts | Forwarders/indexes |
| Melhor para | Revisão de linha do tempo DFIR em equipe | Produzindo a linha do tempo | Logging de empresa amplo |
Recursos