Timesketch - Análisis Colaborativo de Línea de Tiempo Forense
Timesketch es una herramienta abierta (de Google) para análisis colaborativo de línea de tiempo forense. Los investigadores ingieren datos con marca de tiempo — artefactos de disco/triage analizados por Plaso, logs, CSVs — en un “sketch”, luego buscan, filtran, etiquetan, comentan y marcan con estrellas eventos en una línea de tiempo compartida. Está construido para trabajo en equipo de DFIR: múltiples analistas trabajan el mismo incidente, comparten búsquedas guardadas y ejecutan analizadores automatizados para descubrir actividad sospechosa. Se empareja naturalmente con herramientas de recopilación como Velociraptor.
Implementación
| Método | Comando / Nota |
|---|
| Docker Compose (recomendado) | seguir la implementación oficial de docker-compose en la documentación |
| Instalación dev rápida | usar la configuración deploy/docker del proyecto |
| Crear un usuario | tsctl create-user <username> |
| Agregar a grupo | tsctl add-user-to-group ... |
| IU web | servida en el host/puerto configurado después del inicio |
Timesketch es una aplicación servidora (Elasticsearch/OpenSearch + PostgreSQL + IU web), no un único binario. Implementar con Docker Compose para la configuración más suave.
Ingesta de Datos
| Fuente | Cómo |
|---|
| Archivo de almacenamiento Plaso | Cargar un archivo .plaso producido por log2timeline.py |
| CSV / JSONL | Cargar con las columnas requeridas datetime, message, timestamp_desc |
| Importación CLI | timesketch_importer -u user -p pass --host URL data.csv |
| Importación API | Usar el cliente Python import_streamer |
Plaso → Timesketch
# Crear una línea de tiempo super de una imagen/triage con Plaso, luego importar
log2timeline.py --storage-file evidence.plaso /mnt/triage
timesketch_importer --host https://ts.example.com \
-u analyst evidence.plaso --sketch_id 1
Búsqueda en la Línea de Tiempo
Timesketch utiliza una sintaxis de consulta de estilo Elasticsearch/Lucene.
| Consulta | Coincide |
|---|
powershell | Eventos que contienen el término |
data_type:"windows:evtx:record" | Un tipo de datos de analizador específico |
message:*mimikatz* | Comodín dentro del campo de mensaje |
tag:bad | Eventos que etiquetaste como “bad” |
datetime:[2026-06-01 TO 2026-06-02] | Un rango de tiempo |
event_identifier:4624 AND username:admin | Combinaciones booleanas |
Trabajar con Eventos
| Acción | Descripción |
|---|
| Star | Marcar eventos de interés |
| Tag | Aplicar etiquetas (p. ej. bad, suspicious, lateral-movement) |
| Comment | Agregar notas del investigador a un evento |
| Saved search | Almacenar una consulta para reutilización / compartición |
| Story | Escribir una narración que incruste búsquedas guardadas y hallazgos |
Analizadores
Los analizadores se ejecutan automáticamente sobre una línea de tiempo para marcar patrones.
| Analizador | Superficies |
|---|
| Búsqueda del navegador / artefactos | Actividad web de interés |
| Eventos de login/Windows | Anomalías de autenticación |
| Sigma | Coincide con reglas de detección de Sigma contra eventos |
| Yet, threat intel feeds | Indicadores conocidos como maliciosos |
| Tagger | Auto-etiqueta eventos por reglas |
| Tarea | Cómo |
|---|
| Ejecutar un analizador | Desencadenar desde la IU o API en una línea de tiempo |
| Reglas de Sigma | Administrar reglas para que el analizador de Sigma pueda coincidir |
| Aggregations | Construir gráficos (p. ej. eventos a lo largo del tiempo, usuarios principales) |
API / Automatización
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)
Flujos de Trabajo Comunes
# Construir una línea de tiempo super a partir de la salida de triage y cargarla en un sketch
log2timeline.py --storage-file case.plaso /evidence
timesketch_importer -u analyst case.plaso --sketch_id 5
# En la IU: buscar actividad sospechosa, etiquetar hallazgos, escribir una Story
# message:*mimikatz* → tag "credential-access" → agregar a Story
Timesketch vs Otras Herramientas de Línea de Tiempo
| Aspecto | Timesketch | Plaso (log2timeline) | Splunk |
|---|
| Rol | IU de análisis colaborativo | Generación de línea de tiempo | SIEM/análisis de logs |
| Colaboración | De primera clase (sketches, stories) | Ninguna (CLI) | Dashboards de equipo |
| Entrada | Plaso, CSV, JSONL | Filesystem/artefactos | Forwarders/indexes |
| Mejor para | Revisión de línea de tiempo de equipo DFIR | Producir la línea de tiempo | Logging empresarial amplio |
Recursos