Aller au contenu

Timesketch - Feuille de triche analyse collaborative de frise chronologique judiciaire

Timesketch - Feuille de triche analyse collaborative de frise chronologique judiciaire

Timesketch est un outil open-source (par Google) pour l”analyse collaborative de frise chronologique judiciaire. Les enquêteurs ingèrent des données horodatées — artefacts de disque/triage analysés par Plaso, journaux, CSV — dans un « sketch », puis recherchent, filtrent, marquent, commentent et étoilent les événements sur une frise chronologique partagée. Il est conçu pour le travail DFIR d”équipe : plusieurs analystes travaillent sur le même incident, partagent les recherches enregistrées et exécutent les analyseurs automatisés pour faire émerger l”activité suspecte. Il se marie naturellement avec les outils de collecte comme Velociraptor.

Déploiement

MéthodeCommande / Note
Docker Compose (recommandé)suivre le déploiement officiel docker-compose dans la documentation
Installation dev rapideutiliser la configuration deploy/docker du projet
Créer un utilisateurtsctl create-user <username>
Ajouter au groupetsctl add-user-to-group ...
Interface webservie sur l”hôte/port configuré après le démarrage

Timesketch est une application serveur (Elasticsearch/OpenSearch + PostgreSQL + interface web), pas un binaire unique. Déployer avec Docker Compose pour la configuration la plus fluide.

Ingestion de données

SourceComment
Fichier stockage PlasoCharger un fichier .plaso produit par log2timeline.py
CSV / JSONLCharger avec les colonnes obligatoires datetime, message, timestamp_desc
Importation CLItimesketch_importer -u user -p pass --host URL data.csv
Importation APIUtiliser le client Python import_streamer

Plaso → Timesketch

# Créer une super frise chronologique à partir d''une image/triage avec Plaso, puis importer
log2timeline.py --storage-file evidence.plaso /mnt/triage
timesketch_importer --host https://ts.example.com \
  -u analyst evidence.plaso --sketch_id 1

Recherche sur la frise chronologique

Timesketch utilise une syntaxe de requête de style Elasticsearch/Lucene.

RequêteCorrespond
powershellÉvénements contenant le terme
data_type:"windows:evtx:record"Un type de données d”analyseur spécifique
message:*mimikatz*Wildcard dans le champ du message
tag:badÉvénements que vous avez marqués « mauvais »
datetime:[2026-06-01 TO 2026-06-02]Une plage horaire
event_identifier:4624 AND username:adminCombinaisons booléennes

Traiter les événements

ActionDescription
StarMarquer les événements d”intérêt
TagAppliquer des étiquettes (par ex. bad, suspicious, lateral-movement)
CommentAjouter des notes d”enquêteur à un événement
Saved searchStocker une requête pour réutilisation / partage
StoryÉcrire un récit qui intègre les recherches enregistrées et les conclusions

Analyseurs

Les analyseurs s”exécutent automatiquement sur une frise chronologique pour marquer les modèles.

AnalyseurFait émerger
Browser search / artifactsActivité web d”intérêt
Login/Windows eventsAnomalies d”authentification
SigmaCorrespond aux règles de détection Sigma par rapport aux événements
Yet, threat intel feedsIndicateurs connus mauvais
TaggerMarque automatiquement les événements par règles
TâcheComment
Exécuter un analyseurDéclencher à partir de l”interface utilisateur ou de l”API sur une frise chronologique
Règles SigmaGérer les règles pour que l”analyseur Sigma puisse les faire correspondre
AgrégationsConstruire des graphiques (par ex. événements au fil du temps, utilisateurs principaux)

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)

Workflows courants

# Construire une super frise chronologique à partir de la sortie de triage et la charger dans un sketch
log2timeline.py --storage-file case.plaso /evidence
timesketch_importer -u analyst case.plaso --sketch_id 5

# Dans l''interface utilisateur : rechercher l''activité suspecte, marquer les conclusions, écrire une Story
#   message:*mimikatz*  →  tag "credential-access"  →  ajouter à Story

Timesketch vs autres outils de frise chronologique

AspectTimesketchPlaso (log2timeline)Splunk
RôleInterface utilisateur d”analyse collaborativeGénération de frise chronologiqueSIEM/analyse de journaux
CollaborationDe première classe (sketches, stories)Aucune (CLI)Tableaux de bord d”équipe
EntréePlaso, CSV, JSONLSystème de fichiers/artefactsForwarders/indexes
Meilleur pourExamen de frise chronologique DFIR d”équipeProduction de la frise chronologiqueJournalisation d”entreprise large

Ressources