Was macht Erstellung von Incident-Timelines mit Timesketch?
Überblick
Timesketch ist ein Open-Source-Tool zur kollaborativen forensischen Timeline-Analyse, das von Google entwickelt wurde. Es ermöglicht Sicherheitsteams, chronologische Daten aus mehreren Quellen während Incident-Investigations zu visualisieren und zu analysieren. Timesketch nimmt Logs und Artefakte von Endpunkten, Servern und Cloud-Diensten auf, normalisiert sie in einer einheitlichen durchsuchbaren Timeline und bietet leistungsstarke Analysefunktionen wie integrierte Analyzer, Tagging, Skizzen-Annotationen und Story-Erstellung. Timesketch integriert sich mit Plaso (log2timeline) für die Artefakt-Parsing und unterstützt direkten CSV/JSONL-Import für den schnellen Timeline-Aufbau während aktiver Incidents.
Wann verwenden
- Beim Bereitstellen oder Konfigurieren von Fähigkeiten zur Erstellung von Incident-Timelines mit Timesketch in Ihrer Umgebung
- Beim Einrichten von Sicherheitskontrollen, die auf Compliance-Anforderungen abgestimmt sind
- Beim Aufbau oder der Verbesserung von Sicherheitsarchitekturen für diesen Bereich
- Bei der Durchführung von Sicherheitsbewertungen, die diese Implementierung erfordern
Voraussetzungen
- Vertrautheit mit Incident-Response-Konzepten und -Tools
- Zugang zu einer Test- oder Laborumgebung für die sichere Ausführung
- Python 3.8+ mit installierten erforderlichen Abhängigkeiten
- Geeignete Autorisierung für alle Testaktivitäten
Architektur und Komponenten
Kernkomponenten
- Timesketch-Server: Webanwendung mit REST-API für die Timeline-Verwaltung
- OpenSearch/Elasticsearch: Backend-Speicher und Suchmaschine für Timeline-Ereignisse
- PostgreSQL: Metadatenspeicher für Skizzen, Stories und Benutzerdaten
- Redis: Aufgabenwarteschlangenverwaltung für die Hintergrundverarbeitung
- Celery-Worker: Asynchrone Verarbeitung von Timeline-Uploads und Analyzern
Datenfluss
Beweisquellen --> Plaso/log2timeline --> Plaso-Speicherdatei (.plaso)
| |
v v
CSV/JSONL --> Timesketch-Importer --> OpenSearch-Index
|
v
Timesketch-Web-UI
(Suche, Analyse, Story)
Bereitstellung
Docker-Bereitstellung (Empfohlen)
# Timesketch-Repository klonen
git clone https://github.com/google/timesketch.git
cd timesketch
# Bereitstellungs-Helper-Skript ausführen
cd docker
sudo docker compose up -d
# Standardzugriff: https://localhost:443
# Admin-Anmeldeinformationen werden beim ersten Start generiert
Systemanforderungen
- Mindestens 8 GB RAM (16+ GB empfohlen für große Untersuchungen)
- Mindestens 4 CPU-Kerne
- SSD-Speicher für OpenSearch-Indizes
- Docker und Docker Compose installiert
Methoden zur Dateneingabe
Methode 1: Plaso-Integration (Umfassend)
# Festplattenabbild mit log2timeline verarbeiten
log2timeline.py --storage-file evidence.plaso /pfad/zum/festplattenabbild
# Windows-Ereignisprotokolle verarbeiten
log2timeline.py --parsers winevtx --storage-file windows_events.plaso /pfad/zu/evtx/
# Mehrere Beweisquellen verarbeiten
log2timeline.py --parsers "winevtx,prefetch,amcache,shimcache,userassist" \
--storage-file full_analysis.plaso /pfad/zum/gemounteten/abbild/
# Plaso-Datei in Timesketch importieren
timesketch_importer -s "Case-2025-001" -t "Endpoint-WKS01" evidence.plaso
Methode 2: CSV-Import (Schnelle Aufnahme)
message,datetime,timestamp_desc,source,hostname
"Benutzeranmeldung erkannt","2025-01-15T08:30:00Z","Ereignis aufgezeichnet","Sicherheitsprotokoll","DC01"
"PowerShell-Ausführung","2025-01-15T08:31:15Z","Ereignis aufgezeichnet","PowerShell","WKS042"
# CSV direkt importieren
timesketch_importer -s "Case-2025-001" -t "Quick-Triage" events.csv
Methode 3: JSONL-Import (Strukturierte Daten)
{"message": "Verdächtige Anmeldung von 10.1.2.3", "datetime": "2025-01-15T08:30:00Z", "timestamp_desc": "Ereignis aufgezeichnet", "source_short": "Security", "hostname": "DC01"}
Methode 4: Sigma-Regel-Integration
# Sigma-Regeln für die automatisierte Erkennung hochladen
timesketch_importer --sigma-rules /pfad/zu/sigma/regeln/
Analyse-Workflow
Schritt 1: Untersuchungsskizze erstellen
1. In Timesketch-Weboberfläche anmelden
2. Neue Skizze (Untersuchungsfall) erstellen
3. Relevante Timelines zur Skizze hinzufügen
4. Skizzenbeschreibung und Tags festlegen
Schritt 2: Integrierte Analyzer ausführen
Timesketch enthält Analyzer, die automatisch Folgendes identifizieren:
- Browser-Suchanalyzer: Extrahiert Suchanfragen aus dem Browserverlauf
- Ereigniskettenanalyzer: Verknüpft verwandte Ereignisse (Download -> Ausführung)
- Domainanalyzer: Extrahiert und kategorisiert Domainnamen
- Funktionsextraktionsanalyzer: Identifiziert IPs, URLs, Hashes
- Geo-Location-Analyzer: Ordnet Ereignisse geografischen Standorten zu
- Ähnlichkeitsbewerter: Findet ähnliche Ereignisse über Timelines hinweg
- Sigma-Analyzer: Gleicht Ereignisse mit Sigma-Erkennungsregeln ab
- Kontofinder: Identifiziert Aktivitätsmuster von Benutzerkonten
- Tagger: Wendet Bezeichnungen basierend auf vordefinierten Regeln an
Schritt 3: Suchen und Filtern
# Suchbeispiele in Timesketch-Abfragesprache
# Alle Ereignisse zu einem bestimmten Benutzer finden
source_short:Security AND message:"john.admin"
# PowerShell-Ausführungsereignisse finden
data_type:"windows:evtx:record" AND event_identifier:4104
# Indikatoren für laterale Bewegung finden
source_short:Security AND event_identifier:4624 AND xml_string:"LogonType\">3"
# Ereignisse innerhalb eines bestimmten Zeitraums finden
datetime:[2025-01-15T00:00:00 TO 2025-01-15T23:59:59]
# Dateierstellungsereignisse finden
data_type:"fs:stat" AND timestamp_desc:"Erstellungszeit"
# Mit Tags suchen
tag:"suspicious" OR tag:"lateral_movement"
Schritt 4: Untersuchungs-Story erstellen
1. Neue Story innerhalb der Skizze erstellen
2. Suchansichten hinzufügen, die jedes Ergebnis unterstützen
3. Schlüsselereignisse mit Ermittler-Notizen annotieren
4. Ereignisse MITRE ATT&CK-Techniken zuordnen
5. Die Angriffserzählung chronologisch dokumentieren
6. Story für die Aufnahme in den Incident-Bericht exportieren
Erweiterte Funktionen
Kollaborative Untersuchung
- Mehrere Analysten arbeiten gleichzeitig an derselben Skizze
- Kommentare und Annotationen bleiben bei Ereignissen erhalten
- Gespeicherte Suchen werden im Team geteilt
- Untersuchungs-Stories dokumentieren Ergebnisse im Kontext
API-Automatisierung
from timesketch_api_client import config
from timesketch_api_client import client as ts_client
# Mit Timesketch verbinden
ts = ts_client.TimesketchApi(
host_uri="https://timesketch.local",
username="analyst",
password="passwort"
)
# Skizze abrufen
sketch = ts.get_sketch(1)
# Ereignisse suchen
search = sketch.explore(
query_string='event_identifier:4624 AND LogonType:3',
return_fields='datetime,message,hostname,source_short'
)
# Tags zu Ereignissen hinzufügen
for event in search.get('objects', []):
sketch.tag_event(event['_id'], ['lateral_movement'])
Integration mit Dissect
# Dissect für schnellere Artefakt-Parsing verwenden (Alternative zu Plaso)
target-query -f timesketch://timesketch.local/case-001 \
targets/hostname/ -q "windows.evtx" --limit 0
Wichtige Datenquellen für den Timeline-Aufbau
| Quelle | Parser | Beweiswert |
|---|---|---|
| Windows-Ereignisprotokolle (.evtx) | winevtx | Authentifizierung, Prozessausführung, Dienste |
| Prefetch-Dateien | prefetch | Programmausführungsverlauf |
| MFT ($MFT) | mft | Dateisystemaktivität |
| Registry-Hives | winreg | Systemkonfiguration, Persistenz |
| Browserverlauf | chrome/firefox | Webaktivität, Downloads |
| Syslog | syslog | Linux-/Netzwerkgeräteereignisse |
| CloudTrail-Protokolle | jsonl | AWS-API-Aktivität |
| Azure-Aktivitätsprotokolle | jsonl | Azure-Ressourcenoperationen |
| Firewall-Protokolle | csv/jsonl | Netzwerkverbindungen |
| Proxy-Protokolle | csv/jsonl | HTTP/HTTPS-Verkehr |
MITRE ATT&CK-Zuordnung
| Technik | Timeline-Indikatoren |
|---|---|
| Erster Zugriff (TA0001) | Erstes bösartiges Ereignis, Phishing-E-Mail-Eingang |
| Ausführung (T1059) | PowerShell/CMD-Ereignisse, Prozesserstellung |
| Persistenz (TA0003) | Registry-Änderungen, geplante Tasks, Dienste |
| Laterale Bewegung (TA0008) | Remote-Anmeldungen, SMB-Verbindungen, RDP-Sitzungen |
| Exfiltration (TA0010) | Große Datenübertragungen, Cloud-Speicher-Uploads |