PowerShell Event-ID 4104: Skriptblockprotokollierung
- Event-ID
- 4104
- Protokoll
- Microsoft-Windows-PowerShell/Operational
- Anbieter
- Microsoft-Windows-PowerShell
- Datei
- Microsoft-Windows-PowerShell%4Operational.evtx
- Kategorie
- PowerShell
- Standardprotokollierung
- Muss konfiguriert werden
Was Ereignis 4104 bedeutet
Event 4104 wird von der PowerShell-Engine geschrieben, wenn sie einen Skriptblock kompiliert. Das Feld ScriptBlockText enthält den Code so, wie PowerShell ihn sieht: an der Eingabeaufforderung eingegebene Befehle, ganze Skripte, Funktionen und — entscheidend — Code, der Base64-kodiert, heruntergeladen oder zur Laufzeit zusammengesetzt wurde, denn die Protokollierung erfolgt, nachdem diese Schicht entfernt ist.
Große Skripte werden auf mehrere Events mit gemeinsamer ScriptBlockId aufgeteilt; MessageNumber und MessageTotal zeigen, wie sie wieder zusammenzusetzen sind. Das Feld Path ist befüllt, wenn der Block aus einer Skriptdatei stammt.
Auch ganz ohne Richtlinie protokollieren PowerShell 5 und neuer Skriptblöcke mit bekannten verdächtigen Schlüsselwörtern auf der Stufe Warnung. Die vollständige Protokollierung jedes Blocks erfordert die Richtlinie für Skriptblockprotokollierung — sie macht 4104 zum Rückgrat von PowerShell-Untersuchungen.
Wann es protokolliert wird
Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > Turn on PowerShell Script Block Logging (Protokollierung von PowerShell-Skriptblöcken aktivieren) oder per Registry HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging\EnableScriptBlockLogging = 1.
Ohne die Richtlinie protokolliert Windows PowerShell 5.x als verdächtig eingestufte Blöcke dennoch als 4104 der Stufe Warnung. PowerShell 7 schreibt in den Kanal PowerShellCore/Operational und hat eigene Richtlinieneinstellungen.
Wichtige Felder
| Feld | Aussage |
|---|---|
| ScriptBlockText | Der Code des Skriptblocks, nachdem Verschleierungsschichten wie -EncodedCommand entfernt wurden. |
| ScriptBlockId | GUID, die alle Teile eines Skriptblocks teilen; danach gruppieren, um lange Skripte wieder zusammenzusetzen. |
| MessageNumber | Teilnummer dieses Events bei einem aufgeteilten Skriptblock. |
| MessageTotal | Gesamtzahl der Teile des Skriptblocks. |
| Path | Skriptdatei, aus der der Block stammt; leer bei interaktivem oder In-Memory-Code. |
Häufige legitime Ursachen
- Administrative Skripte, Konfigurationsmanagement (SCCM, Intune, DSC) und Monitoring-Agenten.
- PowerShell-eigene Module und Profilskripte, die beim Start geladen werden.
- Software-Installer und IT-Automatisierung, die im Hintergrund PowerShell nutzen.
Welche Angreiferaktivität es erzeugt
- Download-Cradles wie
IEX (New-Object Net.WebClient).DownloadString(...)undInvoke-WebRequest, die Payloads nachladen. - Kodierte oder verschleierte Befehle, die hier in lesbarer Form wiederhergestellt werden.
- Im Speicher geladene offensive Frameworks und Tools (Credential Dumping, AD-Aufklärung, Versuche zur AMSI-Umgehung).
- Befehle zur Manipulation der Abwehr wie
Set-MpPreference -DisableRealtimeMonitoring.
Tipps für die Untersuchung
- Zuerst nach Level 3 (Warnung) filtern — das sind die Blöcke, die PowerShell selbst als verdächtig markiert hat.
- Aufgeteilte Blöcke vor dem Lesen per ScriptBlockId in der Reihenfolge von MessageNumber zusammensetzen.
- ScriptBlockText nach Netzwerkindikatoren (URLs, IPs),
FromBase64String,Invoke-Expression,-bxor,Reflection.Assemblyund AMSI-bezogenen Zeichenfolgen durchsuchen. - Den Prozess, der den Block ausgeführt hat, über Sysmon 1 / Security 4688 (Befehlszeile von powershell.exe) und Event 400 des klassischen Protokolls (HostApplication) finden.
MITRE-ATT&CK-Techniken
MITRE ATT&CK v19.2. Technik- und Taktiknamen wie von MITRE veröffentlicht (Englisch).
Sigma-Regeln für dieses Ereignis
162 SigmaHQ-Erkennungsregeln (Release r2026-07-01) zielen auf dieses Ereignis. Angezeigt werden die 25 Regeln mit dem höchsten Schweregrad.
- Kritisch · 2
- Hoch · 51
- Mittel · 89
- Niedrig · 20
- KritischSilence.EDA DetectionRule by Alina Stepchenkova, Group-IB, oscd.community, SigmaHQ, DRL 1.1
- KritischSuspicious PowerShell Mailbox Export to Share - PSRule by Nasreddine Bencherchali (Nextron Systems), SigmaHQ, DRL 1.1
- HochAADInternals PowerShell Cmdlets Execution - PsScriptRule by Austin Songer (@austinsonger), Nasreddine Bencherchali (Nextron Systems), Swachchhanda Shrawan Poudel (Nextron Systems), SigmaHQ, DRL 1.1
- HochAbuse of Service Permissions to Hide Services Via Set-Service - PSRule by Nasreddine Bencherchali (Nextron Systems), SigmaHQ, DRL 1.1
- HochAMSI Bypass Pattern Assembly GetTypeRule by Florian Roth (Nextron Systems), SigmaHQ, DRL 1.1
- HochClearing Windows Console HistoryRule by Austin Songer @austinsonger, SigmaHQ, DRL 1.1
- HochCode Executed Via Office Add-in XLL FileRule by frack113, SigmaHQ, DRL 1.1
- HochCreate Volume Shadow Copy with PowershellRule by frack113, SigmaHQ, DRL 1.1
- HochDeletion of Volume Shadow Copies via WMI with PowerShell - PS ScriptRule by Tim Rauch, frack113, SigmaHQ, DRL 1.1
- HochDisable of ETW Trace - PowershellRule by Nasreddine Bencherchali (Nextron Systems), SigmaHQ, DRL 1.1
- HochDisable Powershell Command HistoryRule by Ali Alwashali, SigmaHQ, DRL 1.1
- HochDisable-WindowsOptionalFeature Command PowerShellRule by frack113, SigmaHQ, DRL 1.1
- HochDSInternals Suspicious PowerShell Cmdlets - ScriptBlockRule by Nasreddine Bencherchali (Nextron Systems), SigmaHQ, DRL 1.1
- HochHackTool - Rubeus Execution - ScriptBlockRule by Christian Burkard (Nextron Systems), Florian Roth (Nextron Systems), SigmaHQ, DRL 1.1
- HochHackTool - WinPwn Execution - ScriptBlockRule by Swachchhanda Shrawan Poudel, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation CLIP+ Launcher - PowerShellRule by Jonathan Cheong, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation Obfuscated IEX Invocation - PowerShellRule by Daniel Bohannon (@Mandiant/@FireEye), oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation STDIN+ Launcher - PowershellRule by Jonathan Cheong, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation VAR+ Launcher - PowerShellRule by Jonathan Cheong, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation VAR++ LAUNCHER OBFUSCATION - PowerShellRule by Timur Zinniatullin, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation Via Stdin - PowershellRule by Nikita Nazarov, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation Via Use Clip - PowershellRule by Nikita Nazarov, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation Via Use MSHTA - PowerShellRule by Nikita Nazarov, oscd.community, SigmaHQ, DRL 1.1
- HochInvoke-Obfuscation Via Use Rundll32 - PowerShellRule by Nikita Nazarov, oscd.community, SigmaHQ, DRL 1.1
- HochLive Memory Dump Using PowershellRule by Max Altgelt (Nextron Systems), SigmaHQ, DRL 1.1
Regeln der genannten Autoren, von SigmaHQ unter der Detection Rule License (DRL) 1.1 veröffentlicht.
Diese Regeln auf Ihre Logs anwenden
Ziehen Sie eine .evtx-Datei in den Viewer: Alle 2.395 mitgelieferten SigmaHQ-Regeln laufen lokal im Browser. Nichts wird hochgeladen.