WinRM und PowerShell Remoting erkennen: Fernausführung über wsmprovhost

Kurzfassung: WinRM und PowerShell Remoting sind der verwaltungsnahe Weg, einen Befehl auf einem entfernten Windows-Host auszuführen - und genau deshalb bei Angreifern beliebt: Sie wirken wie legitime Administration. Der Schlüssel zur Erkennung ist ein einziger Prozess, wsmprovhost.exe, in dem jede eingehende Sitzung läuft. Drei sigma-cli-validierte Sigma-Regeln auf den Hostprozess, die daraus gestarteten Befehle und die Client-Werkzeuge. Mit Härtung und Test im Lab. Serie "Angriff erkennen".

Nach RDP und SMB folgt der dritte große Remote Service: WinRM, die Windows-Fernverwaltung, und das darauf aufbauende PowerShell Remoting. Wo RDP eine ganze grafische Sitzung öffnet und SMB Dateien transportiert, führt WinRM gezielt Befehle aus - leise, skriptbar und von legitimer Administration kaum zu unterscheiden. Für die Verteidigung ist das die Herausforderung, aber es gibt einen klaren Ankerpunkt: Jede eingehende Remoting-Sitzung läuft im Hostprozess wsmprovhost.exe. Der Beitrag bleibt auf der Verteidigerseite und bleibt konzeptionell.

Einordnung in ATT&CK: Die Technik ist Remote Services: Windows Remote Management (T1021.006) in der Taktik Lateral Movement (TA0008). WinRM nutzt die Ports 5985 (HTTP) und 5986 (HTTPS) und setzt gültige Zugangsdaten voraus.

Was der Angreifer tut

Seitliche Bewegung über WinRM läuft auf der Ebene des Prinzips, nicht als Anleitung, in wenigen Schritten ab:

  • Eine Sitzung öffnen. Mit gültigen Zugangsdaten baut der Angreifer über winrs oder die PowerShell-Cmdlets eine Verbindung zum Ziel auf - meist auf Port 5985.
  • Befehle ausführen. Auf dem Ziel startet der Hostprozess wsmprovhost.exe und führt darin die übermittelten Befehle aus - oft eine Kommandozeile oder ein PowerShell-Skript.
  • Im Speicher bleiben. Remoting erlaubt es, Code direkt im Speicher auszuführen, ohne eine Datei abzulegen - das macht die Technik besonders unauffällig.
  • Als Administration tarnen. Weil IT-Teams WinRM selbst für die Verwaltung nutzen, geht der Missbrauch leicht in der legitimen Aktivität unter.

Für die Erkennung ist entscheidend: So leise die Übertragung ist, der Hostprozess und die aus ihm gestarteten Befehle sind auf dem Ziel klar sichtbar.

Welche Logquellen die Technik zeigt

  • Prozess-Telemetrie auf dem Ziel. Event 4688 und Sysmon Event 1 zeigen den Start von wsmprovhost.exe und jeden darunter gestarteten Prozess - die Kernspur jeder Remoting-Sitzung.
  • Prozess-Telemetrie auf dem Client. Dieselben Quellen zeigen auf der Angreiferseite winrs oder die Remoting-Cmdlets samt Kommandozeile.
  • Skript-Inhalte. Event-ID 4104 zeigt den über Remoting ausgeführten PowerShell-Code - die Grundlage legt PowerShell für Verteidiger.
  • Netzwerk-Telemetrie. Zeek sieht die WinRM-Verbindungen auf 5985 und 5986 und deckt ungewöhnliche Host-zu-Host-Paare auf.

Das Muster im Log

Der verlässlichste Befund ist wsmprovhost.exe mit einem auffälligen Kind: Startet unter dem WinRM-Hostprozess eine Kommandozeile, ein Skript-Host oder rundll32, wird aus der Ferne ein Befehl ausgeführt. Das bloße Auftauchen von wsmprovhost.exe zeigt eine eingehende Sitzung an und taugt vor allem zum Baselining - auf einem Arbeitsplatz, der nie per WinRM verwaltet wird, ist aber schon das ein starkes Signal. Auf der Client-Seite verraten winrs und die Remoting-Cmdlets den Ausgangspunkt. Wie bei den anderen Remote Services gilt: Ein Arbeitsplatz, der einen anderen Arbeitsplatz per WinRM anspricht, passt selten ins normale Bild, in dem nur Verwaltungshosts so arbeiten.

