PowerShell-Ereignisprotokolle in der Forensik: Alle relevanten IDs
Eine Übersicht der forensisch relevanten PowerShell-Ereignis-IDs im Operational-Protokoll und im klassischen Windows-PowerShell-Protokoll – 4104, 4103, 400, 403, 600, 800 – und was jede einzelne belegt.
Kurzfassung. Forensische PowerShell-Spuren befinden sich in zwei Ereignisprotokollen. Das moderne Protokoll Microsoft-Windows-PowerShell/Operational enthält 4104 (Skriptblockprotokollierung) und 4103 (Modulprotokollierung). Das klassische Protokoll Windows PowerShell enthält 400/403 (Start/Stopp der Engine), 600 (Provider) und 800 (Pipeline-Ausführung). Sichern Sie beide und werten Sie sie gemeinsam aus. Öffnen Sie den Parser, um sie in einer Zeitleiste zusammenzuführen.
Die beiden Protokolle
PowerShell ist älter als die modernen Ereignisprotokollkanäle; daher behielt es sein ursprüngliches klassisches Protokoll „Windows PowerShell“ und erhielt später ein providerspezifisches Operational-Protokoll. Eine Untersuchung benötigt beide:
| Ereignis-ID | Protokoll | Zeichnet auf |
|---|---|---|
| 4104 | Operational | Skriptblockprotokollierung: der kompilierte, deobfuskierte Code |
| 4103 | Operational | Modulprotokollierung: Details der Pipeline-Ausführung und gebundene Parameter |
| 400 | Windows PowerShell | Engine-Status → Available (ein Host wurde gestartet) |
| 403 | Windows PowerShell | Engine-Status → Stopped (ein Host wurde beendet) |
| 600 | Windows PowerShell | Provider-Lebenszyklus (z. B. Registry, Certificate) |
| 800 | Windows PowerShell | Details der Pipeline-Ausführung |
Die klassischen Ereignisse lesen
Die Ereignisse 400 und 403 markieren die Lebensdauer eines PowerShell-Hosts. Ihr Detailblock enthält HostName, HostApplication (die vollständige Befehlszeile und oft das nützlichste Feld – hier tauchen -EncodedCommand oder -WindowStyle Hidden auf), EngineVersion und RunspaceId. Eine HostApplication, die powershell.exe -Version 2 startet, ist ein klassischer Downgrade-Versuch, um der Protokollierung von v5 und AMSI zu entgehen.
Ereignis 800 zeichnet die Befehlszeile einer Pipeline und, je nach Konfiguration, Details zur Parameterbindung auf. Auf Systemen ohne Skriptblockprotokollierung ist es oft der beste Nachweis dessen, was ausgeführt wurde. Der PowerShell Parser zerlegt die Key=Value-Detailblöcke von 400/600/800 in Felder, die Sie sortieren und exportieren können.
Was ist standardmäßig aktiviert?
Das klassische Protokoll Windows PowerShell (400/600/800) ist ab Werk aktiviert. Modulprotokollierung (4103) und vollständige Skriptblockprotokollierung (4104) werden per Gruppenrichtlinie unter Administrative Vorlagen → Windows-Komponenten → Windows PowerShell gesteuert (Microsoft). Das Fehlen von 4104 bedeutet nicht, dass nichts passiert ist – prüfen Sie 800 und die 4104-Blöcke auf Warnstufe, die PowerShell von sich aus protokolliert.
Sichern und analysieren
Lesen Sie, wie Sie PowerShell-Protokolle, Verlauf und Transkripte sichern, und analysieren Sie sie anschließend im Browser, ohne etwas zu installieren.
FAQ
In welche Protokolle schreibt PowerShell?
In zwei. Microsoft-Windows-PowerShell/Operational enthält die modernen Ereignisse (4103 Modulprotokollierung, 4104 Skriptblockprotokollierung). Das klassische Protokoll Windows PowerShell enthält den Lebenszyklus von Engine und Providern (400/403/600) sowie die Pipeline-Ausführung (800).
Was ist der Unterschied zwischen 4103 und 4104?
4104 (Skriptblockprotokollierung) zeichnet den kompilierten Code auf; 4103 (Modulprotokollierung) zeichnet Details der Pipeline-Ausführung auf – die Befehle und gebundenen Parameter, wie sie ausgeführt wurden. Beide ergänzen sich.
Ist davon etwas standardmäßig aktiviert?
Das klassische Protokoll Windows PowerShell (400/600/800) ist standardmäßig aktiv. Modulprotokollierung (4103) und vollständige Skriptblockprotokollierung (4104) erfordern eine Richtlinie, wobei PowerShell verdächtige Blöcke auch ohne sie auf Warnstufe protokolliert.