Was macht Sicherheitslog-Analyse mit Splunk?
Wann verwenden
- Untersuchung eines Sicherheitsvorfalls, der Korrelation über mehrere Logquellen erfordert
- Jagd nach Angreiferaktivitäten mithilfe bekannter TTPs und IOCs
- Erstellung von Erkennungsregeln für bestimmte Angriffsmuster
- Rekonstruktion einer Vorfall-Zeitachse aus unterschiedlichen Logquellen
- Analyse von Authentifizierungsanomalien, Lateral Movement oder Datenexfiltrationsmustern
Nicht verwenden für Echtzeit-Paketanalyse; dafür Wireshark oder Zeek für die vollständige Paketerfassung nutzen.
Voraussetzungen
- Splunk Enterprise oder Splunk Cloud mit installierter Enterprise Security (ES)-App
- Ingestierte Logquellen: Windows-Ereignisprotokolle (via Splunk Universal Forwarder oder WEF), Firewall, Proxy, DNS, EDR, E-Mail-Gateway
- Konfigurierte Splunk CIM (Common Information Model)-Datenmodelle für normalisierte Feldnamen
- SPL-Kenntnisse auf mittlerem Niveau oder höher
- Rollenbasierte Zugriffssteuerung mit
search- undaccelerate_search-Fähigkeiten in Splunk
Workflow
Schritt 1: Untersuchungsbereich in Splunk festlegen
Suchparameter basierend auf Triage-Daten des Vorfalls definieren:
| Untersuchungsbereich festlegen
index=windows OR index=firewall OR index=proxy
earliest="2025-11-14T00:00:00" latest="2025-11-16T00:00:00"
(host="WKSTN-042" OR src_ip="10.1.5.42" OR user="jsmith")
| stats count by index, sourcetype, host
| sort -count
Diese Abfrage ermittelt, welche Logquellen im Untersuchungszeitraum und für die betroffenen Assets relevante Daten enthalten.
Schritt 2: Authentifizierungsereignisse analysieren
Verdächtige Authentifizierungsmuster mithilfe der Windows-Sicherheitsereignisprotokolle untersuchen:
| Brute-Force und Credential Stuffing erkennen
index=windows sourcetype="WinEventLog:Security" EventCode=4625
earliest=-24h
| stats count as fehlgeschlagene_versuche, values(src_ip) as quell_ips,
dc(src_ip) as eindeutige_quellen by TargetUserName
| where fehlgeschlagene_versuche > 10
| sort -fehlgeschlagene_versuche
| Pass-the-Hash erkennen (Anmeldetyp 9 - NewCredentials)
index=windows sourcetype="WinEventLog:Security" EventCode=4624
Logon_Type=9
| table _time, host, TargetUserName, src_ip, LogonProcessName
| Lateral Movement via RDP erkennen
index=windows sourcetype="WinEventLog:Security" EventCode=4624
Logon_Type=10
| stats count, values(host) as ziele by TargetUserName, src_ip
| where count > 3
| sort -count
Schritt 3: Prozessausführung verfolgen
Sysmon-Protokolle zur Rekonstruktion von Prozessausführungsketten verwenden:
| Prozesserstellung mit Elternkette (Sysmon Ereignis-ID 1)
index=sysmon EventCode=1 host="WKSTN-042"
earliest="2025-11-15T14:00:00" latest="2025-11-15T15:00:00"
| table _time, ParentImage, ParentCommandLine, Image, CommandLine, User, Hashes
| sort _time
| Verdächtige PowerShell-Ausführung erkennen
index=sysmon EventCode=1 Image="*\\powershell.exe"
(CommandLine="*-enc*" OR CommandLine="*-encodedcommand*"
OR CommandLine="*downloadstring*" OR CommandLine="*iex*")
| table _time, host, User, ParentImage, CommandLine
| sort _time
| LSASS-Credential-Dumping erkennen
index=sysmon EventCode=10 TargetImage="*\\lsass.exe"
GrantedAccess=0x1010
| table _time, host, SourceImage, SourceUser, GrantedAccess
Schritt 4: Netzwerkaktivität analysieren
Netzwerkprotokolle mit Endpunkt-Ereignissen korrelieren:
| C2-Beaconing-Muster erkennen
index=proxy OR index=firewall dest_ip="185.220.101.42"
| timechart span=1m count by src_ip
| where count > 0
| DNS-Tunneling erkennen (hohe Abfrageanzahl zu einer einzelnen Domain)
index=dns
| rex field=query "(?<subdomain>[^\.]+)\.(?<domain>[^\.]+\.[^\.]+)$"
| stats count, avg(len(query)) as avg_abfrage_laenge by domain, src_ip
| where count > 500 AND avg_abfrage_laenge > 40
| sort -count
| Große Datentransfers erkennen (potenzielle Exfiltration)
index=proxy action=allowed
| stats sum(bytes_out) as gesamt_bytes by src_ip, dest_ip, dest_host
| eval gesamt_MB=round(gesamt_bytes/1024/1024,2)
| where gesamt_MB > 100
| sort -gesamt_MB
Schritt 5: Ereignis-Chronologie erstellen
Eine einheitliche Zeitachse über alle Logquellen hinweg rekonstruieren:
| Einheitliche Vorfall-Zeitachse
index=windows OR index=sysmon OR index=proxy OR index=firewall
(host="WKSTN-042" OR src_ip="10.1.5.42" OR user="jsmith")
earliest="2025-11-15T14:00:00" latest="2025-11-15T16:00:00"
| eval ereignis_zusammenfassung=case(
sourcetype=="WinEventLog:Security" AND EventCode==4624, "Anmeldung: ".TargetUserName." von ".src_ip,
sourcetype=="WinEventLog:Security" AND EventCode==4625, "Fehlgeschlagene Anmeldung: ".TargetUserName,
sourcetype=="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" AND EventCode==1,
"Prozess: ".Image." von ".User,
sourcetype=="proxy", "Web: ".http_method." ".url,
1==1, sourcetype.": ".EventCode)
| table _time, sourcetype, host, ereignis_zusammenfassung
| sort _time
Schritt 6: Erkennungsregeln erstellen
Untersuchungsergebnisse in dauerhafte Splunk-Korrelationssuchen umwandeln:
| Korrelationssuche: Von Office-Anwendungen gestartete PowerShell
index=sysmon EventCode=1
Image="*\\powershell.exe"
(ParentImage="*\\winword.exe" OR ParentImage="*\\excel.exe"
OR ParentImage="*\\outlook.exe")
| eval severity="high"
| eval mitre_technique="T1059.001"
| collect index=notable_events
Schlüsselkonzepte
| Begriff | Definition |
|---|---|
| SPL (Search Processing Language) | Splunks Abfragesprache zum Suchen, Filtern, Transformieren und Visualisieren von Maschinendaten |
| CIM (Common Information Model) | Splunks Feldnormalisierungsstandard, der herstellerspezifische Feldnamen für quellenübergreifende Abfragen auf gemeinsame Namen abbildet |
| Notable Event | Ein Ereignis in Splunk Enterprise Security, das basierend auf einem Korrelationssuchen-Treffer zur Analystenprüfung markiert wurde |
| Datenmodell | Strukturierte Darstellung indizierter Daten in Splunk, die beschleunigte Suchen und pivotbasierte Analysen ermöglicht |
| Sourcetype | Klassifikationsbezeichnung in Splunk, die das Format und die Parsing-Regeln für einen bestimmten Logtyp definiert |
| Korrelationssuche | Geplante Splunk-Suche, die kontinuierlich läuft und bei Erfüllung der Bedingungen Notable Events generiert |
| Timechart | SPL-Befehl zur Erstellung von Zeitreihenvisualisierungen zur Identifizierung von Mustern, Anomalien und Trends |
Werkzeuge & Systeme
- Splunk Enterprise Security (ES): Premium-SIEM-Anwendung mit Korrelationssuchen, risikobasierter Alarmierung und Untersuchungs-Workbench
- Splunk SOAR: Orchestrierungsplattform, integriert in Splunk ES, für automatisierte Reaktions-Playbooks
- Sysmon: Microsoft-Systemüberwachungstool zur detaillierten Prozess-, Netzwerk- und Dateiänderungstelemetrie, die in Splunk aufgenommen wird
- Splunk Attack Analyzer: Automatisierte Bedrohungsanalyse, die verdächtige Dateien und URLs detoniert und Ergebnisse in Splunk einspeist
- BOSS of the SOC (BOTS): SANS/Splunk-Trainingsdatensatz zum Üben von SPL-Abfragen zur Vorfalluntersuchung
Häufige Szenarien
Szenario: Untersuchung von Credential Stuffing mit anschließender Account-Übernahme
Kontext: Die Sicherheitsoperation erhält einen Alarm über mehrere erfolgreiche Anmeldungen bei einem einzelnen Konto von geografisch verteilten IP-Adressen innerhalb eines 30-Minuten-Fensters.
Vorgehen:
- Ereignis-ID 4624 für das betroffene Konto abfragen, um alle Anmeldequellen und -zeitpunkte zu erfassen
- Anmelde-IPs mithilfe einer Splunk-Lookup-Tabelle mit Threat-Intelligence-Feeds korrelieren
- Proxy-Protokolle auf verdächtige Aktivitäten der authentifizierten Sitzungen prüfen
- Nach Lateral Movement vom kompromittierten Konto suchen (Ereignis-ID 4624 Typ 3 auf andere Hosts)
- Eine Zeitachse mit Credential-Stuffing-Versuchen, erfolgreicher Anmeldung und Aktivitäten nach der Kompromittierung erstellen
- Eine Korrelationssuche erstellen, um ähnliche Muster auf anderen Konten zu erkennen
Fallstricke:
- Nur die letzten 24 Stunden durchsuchen, obwohl das Credential Stuffing über Wochen stattgefunden haben könnte
- Nicht auf VPN-Protokolle prüfen, die dasselbe Konto mit unmöglichen Reiseentfernungen zeigen könnten
- Zeitstempel nicht über Logquellen in verschiedenen Zeitzonen hinweg normalisieren
Ausgabeformat
SPLUNK UNTERSUCHUNGSBERICHT
============================
Vorfall: INC-2025-1547
Analyst: [Name]
Untersuchungszeitraum: 2025-11-14 00:00 UTC - 2025-11-16 00:00 UTC
SUCHBEREICH
Indizes: windows, sysmon, proxy, firewall, dns
Hosts: WKSTN-042, SRV-FILE01
Benutzer: jsmith, svc-backup
Quell-IPs: 10.1.5.42, 10.1.10.15
WESENTLICHE ERKENNTNISSE
1. [Zeitstempel] - Erste Kompromittierung durch Phishing (Sysmon Ereignis 1)
2. [Zeitstempel] - C2 aufgebaut (Proxy-Logs, Beacon-Muster erkannt)
3. [Zeitstempel] - Credential-Diebstahl (Sysmon Ereignis 10, LSASS-Zugriff)
4. [Zeitstempel] - Lateral Movement zu SRV-FILE01 (Ereignis 4624 Typ 3)
5. [Zeitstempel] - Datenbereitstellung und Exfiltration (Proxy bytes_out Anomalie)
VERWENDETE SPL-ABFRAGEN
[nummerierte Liste der wichtigsten Abfragen mit Beschreibungen]
ERKANNTE ERKENNUNGSLÜCKEN
- Kein Sysmon auf SRV-FILE01 bereitgestellt (blinder Fleck)
- Proxy-Logs fehlt SSL-Inspektion für C2-Domain
- PowerShell-ScriptBlock-Protokollierung nicht aktiviert
EMPFOHLENE ERKENNUNGEN
1. Korrelationssuche für von Office gestartete PowerShell
2. Schwellwertalarm für LSASS-Zugriffsmuster
3. Verhaltensregel für Beacon-Intervall-Netzwerkverkehr