Skip to content

4104script blocksPSReadLinetranscripts

PowerShell Parser

Script Block Logging (Ereignis 4104) aus der .evtx zusammensetzen, das klassische PowerShell-Protokoll, PSReadLine-Verlauf und Transkripte auslesen sowie kodierte Befehle und Obfuskation dekodieren — alles im Browser mit WebAssembly. Es wird nichts hochgeladen.

PowerShell-Protokolle, Verlauf und Transkripte hier ablegen

Microsoft-Windows-PowerShell%4Operational.evtx und Windows PowerShell.evtx, ConsoleHost_history.txt und PowerShell_transcript.*.txt. Ordner und ZIP-Triage-Sammlungen (KAPE, Velociraptor) funktionieren unverändert.

Ein synthetischer Datensatz aus einem fiktiven Angriff — keine echten Daten. Tipp: Öffnen Sie das markierte 4104-Ereignis und nutzen Sie die Deobfuskations-Ansicht unten.

100 % clientseitig: Dateien werden per WebAssembly im Browser geparst und nie hochgeladen. Es wird niemals etwas ausgeführt.

So erhalten Sie Ihre Daten

Vollständiger Sicherungsleitfaden

Exportieren Sie die PowerShell-Ereignisprotokolle, kopieren Sie PSReadLine-Verlauf und Transkripte aller Konten und legen Sie das Ergebnis hier ab. Auf einem laufenden Windows-Host dauert das etwa zwei Minuten.

  1. Protokolle exportieren und Verlauf / Transkripte kopieren
  2. Ordner oder ZIP hier ablegen
  3. Im Browser geparst, nie hochgeladen

In Windows PowerShell als Administrator einfügen (Systemlaufwerk C:). Der Befehl exportiert das operative und das klassische PowerShell-Protokoll (sowie das Protokoll von PowerShell 7, falls vorhanden) und kopiert anschließend PSReadLine-Verlauf und Transkripte aller Konten, wobei der Pfad Users\<name>\ erhalten bleibt, damit jede Datei zugeordnet werden kann.

PowerShell · Admin
New-Item -ItemType Directory -Force C:\triage\logs | Out-Null
wevtutil epl Microsoft-Windows-PowerShell/Operational "C:\triage\logs\Microsoft-Windows-PowerShell%4Operational.evtx" /ow:true
wevtutil epl "Windows PowerShell" "C:\triage\logs\Windows PowerShell.evtx" /ow:true
wevtutil epl PowerShellCore/Operational "C:\triage\logs\PowerShellCore%4Operational.evtx" /ow:true 2>$null
robocopy C:\Users C:\triage\Users *_history.txt PowerShell_transcript.*.txt /S /XJ /R:0 /W:0 /NP /NDL

Ergebnis: C:\triage\logs\*.evtx sowie C:\triage\Users\<user>\… mit den Verlaufs- und Transkriptdateien. Legen Sie den gesamten Ordner C:\triage hier ab (per Drag & Drop oder über „Ordner auswählen“).

Analyse auf einem anderen Rechner? Packen Sie alles mit dem in Windows 10 1803 und neuer integrierten tar.exe in eine ZIP-Datei:

PowerShell / cmd
tar -a -c -f C:\triage\powershell.zip -C C:\triage logs Users

Stolperfallen

  • Script Block Logging (4104) ist standardmäßig deaktiviert, bis es per Richtlinie aktiviert wird; selbst dann protokolliert Windows als verdächtig eingestufte Blöcke auf Warnstufe. Das klassische Windows-PowerShell-Protokoll und der PSReadLine-Verlauf sind standardmäßig aktiv.
  • Der EventLog-Dienst hält die Protokolle geöffnet, daher schlägt ein einfaches Kopieren fehl. Verwenden Sie wevtutil epl, KAPE oder Velociraptor.
  • Der PSReadLine-Verlauf hat keine Zeitstempel und kann Wochen älter sein als die Protokolle; betrachten Sie die Reihenfolge als einzige Chronologie und gleichen Sie sie mit den Ereignisprotokollen ab.
  • Transkripte speichern die lokale Uhrzeit des Hosts ohne Zeitzone: Notieren Sie die Zeitzone des Systems, wenn Sie mit UTC-Ereignisprotokollen korrelieren.

Deobfuskations-Ansicht

Fügen Sie eine beliebige Befehlszeile, einen -EncodedCommand-String oder einen obfuskierten Blob ein. Er wird Ebene für Ebene dekodiert (base64/UTF-16LE, gzip/deflate, Zeichencodes, Verkettung, Formatoperator, Backticks) und als inerter Text angezeigt — es wird nichts ausgeführt.

Was PowerShell-Protokolle aufzeichnen

PowerShell schreibt mehrere unabhängige Spuren. Script Block Logging (Ereignis 4104 im Protokoll Microsoft-Windows-PowerShell/Operational) zeichnet den tatsächlich ausgeführten Code auf — den deobfuskierten Skripttext, bei langen Blöcken auf mehrere 4104-Ereignisse verteilt. Die Modulprotokollierung (4103) erfasst Details zur Pipeline-Ausführung. Das klassische Protokoll "Windows PowerShell" zeichnet den Lebenszyklus von Engine und Providern auf (400/403/600) und, per Richtlinie, die Pipeline-Ausführung (800).

