Event-ID 4103: PowerShell-Modulprotokollierung

Event 4103 protokolliert jeden ausgeführten PowerShell-Befehl samt Parameterwerten. Die Ergänzung zu 4104, wenn du wissen willst, welche Cmdlets wie aufgerufen wurden.

Event-ID
4103
Log-Kanal
PowerShell
Quelle
Microsoft-Windows-PowerShell
Angriffsrelevanz
mittel

Event 4103 („Executing Pipeline“) entsteht durch die PowerShell-Modulprotokollierung und landet im Log Microsoft-Windows-PowerShell/Operational. Während 4104 den Quelltext eines Skriptblocks zeigt, protokolliert 4103 die tatsächliche Ausführung: welches Cmdlet oder welche Funktion aufgerufen wurde und mit welchen Parameterwerten. Das ist besonders dann hilfreich, wenn Werte erst zur Laufzeit entstehen, etwa aus Variablen oder dekodierten Strings.

Die wichtigsten Felder

  • ContextInfo: Kontext der Ausführung, darunter Host-Anwendung mit Kommandozeile, Benutzer, Befehlsname, Skriptname und Sitzungs-ID.
  • Payload: die Aufrufe im Format CommandInvocation(Get-ADUser): "Get-ADUser" gefolgt von ParameterBinding(Get-ADUser): name="Filter"; value="*".
  • UserData: zusätzliche Daten, häufig leer.

Worauf du bei der Detection achtest

  • Defender abschalten: Set-MpPreference mit DisableRealtimeMonitoring oder neuen Ausschlüssen über ExclusionPath.
  • AD-Aufklärung: massenhafte Aufrufe von Get-ADUser, Get-ADComputer oder Get-ADGroupMember mit Filter *, ebenso PowerView-Funktionen wie Get-DomainUser oder Find-LocalAdminAccess.
  • Download und Ausführung: Invoke-WebRequest oder Start-BitsTransfer mit externen URLs, gefolgt von Invoke-Expression.
  • Ungewöhnliche Host-Anwendung: in ContextInfo steht als Host nicht powershell.exe, sondern ein anderer Prozess. Das deutet auf „unmanaged PowerShell“ hin, also PowerShell, die in fremde Prozesse geladen wird.
  • Lokale Kontenverwaltung: New-LocalUser und Add-LocalGroupMember, ergänzend zu 4720 und 4732.

Typische False Positives

Module Logging erzeugt deutlich mehr Events als Script Block Logging, weil jeder einzelne Pipeline-Aufruf protokolliert wird. Konfigurationsmanagement, Monitoring-Agents und Admin-Skripte dominieren das Volumen. Filtere bekannte Skriptpfade und Dienstkonten und plane ausreichend Log-Größe ein.

Voraussetzung

Aktiviere die Gruppenrichtlinie Modulprotokollierung aktivieren unter Administrative Vorlagen → Windows-Komponenten → Windows PowerShell und trage als Modulnamen * ein, damit alle Module erfasst werden. Wie bei 4104 gilt: PowerShell 2.0 unterstützt diese Protokollierung nicht. Einen Wechsel auf die alte Version erkennst du in Event 400.

Sigma-Regel (Beispiel)

Sigma
title: Defender-Schutz per PowerShell abgeschaltet
status: experimental
description: Erkennt Set-MpPreference-Aufrufe, die Echtzeitschutz oder andere Defender-Funktionen deaktivieren oder Ausschluesse setzen.
references:
  - https://attack.mitre.org/techniques/T1562/001/
author: blue-team.net
tags:
  - attack.defense-evasion
  - attack.t1562.001
logsource:
  product: windows
  category: ps_module
  definition: Module Logging muss aktiviert sein
detection:
  selection_cmd:
    Payload|contains: 'Set-MpPreference'
  selection_param:
    Payload|contains:
      - 'DisableRealtimeMonitoring'
      - 'DisableBehaviorMonitoring'
      - 'DisableIOAVProtection'
      - 'ExclusionPath'
      - 'ExclusionProcess'
  condition: selection_cmd and selection_param
falsepositives:
  - Admin-Skripte, die Ausschluesse fuer Fachanwendungen setzen
level: high

Beispielregel als Ausgangspunkt. Vor dem produktiven Einsatz an die eigene Umgebung, Log-Quellen und Ausnahmen anpassen.

Verwandte Event-IDs

NH

$ whoami

Norbert Hofmann

Cyber Defense Analyst im Security Operations Center eines Managed Security Service Providers. Red und Blue Teaming, Malware-Analyse, Incident Response und Security-Awareness-Trainings. Finalist bei „Deutschlands bester Hacker“ 2022, mehrere CVE-Einträge für WordPress-Plugins.