Drei Sigma-Regeln

Die Regeln sind mit sigma-cli geprüft und über alle Backends sauber übersetzbar. Die erste nutzt den Hostprozess, die zweite die daraus gestarteten Befehle, die dritte die Client-Werkzeuge. Die zweite ist die aussagekräftigste, weil ein Kindprozess unter wsmprovhost.exe konkrete Fernausführung bedeutet.

1. WinRM-Host-Prozess gestartet (T1021.006). wsmprovhost.exe auf dem Ziel. Die Regel steht auf level: medium und braucht Baselining.

Sigma
title: WinRM-Host-Prozess wsmprovhost.exe gestartet
id: 4c7e1a93-8b25-4f60-a3d1-6e2b9c4d75a8
status: experimental
description: |
  Erkennt den Start von wsmprovhost.exe, dem Hostprozess fuer eingehende WinRM- und
  PowerShell-Remoting-Sitzungen. Jede Fernsitzung ueber WinRM laeuft in diesem Prozess.
  Auf Hosts, die keine Fernverwaltung per WinRM erwarten, ist sein Auftauchen ein
  deutliches Zeichen fuer seitliche Bewegung.
references:
  - https://attack.mitre.org/techniques/T1021/006/
author: blue-team.net
tags:
  - attack.lateral-movement
  - attack.t1021.006
logsource:
  product: windows
  category: process_creation
detection:
  selection:
    Image|endswith: '\wsmprovhost.exe'
  condition: selection
falsepositives:
  - Legitime Fernverwaltung per PowerShell Remoting; bekannte Verwaltungshosts als Baseline ausnehmen
level: medium

2. Prozess aus einer WinRM-Sitzung (T1021.006). Ein Kindprozess unter wsmprovhost.exe - das konkrete Fernausführungs-Signal. level: high.

Sigma
title: Prozess aus einer WinRM-Sitzung gestartet
id: 7a3d6b18-2f94-4e05-8c71-3b5a9d2e46f0
status: experimental
description: |
  Erkennt Prozesse, deren Elternprozess wsmprovhost.exe ist. Startet eine Kommandozeile
  oder ein Skript-Host unter dem WinRM-Hostprozess, wird aus der Ferne ein Befehl auf dem
  Ziel ausgefuehrt. Das ist das eigentliche Ergebnis von PowerShell Remoting zur
  seitlichen Bewegung und deutlich spezifischer als der Sitzungsstart allein.
references:
  - https://attack.mitre.org/techniques/T1021/006/
author: blue-team.net
tags:
  - attack.lateral-movement
  - attack.t1021.006
logsource:
  product: windows
  category: process_creation
detection:
  selection:
    ParentImage|endswith: '\wsmprovhost.exe'
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\rundll32.exe'
  condition: selection
falsepositives:
  - Fernwartungsskripte, die ueber Remoting laufen; bekannte Verwaltungskonten ausnehmen
level: high

3. WinRM-Client-Werkzeuge (T1021.006). winrs oder die Remoting-Cmdlets auf der Angreiferseite. level: medium, weil es Verwaltungswerkzeuge sind.

Sigma
title: WinRM-Client-Werkzeuge zur Fernausfuehrung
id: 2e9c4b70-5a38-4d16-b0f2-7c1a6e3d84b9
status: experimental
description: |
  Erkennt den Aufruf gaengiger WinRM-Client-Werkzeuge auf der Angreiferseite: winrs
  oder die PowerShell-Cmdlets fuer Remoting. Mit ihnen oeffnet ein Angreifer eine Sitzung
  oder fuehrt einen Befehl auf einem entfernten Host aus. Als Verwaltungswerkzeuge kommen
  sie auch legitim vor, daher auf Baselining angewiesen.
