Construction d'une chronologie d'incidents avec Timesketch
Vue d'ensemble
Timesketch est un outil collaboratif open-source d'analyse de chronologies forensiques développé par Google. Il permet aux équipes de sécurité de visualiser et d'analyser des données chronologiques provenant de multiples sources lors d'enquêtes sur des incidents. Il ingère des logs et artefacts de terminaux, serveurs et services cloud, les normalise en une chronologie unifiée et interrogeable, et offre des capacités d'analyse puissantes, notamment des analyseurs intégrés, du marquage, des annotations de sketch et la création d'histoires. Timesketch s'intègre à Plaso (log2timeline) pour l'analyse des artefacts et prend en charge l'ingestion directe de CSV/JSONL pour une construction rapide de chronologies lors d'incidents actifs.
Quand l'utiliser
- Lors du déploiement ou de la configuration de capacités de construction de chronologies d'incidents avec Timesketch dans votre environnement
- Lors de la mise en place de contrôles de sécurité alignés sur les exigences de conformité
- Lors de la construction ou de l'amélioration de l'architecture de sécurité pour ce domaine
- Lors de la réalisation d'évaluations de sécurité nécessitant cette implémentation
Prérequis
- Connaissance des concepts et outils de réponse aux incidents
- Accès à un environnement de test ou de laboratoire pour une exécution sécurisée
- Python 3.8+ avec les dépendances nécessaires installées
- Autorisation appropriée pour toute activité de test
Architecture et composants
Composants principaux
- Serveur Timesketch: Application web avec API REST pour la gestion des chronologies
- OpenSearch/Elasticsearch: Stockage backend et moteur de recherche pour les événements de la chronologie
- PostgreSQL: Stockage des métadonnées pour les sketches, les histoires et les données utilisateur
- Redis: Gestion des files d'attente de tâches pour le traitement en arrière-plan
- Travailleurs Celery: Traitement asynchrone des téléchargements de chronologies et des analyseurs
Flux de données
Sources de preuves --> Plaso/log2timeline --> Fichier de stockage Plaso (.plaso)
| |
v v
CSV/JSONL --> Importateur Timesketch --> Index OpenSearch
|
v
Interface Web Timesketch
(Rechercher, Analyser, Histoire)
Déploiement
Déploiement Docker (Recommandé)
# Cloner le dépôt Timesketch
git clone https://github.com/google/timesketch.git
cd timesketch
# Exécuter le script d'aide au déploiement
cd docker
sudo docker compose up -d
# Accès par défaut : https://localhost:443
# Identifiants administrateur générés lors de la première exécution
Configuration système requise
- Minimum 8 Go de RAM (16+ Go recommandé pour les enquêtes importantes)
- 4 cœurs CPU minimum
- Stockage SSD pour les index OpenSearch
- Docker et Docker Compose installés
Méthodes d'ingestion de données
Méthode 1 : Intégration Plaso (Complète)
# Traiter une image disque avec log2timeline
log2timeline.py --storage-file evidence.plaso /chemin/vers/image/du/disque
# Traiter les journaux d'événements Windows
log2timeline.py --parsers winevtx --storage-file windows_events.plaso /chemin/vers/evtx/
# Traiter plusieurs sources de preuves
log2timeline.py --parsers "winevtx,prefetch,amcache,shimcache,userassist" \
--storage-file full_analysis.plaso /chemin/vers/image/montee/
# Importer le fichier Plaso dans Timesketch
timesketch_importer -s "Cas-2025-001" -t "Terminal-WKS01" evidence.plaso
Méthode 2 : Import CSV (Ingestion rapide)
message,datetime,timestamp_desc,source,hostname
"Connexion utilisateur détectée","2025-01-15T08:30:00Z","Événement enregistré","Journal de sécurité","DC01"
"Exécution PowerShell","2025-01-15T08:31:15Z","Événement enregistré","PowerShell","WKS042"
# Importer directement un CSV
timesketch_importer -s "Cas-2025-001" -t "Tri-Rapide" events.csv
Méthode 3 : Import JSONL (Données structurées)
{"message": "Connexion suspecte depuis 10.1.2.3", "datetime": "2025-01-15T08:30:00Z", "timestamp_desc": "Événement enregistré", "source_short": "Sécurité", "hostname": "DC01"}
Méthode 4 : Intégration des règles Sigma
# Télécharger les règles Sigma pour la détection automatisée
timesketch_importer --sigma-rules /chemin/vers/regles/sigma/
Workflow d'analyse
Étape 1 : Créer un sketch d'investigation
1. Connectez-vous à l'interface web de Timesketch
2. Créez un nouveau sketch (cas d'investigation)
3. Ajoutez les chronologies pertinentes au sketch
4. Définissez la description et les tags du sketch
Étape 2 : Exécuter les analyseurs intégrés
Timesketch inclut des analyseurs qui identifient automatiquement :
- Analyseur de recherche navigateur : Extrait les requêtes de recherche de l'historique du navigateur
- Analyseur de chaîne d'événements : Lie les événements associés (téléchargement -> exécution)
- Analyseur de domaine : Extrait et catégorise les noms de domaine
- Analyseur d'extraction de caractéristiques : Identifie les IP, URL, hachages
- Analyseur de géolocalisation : Cartographie les événements vers des emplacements géographiques
- Scoreur de similarité : Trouve des événements similaires sur différentes chronologies
- Analyseur Sigma : Fait correspondre les événements aux règles de détection Sigma
- Chercheur de comptes : Identifie les modèles d'activité des comptes utilisateur
- Tagger : Applique des étiquettes basées sur des règles prédéfinies
Étape 3 : Rechercher et filtrer
# Exemples de recherche dans le langage de requête Timesketch
# Trouver tous les événements liés à un utilisateur spécifique
source_short:Sécurité ET message:"john.admin"
# Trouver les événements d'exécution PowerShell
data_type:"windows:evtx:record" ET event_identifier:4104
# Trouver les indicateurs de mouvement latéral
source_short:Sécurité ET event_identifier:4624 ET xml_string:"LogonType">3
# Trouver les événements dans une plage horaire spécifique
datetime:[2025-01-15T00:00:00 TO 2025-01-15T23:59:59]
# Trouver les événements de création de fichier
data_type:"fs:stat" ET timestamp_desc:"Heure de création"
# Rechercher avec des tags
tag:"suspect" OU tag:"mouvement_lateral"
Étape 4 : Construire une histoire d'investigation
1. Créez une nouvelle histoire dans le sketch
2. Ajoutez des vues de recherche qui étayent chaque constatation
3. Annotez les événements clés avec les notes de l'enquêteur
4. Liez les événements aux techniques MITRE ATT&CK
5. Documentez le récit de l'attaque de manière chronologique
6. Exportez l'histoire pour l'inclure dans le rapport d'incident
Fonctionnalités avancées
Investigation collaborative
- Plusieurs analystes travaillent simultanément sur le même sketch
- Les commentaires et annotations persistent sur les événements
- Les recherches sauvegardées sont partagées au sein de l'équipe
- Les histoires d'investigation documentent les constatations dans leur contexte
Automatisation via API
from timesketch_api_client import config
from timesketch_api_client import client as ts_client
# Se connecter à Timesketch
ts = ts_client.TimesketchApi(
host_uri="https://timesketch.local",
username="analyste",
password="motdepasse"
)
# Obtenir un sketch
sketch = ts.get_sketch(1)
# Rechercher des événements
recherche = sketch.explore(
query_string='event_identifier:4624 AND LogonType:3',
return_fields='datetime,message,hostname,source_short'
)
# Ajouter des tags aux événements
for event in recherche.get('objects', []):
sketch.tag_event(event['_id'], ['mouvement_lateral'])
Intégration avec Dissect
# Utiliser Dissect pour une analyse plus rapide des artefacts (alternative à Plaso)
target-query -f timesketch://timesketch.local/cas-001 \
cibles/nomdhote/ -q "windows.evtx" --limit 0
Sources de données clés pour la construction de chronologies
| Source | Analyseur | Valeur de preuve |
|---|---|---|
| Journaux d'événements Windows (.evtx) | winevtx | Authentification, exécution de processus, services |
| Fichiers Prefetch | prefetch | Historique d'exécution des programmes |
| MFT ($MFT) | mft | Activité du système de fichiers |
| Ruches de registre | winreg | Configuration système, persistance |
| Historique du navigateur | chrome/firefox | Activité web, téléchargements |
| Syslog | syslog | Événements Linux/équipement réseau |
| Journaux CloudTrail | jsonl | Activité API AWS |
| Journaux d'activité Azure | jsonl | Opérations sur les ressources Azure |
| Journaux de pare-feu | csv/jsonl | Connexions réseau |
| Journaux de proxy | csv/jsonl | Trafic HTTP/HTTPS |
Cartographie MITRE ATT&CK
| Technique | Indicateurs de chronologie |
|---|---|
| Accès initial (TA0001) | Premier événement malveillant, réception d'e-mail de phishing |
| Exécution (T1059) | Événements PowerShell/CMD, création de processus |
| Persistance (TA0003) | Modifications du registre, tâches planifiées, services |
| Mouvement latéral (TA0008) | Connexions à distance, connexions SMB, sessions RDP |
| Exfiltration (TA0010) | Transferts de données volumineux, téléchargements vers le cloud |