TL;DR
Threat Hunting sucht proaktiv nach Ang
Diese Zusammenfassung wurde KI-gestützt erstellt (EU AI Act Art. 52).
Inhaltsverzeichnis (6 Abschnitte)
Threat Hunting geht davon aus, dass Angreifer bereits im Netz sind - man weiss es nur noch nicht. Die Frage ist nicht “Wurden wir angegriffen?” sondern “Wo versteckt sich der Angreifer gerade?”
Threat Hunting vs. SIEM-Monitoring
Warum reaktives Monitoring nicht genügt
SIEM-Monitoring (reaktiv):
- Wartet auf bekannte Angriffsmuster (Signaturen, Regeln)
- Dwell Time: durchschnittlich 197 Tage bis zur Entdeckung (IBM 2024)
- Erkennt: bekannte Angriffe, laute Angriffe
- Blind für: neue Techniken, langsame/stille Angreifer
Problem: APT-Gruppe nutzt legitime Windows-Tools (Living off the Land) → Keine Signaturen → kein Alert! Angreifer kann Monate im Netz bleiben, Daten exfiltrieren.
Threat Hunting (proaktiv):
- Analyst nimmt Hypothese: “Ich glaube, ein Angreifer verwendet PowerShell für Lateral Movement”
- Sucht systematisch in Telemetrie-Daten nach Beweisen
- Findet: auch dann, wenn kein Alert ausgelöst wurde
Ergebnis guter Hunts:
- Angreifer gefunden → Incident Response einleiten
- Kein Angreifer → Neue SIEM-Regel erstellen (Hunt → Detection!)
- Blindspots identifiziert → Datenerfassung verbessern
Hunt Maturity Model (SQRRL)
| Level | Beschreibung |
|---|---|
| Level 0 | Kein Hunting (nur reaktiv, Alert-basiert) |
| Level 1 | Minimal (seltene, ad-hoc Hunts) |
| Level 2 | Prozedural (reproduzierbare Hunt-Prozeduren) |
| Level 3 | Innovative (eigene Techniken, ML-unterstützt) |
| Level 4 | Leading (automatisierte Hunting-Pipelines) |
Hypothesen-Entwicklung mit MITRE ATT&CK
MITRE ATT&CK Framework
- 14 Taktiken (Phasen): Reconnaissance, Initial Access, Execution…
- 200+ Techniken pro Taktik
- Sub-Techniken: konkrete Implementierungen
- Gruppen: welche APTs nutzen welche Techniken?
Hypothesen-Quellen
- MITRE ATT&CK: “Was würden Angreifer tun?”
- Threat Intelligence: “Was tun APTs in unserer Branche?”
- Aktuelle Reports: “Was wurde letzte Woche von Incident-Response-Teams gesehen?”
- Hunt-Ergebnisse: “Was haben wir beim letzten Hunt übersehen?”
Hypothesen-Beispiele
Hypothese 1: Kerberoasting
- ATT&CK: T1558.003
- “Angreifer fordert Kerberos-Service-Tickets für Offline-Cracking an”
- Daten: Windows Security Event 4769 (Kerberos Service Ticket Request)
Hypothese 2: PowerShell-basierte Ausführung
- ATT&CK: T1059.001
- “Malware nutzt PowerShell für Downloader oder Lateral Movement”
- Daten: Process Creation Events (Event 4688), PowerShell-Scriptblock-Logging
Hypothese 3: Living off the Land (LoLBins)
- ATT&CK: T1218 (System Binary Proxy Execution)
- “Angreifer missbraucht legitime Windows-Tools für böswillige Zwecke”
- Verdächtige Prozesse: certutil.exe, regsvr32.exe, mshta.exe, wscript.exe
Hypothese 4: Datenexfiltration via DNS
- ATT&CK: T1048.003
- “Daten werden über DNS-Anfragen nach aussen geschleust”
- Daten: DNS-Logs (sehr lange Subdomains, häufige TXT-Record-Anfragen)
Hypothesen-Qualität
Gut: “Angreifer nutzt certutil.exe um Payload herunterzuladen” - spezifisch, messbar, MITRE-referenziert
Schlecht: “Angreifer macht irgendwas böses” - zu breit, keine Suchanleitung
Datenquellen und Telemetrie
Windows Event Logs - kritische Events
| Event-ID | Bedeutung | Hunting-Relevanz |
|---|---|---|
| 4624 | Erfolgreicher Login (Anmeldungstyp beachten!) | Type 3 = Network, Type 10 = Remote Interactive (RDP) |
| 4625 | Fehlgeschlagener Login | Brute Force erkennen |
| 4688 | Prozess erstellt | Command Line muss geloggt sein! |
| 4689 | Prozess beendet | - |
| 4698 | Scheduled Task erstellt | häufige Persistenz-Methode |
| 4720 | Benutzer erstellt | - |
| 4732 | Benutzer zur Gruppe hinzugefügt | Privilegien-Eskalation! |
| 4769 | Kerberos Service Ticket Request | Kerberoasting! |
| 7045 | Neuer Service installiert | Persistence! |
Muss aktiviert sein:
- Process Command Line Logging (4688: vollständige Cmdline)
- PowerShell Scriptblock Logging (Event 4104 in PS-Log)
- PowerShell Module Logging
- Sysmon: process creation, network connections, registry changes
EDR-Telemetrie
- CrowdStrike Falcon, SentinelOne, Microsoft MDE
- Sehr granular: jede Prozess-Erstellung, jede Netzwerkverbindung
- API-Zugriff für Hunt-Queries
- CrowdStrike: Events Data Dictionary (über 50 Event-Typen)
DNS-Logs
- Welche Domains wurden aufgelöst?
- Ungewöhnlich lange Subdomains = DNS-Exfiltration?
- Anfragen an bekannte Malware-C2-Domains
- Interne Systeme die externe DNS-Server nutzen (verdächtig!)
NetFlow / Network Traffic
- Welche IP kommuniziert mit wem?
- Datenvolumen: grosse Uploads nach aussen?
- Beaconing: regelmäßige Verbindungen (C2-Kommunikation)
- Ungewöhnliche Ports oder Protokolle
Proxy-Logs
- HTTP/HTTPS-Anfragen (mit SSL-Inspection)
- User Agent Strings (verdächtige oder unbekannte)
- Anfragen an frisch registrierte Domains (< 30 Tage alt)
Hunt-Techniken
Stack Counting
Frage: Welche Werte sind selten? (Outlier = verdächtig!)
Beispiel: Parent Process von PowerShell
- Normal: explorer.exe, cmd.exe, powershell.exe
- Verdächtig: word.exe → powershell.exe (Macro-Ausführung!)
- KRITISCH: svchost.exe → powershell.exe (kein legitimer Grund!)
// KQL (Kusto Query Language / Microsoft Sentinel):
DeviceProcessEvents
| where FileName =~ "powershell.exe"
| summarize count() by InitiatingProcessFileName
| order by count_ asc
// Kleinste count_ = seltenste Parent = verdächtigste!
Frequency Analysis
Wie oft verbindet sich Host X mit Domain Y?
- Beaconing: stabile Intervalle = C2!
- Normal: unregelmässige Verbindungen
- C2: alle 60 Sekunden (typischer Beacon-Interval)
-- DNS-Beaconing-Erkennung (Velociraptor):
SELECT timestamp, DNS, count(*) as requests
FROM dns_logs
WHERE timestamp > now() - 24h
GROUP BY DNS
HAVING requests > 100 -- Häufige Anfragen an selbe Domain
Clustering
- Ähnliche Aktivitäten gruppieren
- Anomalien durch Ausreisser erkennen
- ML-basiert: Isolationswald, DBSCAN
- Einsatz: User Behavior Analytics (UEBA)
TTP-based Hunting
Gezielt nach MITRE-Technik suchen.
Beispiel: T1218.011 Rundll32 - “Angreifer nutzt rundll32.exe um DLL auszuführen”
// Sentinel: Verdächtige Rundll32-Ausführungen
DeviceProcessEvents
| where FileName =~ "rundll32.exe"
| where ProcessCommandLine has_any ("javascript:", "vbscript:", "http")
| project Timestamp, DeviceName, ProcessCommandLine
Hunt-Szenarien und Playbooks
Hunt 1: PowerShell Downloader
Hypothese: Angreifer lädt Payload mit PowerShell herunter
DeviceProcessEvents
| where FileName =~ "powershell.exe"
| where ProcessCommandLine has_any (
"DownloadString", "DownloadFile", "IEX", "Invoke-Expression",
"WebClient", "Net.WebClient", "Start-BitsTransfer",
"bitsadmin", "certutil", "-enc", "-encoded"
)
| where InitiatingProcessFileName !in~ ("powershell.exe", "pwsh.exe")
| project Timestamp, DeviceName, AccountName, ProcessCommandLine
Triage:
- PowerShell aus Word = fast sicher Malware
- PowerShell aus Skript-Verwaltung = möglicherweise legitim (prüfen!)
Hunt 2: Kerberoasting Detektion
Hypothese: Angreifer fordert Service Tickets für Offline-Cracking an
// Verdächtige Service Ticket Requests:
// - Encryption Type RC4 (0x17): Veraltet, für Cracking bevorzugt!
// - Viele Tickets von einem Host kurz hintereinander
SecurityEvent
| where EventID == 4769
| where TicketEncryptionType == "0x17" // RC4 = verdächtig!
| where ServiceName !endswith "$" // Nicht Maschinen-Accounts
| summarize count() by Account, ServiceName, Computer
| where count_ > 5 // Mehrere Tickets = Kerberoasting!
Hunt 3: DNS-Tunneling
Hypothese: Daten werden via DNS-Anfragen exfiltriert
// Lange Subdomains (DNS-Tunnel-Indikator):
// Normal: www.google.com (kurz)
// Tunnel: aGVsbG8gd29ybGQ=.evil.com (Base64 in Subdomain!)
DnsEvents
| where SubType == "LookupQuery"
| extend SubdomainLength = strlen(extract("^([^.]+)", 1, Name))
| where SubdomainLength > 40 // Verdächtig lange Subdomain
| summarize count() by ClientIP, Name
| order by count_ desc
Hunt 4: Lateral Movement via SMB
Hypothese: Angreifer bewegt sich per Pass-the-Hash über SMB
SecurityEvent
| where EventID == 4624
| where LogonType == 3 // Netzwerk-Login
| where AuthenticationPackageName == "NTLM" // PtH nutzt NTLM!
| where TargetUserName != "ANONYMOUS LOGON"
| summarize count() by IpAddress, TargetUserName
| where count_ > 5 // Ein Quell-IP versucht viele Ziele
Toolchain für Threat Hunter
Velociraptor
- Open Source Endpoint-Visibility und Hunting
- Agent auf Endpoints: artefaktbasierte Abfragen
- VQL (Velociraptor Query Language)
- Live Response: auf Verdachts-Maschine direkt abfragen
-- Beispiel: alle autostart entries auf allen Hosts:
SELECT * FROM Artifact.Windows.Sys.Users()
Microsoft Sentinel (Cloud-SIEM)
- KQL: mächtige Query-Sprache
- Hunting-Workbooks: strukturierte Hunt-Leitfaden
- Notebooks: Jupyter für ML-basiertes Hunting
- Bookmarks: interessante Findings speichern und verfolgen
Elastic Security (ELK Stack)
- EQL (Event Query Language): sequenzielle Abfragen
- Timelines: Events zusammenführen
- Hunt Queries: Community-basiert
// EQL: PowerShell durch Office-Anwendung:
sequence by process.parent.entity_id
[process where process.name == "winword.exe"]
[process where process.name == "powershell.exe"]
Jupyter Notebooks
- ML-unterstütztes Hunting
- Pandas, Scikit-Learn für Anomalie-Erkennung
- MSTIC: Microsoft Threat Intelligence Notebooks (GitHub)
- Visualisierung: Matplotlib, Plotly
MITRE Caldera (Adversary Emulation)
- Automatisierte Angreifer-Emulation nach ATT&CK
- Hunt-Validierung: “Würden wir diesen Angriff erkennen?”
- Red Team Automation
Nächster Schritt
Unsere zertifizierten Sicherheitsexperten beraten Sie zu den Themen aus diesem Artikel — unverbindlich und kostenlos.
Kostenlos · 30 Minuten · Unverbindlich
