Skip to content

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.

Veröffentlicht am 3 Min. Lesezeit

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-IDProtokollZeichnet auf
4104OperationalSkriptblockprotokollierung: der kompilierte, deobfuskierte Code
4103OperationalModulprotokollierung: Details der Pipeline-Ausführung und gebundene Parameter
400Windows PowerShellEngine-Status → Available (ein Host wurde gestartet)
403Windows PowerShellEngine-Status → Stopped (ein Host wurde beendet)
600Windows PowerShellProvider-Lebenszyklus (z. B. Registry, Certificate)
800Windows PowerShellDetails 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.

Verwandte Artikel

Was Ereignis-ID 4104 aufzeichnet, wie Windows lange Skriptblöcke auf mehrere Ereignisse verteilt, warum Blöcke auf Warnstufe auch ohne vollständige Protokollierung erscheinen und wie man sie in einem Fall auswertet.
Schritt für Schritt: PowerShell-.evtx-Protokolle, PSReadLine-Verlauf und Transkripte in einem kostenlosen Browser-Viewer öffnen, Skriptblöcke zusammensetzen, kodierte Befehle dekodieren und als CSV oder JSON exportieren.
Wie PowerShell-Transkripte aufgebaut sind, was der Header aufzeichnet, wie Befehlszeitstempel mit -IncludeInvocationHeader funktionieren und wie man Transkripte untersucht.