references:
  - https://attack.mitre.org/techniques/T1021/006/
author: blue-team.net
tags:
  - attack.lateral-movement
  - attack.t1021.006
logsource:
  product: windows
  category: process_creation
detection:
  sel_winrs:
    Image|endswith: '\winrs.exe'
  sel_cmdlets:
    CommandLine|contains:
      - 'Invoke-Command'
      - 'Enter-PSSession'
      - 'New-PSSession'
  condition: sel_winrs or sel_cmdlets
falsepositives:
  - Administration per PowerShell Remoting; bekannte Verwaltungskonten und Quellhosts ausnehmen
level: medium

Härtung: der Angriff, der ins Leere läuft

  • WinRM nur dort, wo nötig. Die Fernverwaltung per GPO nur auf Hosts aktivieren, die sie brauchen, und den Zugriff auf definierte Verwaltungsquellen begrenzen.
  • Zugang über Sprungserver. WinRM nur von gehärteten Jump Hosts zulassen und direkte Arbeitsplatz-zu-Arbeitsplatz-Verbindungen per Firewall unterbinden.
  • JEA statt Vollzugriff. Mit Just Enough Administration den per Remoting möglichen Befehlsumfang auf das Nötige beschränken.
  • PowerShell beobachtbar machen. Script Block Logging erzwingen, damit ferngestartete Skripte sichtbar werden - Details in PowerShell für Verteidiger.

Der Test

Die Erkennung lässt sich im Lab gefahrlos prüfen, auf isolierten Systemen mit aktivem Sysmon:

  • Für Regel 1 von einem Testhost aus per Invoke-Command einen harmlosen Befehl auf einem anderen ausführen. Auf dem Ziel muss wsmprovhost.exe in Event 4688 erscheinen.
  • Für Regel 2 im selben Test einen cmd- oder PowerShell-Befehl über die Sitzung starten. Die Eltern-Kind-Beziehung wsmprovhost.exe zu cmd.exe muss erscheinen.
  • Für Regel 3 winrs oder Enter-PSSession auf der Client-Seite aufrufen. Event 4688 muss die Kommandozeile zeigen. Breiter wird der Test mit den passenden Fällen aus Atomic Red Team.

Fehlalarme und Tuning

  • Legitime Fernverwaltung. IT-Teams nutzen WinRM selbst. Die bekannten Verwaltungshosts und -konten für alle drei Regeln als Baseline ausnehmen.
  • Konfigurationswerkzeuge. Lösungen wie DSC oder Monitoring greifen per WinRM zu. Ihre Dienstkonten dokumentieren und filtern.
  • Ziel-Baselining. Regel 1 ist auf Servern laut, auf Arbeitsplätzen dagegen ein starkes Signal. Nach Rolle des Ziels unterschiedlich scharf schalten.
  • Korrelation schlägt Einzelregel. Wer den Sitzungsstart mit dem konkreten Kindprozess und der Quelle verknüpft, trennt Administration und echten Angriff zuverlässiger als jede Einzelregel.

Fazit

WinRM und PowerShell Remoting sind seitliche Bewegung in ihrer verwaltungsnahsten Form - leise, skriptbar und leicht als Administration getarnt. Der verlässliche Anker ist wsmprovhost.exe: der Hostprozess selbst und vor allem die Befehle, die als Kindprozesse daraus starten. Die wirksamste Härtung beschränkt WinRM auf Verwaltungshosts und Sprungserver, setzt auf JEA und macht PowerShell über Script Block Logging sichtbar. Als Nächstes folgen die weiteren Pfade der seitlichen Bewegung über Remote Services. Verwandt sind der RDP-Missbrauch, die Admin-Shares und die Impacket-Werkzeuge, deren wmiexec auf demselben Fernausführungs-Prinzip beruht. Weitere Techniken dieser Taktik sammelt das Lexikon nach Taktik unter Lateral Movement.

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.