Außerhalb der Ereignisprotokolle führt PSReadLine einen Klartextverlauf aller in einer interaktiven Konsole eingegebenen Befehle, und Start-Transcript (oder die Transkriptionsrichtlinie) schreibt ein vollständiges Sitzungstranskript in eine Textdatei. Zusammen gehören sie zu den aufschlussreichsten Aufzeichnungen darüber, was ein Administrator — oder ein Angreifer — auf einem Windows-Host getan hat.

Speicherorte

  • C:\Windows\System32\winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx — Script Block Logging (4104) und Modulprotokollierung (4103).
  • C:\Windows\System32\winevt\Logs\Windows PowerShell.evtx — klassische Engine-/Provider-/Pipeline-Ereignisse (400/403/600/800).
  • C:\Users\<user>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt — interaktiver Befehlsverlauf, pro Benutzer.
  • C:\Users\<user>\Documents\PowerShell_transcript.<host>.<random>.<timestamp>.txt — Transkripte, sofern aktiviert.

Warum sie für eine Untersuchung wichtig sind

  • Script Block Logging erfasst den Code so, wie PowerShell ihn gesehen hat; ein -EncodedCommand oder ein obfuskierter Einzeiler wird daher in expandierter Form aufgezeichnet — dieser Parser dekodiert zudem die kodierten und komprimierten Ebenen für Sie.
  • Das Zusammensetzen von 4104 anhand von ScriptBlockId und MessageNumber/MessageTotal rekonstruiert lange Skripte, die Windows auf viele Ereignisse verteilt hat, und markiert fehlende Teile.
  • PSReadLine-Verlauf und Transkripte erfassen interaktive Aktivität, die möglicherweise nie in einer Skriptdatei landet, einschließlich Tippfehlern und abgebrochener Befehle.
  • Befunde weisen auf Download-Cradles, AMSI-/ETW-Umgehungen, Manipulation von Protokollierung und Defender, Umgehung der Ausführungsrichtlinie, versteckte Fenster, Engine-Downgrades und gängige Obfuskation hin — als zu prüfende Hinweise, nicht als Urteile.

Einschränkungen

  • Script Block Logging ist standardmäßig deaktiviert; ohne es sehen Sie möglicherweise nur Blöcke auf Warnstufe, die Windows selbst markiert hat, sowie das klassische Protokoll und den Verlauf.
  • Der PSReadLine-Verlauf hat keine Zeitstempel: Die Reihenfolge ist die einzige Chronologie, und er kann deutlich älter sein als die Protokolle.
  • Transkriptzeiten entsprechen der lokalen Uhr des Hosts ohne Zeitzone; Zeiten in Ereignisprotokollen sind UTC.
  • Protokolle werden überschrieben und können gelöscht werden; dieses Tool markiert Löschbefehle, kann aber bereits entfernte Ereignisse nicht wiederherstellen.

So sichern Sie die Dateien

  • Exportieren Sie die beiden PowerShell-Ereignisprotokolle mit wevtutil epl (oder sammeln Sie alle .evtx mit KAPE / Velociraptor) und kopieren Sie PSReadLine-Verlauf und Transkripte jedes Benutzers.
  • Der EventLog-Dienst hält die Protokolle auf einem laufenden Host geöffnet; verwenden Sie daher einen Export statt einer einfachen Kopie.
  • Behalten Sie die Ordnerstruktur Users\<name>\ bei, damit Verlauf und Transkripte dem richtigen Konto zugeordnet werden.

FAQ

Werden meine Dateien irgendwohin hochgeladen?

Nein. Der Parser — einschließlich des .evtx-Readers — ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Es gibt keinen Upload-Endpunkt, und nichts aus einem Skript wird jemals ausgeführt.

Dekodiert das Tool -EncodedCommand und obfuskierte Skripte?

Ja. Base64-kodierte -EncodedCommand-Strings werden aus UTF-16LE dekodiert, und weitere Ebenen — gzip/deflate-Payloads, [char]-Codes, String-Verkettung, der Formatoperator -f und Backtick-Escaping — werden aufgelöst und als inerter Text angezeigt. Das Skript wird nie ausgeführt.

Wie wird ein Skriptblock rekonstruiert, der sich über mehrere Ereignisse erstreckt?

Windows teilt einen langen Skriptblock auf mehrere 4104-Ereignisse mit derselben ScriptBlockId auf, die jeweils MessageNumber von MessageTotal enthalten. Der Parser gruppiert nach ScriptBlockId, sortiert nach MessageNumber, fügt den Text zusammen und markiert fehlende Teile.

Was, wenn Script Block Logging deaktiviert war?

Sie sehen weiterhin das klassische Windows-PowerShell-Protokoll (Engine- und Pipeline-Ereignisse), den PSReadLine-Verlauf und eventuelle Transkripte. Außerdem protokolliert Windows als verdächtig eingestufte Skriptblöcke auch bei deaktivierter vollständiger Protokollierung auf Warnstufe, und diese werden ebenfalls erfasst.

Welche Dateien sollte ich sichern?

Microsoft-Windows-PowerShell%4Operational.evtx und Windows PowerShell.evtx aus winevt\Logs, die ConsoleHost_history.txt jedes Benutzers sowie alle PowerShell_transcript.*.txt. Der integrierte Sicherungsleitfaden bietet Exporte mit einem einzigen Befehl.

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.
Was die PSReadLine-Verlaufsdatei aufzeichnet, wo sie liegt, warum sie keine Zeitstempel hat und wie man sie – samt ihren Grenzen – in einer Untersuchung nutzt.