Kurzfassung: Ein Windows-Dienst läuft als SYSTEM und startet beim Anlegen oder auf Befehl ein Programm - genau das macht ihn zum klassischen Ausführungsweg. PsExec und seine Nachbauten legen dafür einen Dienst auf dem Ziel an, führen ihn aus und räumen oft wieder auf. Die Erkennung setzt an drei Stellen an: der Dienstinstallation mit verdächtigem Binärpfad, dem services.exe, der eine Shell startet, und dem PsExec-Dienst selbst. Drei sigma-cli-validierte Sigma-Regeln, Härtung und der Test im Lab. Serie "Angriff erkennen".
Nach den geplanten Aufgaben und der WMI-Ausführung folgt der dritte große Ausführungsweg: der Windows-Dienst. Ein Dienst läuft standardmäßig als SYSTEM und wird vom Dienststeuerungsmanager gestartet - ideal, um einen Befehl mit höchsten Rechten auszuführen. Das bekannteste Werkzeug dafür ist PsExec: Es kopiert einen Dienst auf das Ziel, startet ihn aus der Ferne und liefert so eine Shell als SYSTEM. Dieselbe Mechanik nutzen Impacket und viele andere. Der Beitrag nimmt die Ausführung in den Blick und bleibt auf der Verteidigerseite.
Einordnung in ATT&CK: Die Technik ist System Services: Service Execution (T1569.002) in der Taktik Execution (TA0002). Eng verwandt ist das Anlegen eines Windows-Dienstes (T1543.003), das zugleich der Persistenz und Rechteausweitung dient - hier zählt der Ausführungsaspekt.
Was der Angreifer tut
Die Ausführung über einen Dienst läuft auf der Ebene des Prinzips, nicht als Anleitung, in wenigen Schritten ab:
- Das Programm bereitstellen. Über eine administrative Freigabe landet die Dienst-Binärdatei auf dem Ziel - oder der Dienst zeigt direkt auf eine Shell.
- Einen Dienst anlegen. Mit sc, den Dienst-Cmdlets oder direkt über die Dienststeuerung wird ein neuer Dienst registriert, dessen Binärpfad den Befehl ausführt.
- Den Dienst starten. Der Dienststeuerungsmanager services.exe startet ihn als SYSTEM - der Befehl läuft als Kind von services.exe oder des Dienstprozesses.
- Aufräumen. Nach der Ausführung wird der Dienst oft wieder entfernt, sodass nur die Installations- und Startspuren übrig bleiben.
Für die Erkennung ist entscheidend: Die Dienstinstallation ist nativ und zuverlässig protokolliert, und ein Dienst, der eine Shell startet, ist ein lautes, werkzeugunabhängiges Signal.
Welche Logquellen die Technik zeigt
- Dienstinstallation. Event-ID 7045 meldet jeden neu installierten Dienst samt Name und Binärpfad - immer aktiv, ohne zusätzliche Richtlinie.
- Prozess-Telemetrie. Event 4688 und Sysmon Event 1 zeigen den Befehl, der unter services.exe oder dem Dienstprozess startet, sowie den sc-Aufruf zur Anlage.
- Der PsExec-Dienst. Dieselben Quellen zeigen PSEXESVC.exe auf dem Ziel - das spezifische Zeichen eines PsExec-Laufs; verwandte Werkzeuge nutzen zufällige Dienstnamen.
- Die nachgelagerte Aktion. Startet der Dienst eine PowerShell oder ein LOLBin, greifen die LOLBins-Erkennung und die Endpunkt-Telemetrie, siehe Sysmon einrichten.
Das Muster im Log
Das klarste native Signal ist Event 7045 mit einem auffälligen Binärpfad: Ein Dienst, der auf cmd, PowerShell, ein temporäres Verzeichnis oder einen codierten Befehl zeigt, hat selten einen legitimen Grund. Dazu kommt das Verhalten: services.exe, das eine Shell startet, ist das werkzeugunabhängige Kernsignal - es greift auch, wenn der Dienst umbenannt wurde. PSEXESVC.exe schließlich ist der Fingerabdruck von PsExec selbst. Zufällige, kryptische Dienstnamen sind ein zusätzlicher Hinweis, weil Impacket und Cobalt Strike sie so erzeugen. Wie immer trennt der Blick auf Herkunft und Konto die Verwaltung vom Angriff.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli geprüft. Die erste nutzt die Dienstinstallation, die zweite das Verhalten, die dritte den PsExec-Dienst. Die zweite ist die tragende, weil sie werkzeugunabhängig greift.
1. Dienst mit verdächtigem Binärpfad (T1569.002). Event 7045 mit Shell, LOLBin oder Nutzerpfad im Binärpfad. Die Regel steht auf level: high.
title: Dienst mit verdaechtigem Binaerpfad installiert
id: 5d2a8c71-4b63-4e09-9c12-3a7e6b1d84f5
status: experimental
description: |
Erkennt die Installation eines neuen Dienstes (Event 7045), dessen Binaerpfad auf eine
Shell, einen Skript-Host oder ein temporaeres Verzeichnis zeigt. Angreifer legen so einen
Dienst an, der ihren Befehl beim Start als SYSTEM ausfuehrt - der Kern vieler
Service-Execution-Werkzeuge. Ein regulaerer Dienst zeigt nicht auf cmd oder einen
Nutzerordner.
references:
- https://attack.mitre.org/techniques/T1569/002/
author: blue-team.net
tags:
- attack.execution
- attack.t1569.002
logsource:
product: windows
service: system
detection:
selection:
EventID: 7045
ImagePath|contains:
- 'cmd.exe'
- 'powershell'
- 'pwsh'
- 'mshta'
- 'rundll32'
- 'regsvr32'
- '-enc'
- '\Temp\'
- '\Users\'
- '\ProgramData\'
condition: selection
falsepositives:
- Einzelne Softwareinstaller, die Dienste aus Nutzerpfaden starten; bekannte Faelle ausnehmen
level: high
2. services.exe startet eine Shell (T1569.002). Ein Kindprozess unter dem Dienststeuerungsmanager - das werkzeugunabhängige Verhaltenssignal. Ebenfalls level: high.
title: services.exe startet eine Shell oder ein LOLBin
id: 1b9e6c40-7a28-4d35-8f02-5c3a2b7e94d7
status: experimental
description: |
Erkennt einen Prozess, dessen Elternprozess services.exe ist und der eine Kommandozeile,
PowerShell oder ein LOLBin startet. Wird ein Dienst zur Codeausfuehrung missbraucht,
erscheint der Befehl als Kind des Dienststeuerungsmanagers. Dieses Signal greift
werkzeugunabhaengig - auch bei umbenannten Diensten.
references:
- https://attack.mitre.org/techniques/T1569/002/
author: blue-team.net
tags:
- attack.execution
- attack.t1569.002
logsource:
product: windows
category: process_creation
detection:
selection:
ParentImage|endswith: '\services.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
condition: selection
falsepositives:
- Einzelne Dienste starten legitim Skripte; bekannte Dienste und Pfade als Baseline ausnehmen
level: high
3. PsExec-Dienst PSEXESVC (T1569.002). Der PsExec-Dienstprozess oder ein von ihm gestarteter Befehl. Ebenfalls level: high.
title: PsExec-Dienst PSEXESVC aktiv
id: 8c1f4b90-5a38-4d26-b013-6e2a7c3d95b8
status: experimental
description: |
Erkennt den PsExec-Dienst PSEXESVC auf dem Zielsystem - entweder den Dienstprozess selbst
oder einen Befehl, den er als Kind startet. PsExec legt zur Fernausfuehrung einen Dienst
mit genau diesem Namen an. Taucht PSEXESVC auf einem Host auf, wurde dort mit hoher
Wahrscheinlichkeit aus der Ferne Code ausgefuehrt.
references:
- https://attack.mitre.org/techniques/T1569/002/
author: blue-team.net
tags:
- attack.execution
- attack.t1569.002
logsource:
product: windows
category: process_creation
detection:
sel_image:
Image|endswith: '\PSEXESVC.exe'
sel_parent:
ParentImage|endswith: '\PSEXESVC.exe'
condition: sel_image or sel_parent
falsepositives:
- Legitimer Einsatz von PsExec durch die Administration; bekannte Faelle nach Host und Konto ausnehmen
level: high
Härtung: der Angriff, der ins Leere läuft
- Dienstinstallation protokollieren und einschränken. Event 7045 zentral sammeln und das Anlegen von Diensten auf wenige Konten begrenzen.
- Fernzugang zur Dienststeuerung eindämmen. Den entfernten Zugriff auf den Dienststeuerungsmanager und die administrativen Freigaben per Firewall begrenzen - das nimmt PsExec die Grundlage, siehe SMB und Admin-Shares.
- Lokale Admins eindämmen. Mit LAPS und der Trennung privilegierter Konten verhindern, dass ein gestohlener Zugang auf vielen Hosts Dienste anlegen kann.
- Verhaltensregel scharf schalten. services.exe, das eine Shell startet, sollte immer alarmieren - das ist die zuverlässigste Einzelregel.
Der Test
Die Erkennung lässt sich im Lab gefahrlos prüfen, auf isolierten Systemen mit aktivem Sysmon:
- Für Regel 1 mit sc einen Testdienst anlegen, dessen Binärpfad auf cmd zeigt. Event 7045 muss ihn mit dem Binärpfad zeigen; danach wieder entfernen.
- Für Regel 2 diesen Dienst starten. Der Befehl muss als Kind von services.exe in Event 4688 erscheinen.
- Für Regel 3 PsExec im Lab gegen ein Testsystem einsetzen. PSEXESVC.exe muss auf dem Ziel erscheinen. Breiter wird der Test mit den Fällen zu T1569 aus Atomic Red Team.
Fehlalarme und Tuning
- Softwareinstaller. Installer legen legitim Dienste an, manchmal aus Nutzerpfaden. Für Regel 1 die bekannten Installer und Pfade als Baseline ausnehmen.
- Verwaltungs-PsExec. Administratoren nutzen PsExec selbst. Für Regel 3 die bekannten Einsatzfenster und -konten dokumentieren und filtern.
- Legitime Dienstskripte. Einzelne Dienste rufen Skripte auf. Für Regel 2 die bekannten Dienste und Pfade ausnehmen, statt die Regel zu entschärfen.
- Korrelation schlägt Einzelregel. Wer Dienstinstallation, Start und nachgelagerte Aktion als Kette betrachtet, trennt Verwaltung und echten Angriff zuverlässiger als jede Einzelregel.
Fazit
Der Windows-Dienst ist ein direkter Weg zur Ausführung als SYSTEM - und der Kern von PsExec und seinen Nachbauten. Die verlässlichen Signale sind die Dienstinstallation mit verdächtigem Binärpfad (Event 7045), der services.exe, der eine Shell startet, und der PsExec-Dienst PSEXESVC. Die wirksamste Härtung protokolliert und beschränkt die Dienstinstallation, dämmt den Fernzugang zur Dienststeuerung ein und vereinzelt die lokalen Admin-Rechte. Als Nächstes folgen die Skript-Interpreter und LOLBins MSHTA und HTA. Verwandt sind die Admin-Shares, über die der Dienst aufs Ziel kommt, und die Impacket-Werkzeuge, deren psexec und smbexec genau diesen Weg nutzen. Weitere Techniken dieser Taktik sammelt das Lexikon nach Taktik unter Execution.