Kurzfassung: Eine schwach konfigurierte Windows-Dienst-Umgebung ist einer der häufigsten Wege vom normalen Nutzer zu SYSTEM - ganz ohne Software-Schwachstelle. Drei Klassen zählen: ein ungequoteter Dienstpfad mit Leerzeichen (T1574.009), eine beschreibbare Dienst-Binary oder deren Verzeichnis (T1574.010) und schwache Rechte auf dem Dienst-Registry-Schlüssel (T1574.011). Wichtig: Ein ungequoteter Pfad allein ist nicht ausnutzbar - es braucht ein beschreibbares Verzeichnis im Pfad und einen privilegiert startenden Dienst. Erkennung: der registrierte Dienst in Event 7045, ein Dienst, der Code aus einem Benutzerpfad startet, und die Enumeration schwacher Dienste. Drei sigma-cli-validierte Sigma-Regeln, Härtung, eine Analysten-Checkliste und der Test im Lab. Serie "Angriff erkennen".
Dienst-Fehlkonfiguration erkennen heißt, die Konfigurationsschwächen zu finden, über die ein Angreifer die hohen Rechte eines Dienstes erbt, ohne eine Software-Schwachstelle zu brauchen. Dieser Beitrag grenzt sich bewusst von zwei verwandten Themen ab. Beim Dienst-Hijack verändert der Angreifer aktiv die Konfiguration eines Dienstes, den er ohnehin ändern darf; hier geht es um die vorgelagerte Frage, welche Fehlkonfiguration ihm das überhaupt erlaubt - und um die Fälle, in denen er gar nichts umkonfiguriert, sondern nur eine beschreibbare Datei austauscht oder eine Lücke im Pfad nutzt. Von der Dienst-Erstellung und PsExec, bei der ein Dienst zur reinen Code-Ausführung angelegt wird, unterscheidet sich dieser Weg durch sein Ziel: Rechteausweitung über einen bestehenden, schwach konfigurierten Dienst. Der Beitrag bleibt auf der Verteidigerseite.
Einordnung in ATT&CK: Es geht um drei Sub-Techniken von Hijack Execution Flow (T1574): Path Interception by Unquoted Path (T1574.009), Services File Permissions Weakness (T1574.010) und Services Registry Permissions Weakness (T1574.011). MITRE ordnet T1574 den Taktiken Persistence, Privilege Escalation und Defense Evasion zu; wirkungsseitig geht es hier um Rechteausweitung, weshalb der Beitrag in der Spalte Privilege Escalation steht und die Sigma-Tags attack.privilege-escalation nutzen. Hinweis: Der hier gepflegte v19.2-Datensatz führt die T1574-Familie formal unter Stealth und Execution - fachlich bleibt die Wirkung die Rechteausweitung. Abzugrenzen von T1543.003 (aktives Umkonfigurieren eines Dienstes).
Was der Angreifer tut
Allen Varianten gemeinsam ist das Ziel, dass ein Dienst mit hohen Rechten am Ende Angreifer-Code ausführt. Bewusst auf der Ebene des Prinzips, nicht als Anleitung - und mit den jeweiligen Voraussetzungen, denn keine dieser Schwächen ist pauschal ausnutzbar:
- Schwache Dienstberechtigungen (T1574.011). Erlaubt der Sicherheitsdeskriptor eines Dienstes einem normalen Nutzer das Umkonfigurieren (SERVICE_CHANGE_CONFIG) oder sind die Rechte auf dem Dienst-Registry-Schlüssel zu weit, kann der Nutzer den Startbefehl auf eigenen Code setzen. Voraussetzung ist genau dieses zu weit vergebene Recht - ohne das bleibt der Dienst unangreifbar. Das anschließende Umbiegen selbst zeigt der Dienst-Hijack.
- Beschreibbare Dienst-Binary oder Pfad (T1574.010). Darf ein normaler Nutzer die EXE eines Dienstes oder ihr Verzeichnis überschreiben, tauscht er die Datei aus; beim nächsten Start läuft sein Code mit den Rechten des Dienstes. Voraussetzung sind Schreibrechte auf Datei oder Ordner und ein Dienst-Neustart (oder ein Reboot). Hier wird nichts umkonfiguriert - nur eine Datei ersetzt.
- Ungequoteter Dienstpfad (T1574.009). Steht ein Dienstpfad mit Leerzeichen ohne Anführungszeichen in der Registry (etwa C:\Program Files\Meine App\dienst.exe), versucht Windows beim Start zuerst C:\Program.exe, dann C:\Program Files\Meine.exe und so weiter. Entscheidend: Ausnutzbar ist das nur, wenn eines dieser vorgelagerten Verzeichnisse für den Angreifer beschreibbar ist. C:\ und C:\Program Files sind unter Standardrechten nicht beschreibbar - die meisten ungequoteten Pfade sind daher nicht ausnutzbar. Gefährlich wird es bei nicht-standardmäßigen Installationsverzeichnissen (etwa C:\Apps\), die der Gruppe Benutzer Schreibrechte geben, bei einem privilegiert startenden Dienst.
- Voraussetzung finden. Vor der Ausnutzung zählt der Angreifer die Dienste auf und prüft Rechte, Pfade und Dateiberechtigungen, klassisch mit accesschk oder PowerUp.
Der gemeinsame Nenner für die Erkennung ist, dass am Ende ein Dienst Code aus einem ungewöhnlichen, oft benutzerschreibbaren Pfad ausführt - und dass die Schwäche selbst inventarisierbar ist. Genau daran setzen die Regeln an.
Welche Logquellen die Technik zeigt
- Dienst-Installation. Event 7045 (System-Log) und Event 4697 (Security-Log, mit Audit-Richtlinie) nennen den ImagePath eines neu installierten Dienstes - die Stelle, an der ein ungequoteter oder in einem Benutzerpfad liegender Dienst sichtbar wird.
- Prozess-Telemetrie. Event 4688 und Sysmon Event 1 zeigen den Dienstprozess samt Elternprozess (services.exe) und Pfad - das verräterische Signal, wenn ein Dienst aus einem Benutzerverzeichnis startet, und zugleich der accesschk-Aufruf der Enumeration.
- Registry. Sysmon Event 13 zeigt Änderungen am ImagePath eines Dienstes in der Registry - relevant für die schwachen Registry-Rechte (T1574.011); die Erkennung der ImagePath-Umbiegung behandelt der Dienst-Hijack im Detail.
- Dateiebene. Sysmon Event 11 (FileCreate) zeigt das Überschreiben einer Dienst-Binary auf der Platte - der Kern von T1574.010, wenn ein nicht privilegierter Prozess eine Dienst-EXE ersetzt.
Das Muster im Log
Das stärkste Signal ist ein Dienstprozess, dessen Elternprozess services.exe ist und dessen Programm in einem benutzerschreibbaren Pfad liegt - Users, AppData, Temp oder Downloads. Dafür gibt es im Normalbetrieb praktisch keinen Grund; ein echter Dienst startet aus einem geschützten Systempfad. Das zweite Signal ist strukturell: ein Dienst, der mit ungequotetem Pfad und Leerzeichen registriert wird - eine Schwäche, die sich inventarisieren lässt, auch wenn sie nicht jedes Mal ausnutzbar ist. Das dritte ist die Enumeration schwacher Dienste mit accesschk oder PowerUp, besonders kurz nach einem frischen Zugriff. Belastbar wird der Fall, wenn die strukturelle Schwäche, die Enumeration und ein Dienststart aus einem Benutzerpfad auf demselben System zusammentreffen. Entscheidend ist dabei stets der Zielpfad und die Frage, ob ein Verzeichnis darin überhaupt beschreibbar war.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli validiert. Die erste meldet die strukturelle Schwäche (ungequoteter Pfad), die zweite die eigentliche Ausnutzung (Dienst startet aus Benutzerpfad), die dritte die Enumeration. Die zweite ist die aussagekräftigste. Die Übersetzung ins SIEM steht unter Sigma-Regeln.
1. Ungequoteter Dienstpfad mit Leerzeichen (T1574.009). Eine Inventur-Regel auf die Schwäche bei der Dienst-Installation - sie belegt noch keine Ausnutzung.
title: Windows-Dienst mit ungequotetem Pfad und Leerzeichen registriert
id: 033b6150-91ea-4bf7-9a20-7487891db6e2
status: experimental
description: Erkennt die Installation eines Dienstes, dessen ImagePath ein Leerzeichen
enthaelt und nicht in Anfuehrungszeichen steht. Das ist die Voraussetzung fuer Path
Interception by Unquoted Path - ausnutzbar aber nur, wenn ein Verzeichnis im Pfad
vor dem Leerzeichen fuer den Angreifer beschreibbar ist und der Dienst privilegiert
startet. Die Regel meldet die Schwaeche, nicht die bestaetigte Ausnutzung.
references:
- https://attack.mitre.org/techniques/T1574/009/
author: blue-team.net
tags:
- attack.privilege-escalation
- attack.t1574.009
logsource:
product: windows
service: system
detection:
selection:
EventID: 7045
selection_unquoted:
ImagePath|re: '^[A-Za-z]:\\[^"]* [^"]*\.exe'
condition: selection and selection_unquoted
falsepositives:
- Aeltere oder schlecht paketierte Software registriert Dienste mit ungequotetem Pfad; meist in geschuetzten Systempfaden und damit nicht ausnutzbar
level: medium
2. Dienst startet aus einem benutzerschreibbaren Pfad (T1574.010). Das gemeinsame Ergebnis aller ausnutzbaren Fehlkonfigurationen und das stärkste Signal.
title: Windows-Dienst startet ein Programm aus einem benutzerschreibbaren Pfad
id: ee25efa7-7c10-4a8a-b036-42a55eeaafe8
status: experimental
description: Erkennt einen Dienstprozess (Elternprozess services.exe), dessen Programm
in einem benutzerschreibbaren Verzeichnis liegt (Users, AppData, Temp, Downloads).
Das ist das gemeinsame Ergebnis der ausnutzbaren Dienst-Fehlkonfigurationen wie
beschreibbarer Dienst-Binary, schwacher Registry-Rechte oder ungequotetem Pfad. Der
Dienst fuehrt dann Angreifer-Code mit seinen Rechten aus, oft SYSTEM.
references:
- https://attack.mitre.org/techniques/T1574/010/
author: blue-team.net
tags:
- attack.privilege-escalation
- attack.t1574.010
logsource:
product: windows
category: process_creation
detection:
selection:
ParentImage|endswith: '\services.exe'
selection_path:
Image|contains:
- '\Users\'
- '\AppData\'
- '\Temp\'
- '\Downloads\'
condition: selection and selection_path
falsepositives:
- Einzelne Software installiert Dienste bewusst in einem Datenpfad; bekannte Dienste nach Pfad und Herausgeber als Baseline ausnehmen
level: high
3. Enumeration schwacher Dienste mit accesschk (T1574.011). Der Recon-Schritt, der die ausnutzbare Fehlkonfiguration findet.
title: Enumeration schwacher Dienstberechtigungen mit accesschk
id: 208914a4-60c4-43de-9a06-33299ef8fc16
status: experimental
description: Erkennt das Aufzaehlen beschreibbarer Dienste mit accesschk, dem
typischen Werkzeug, um vor der Rechteausweitung manipulierbare Dienste und
Dienst-Binaries zu finden (Dienst-Fehlkonfiguration). Einzeln ein legitimes
Admin-Werkzeug, in Verbindung mit einem frischen Zugriff aber ein Warnsignal.
references:
- https://attack.mitre.org/techniques/T1574/011/
author: blue-team.net
tags:
- attack.privilege-escalation
- attack.t1574.011
logsource:
product: windows
category: process_creation
detection:
selection_img:
Image|endswith:
- '\accesschk.exe'
- '\accesschk64.exe'
selection_flags:
CommandLine|contains:
- '-c'
- '-w'
condition: selection_img and selection_flags
falsepositives:
- Administratoren und Sicherheits-Scanner, die Dienstberechtigungen regulaer pruefen
level: medium
Härtung
- Dienstberechtigungen prüfen. Kein normaler Nutzer darf Dienste umkonfigurieren. Zu weite Rechte auf Diensten und ihren Registry-Schlüsseln gezielt beseitigen - die wirksamste Maßnahme gegen T1574.011.
- Dateirechte der Dienst-Binaries. Dienst-EXE und ihr Verzeichnis dürfen nur für Administratoren und SYSTEM beschreibbar sein - das schließt T1574.010.
- Pfade quoten und sauber installieren. ImagePath immer in Anführungszeichen setzen und Dienste nur aus geschützten Systempfaden starten, nie aus benutzerschreibbaren Verzeichnissen - das entschärft T1574.009 unabhängig von den Anführungszeichen.
- Selbst inventarisieren. Mit accesschk oder PowerUp regelmäßig die eigenen Dienste auf schwache Rechte, beschreibbare Binaries und ungequotete Pfade prüfen - bevor es ein Angreifer tut.
Der Test
Die Erkennung lässt sich im Lab gefahrlos prüfen, auf einem isolierten System mit aktivem Sysmon - den Testdienst danach wieder entfernen:
- Für Regel 1 einen Testdienst mit einem ungequoteten Pfad mit Leerzeichen anlegen (
sc create test binPath= C:\Program Files\Test Dienst\t.exe). Event 7045 muss den ungequoteten ImagePath zeigen. - Für Regel 2 einen Testdienst so konfigurieren, dass seine Binary in einem Benutzerpfad liegt, und ihn starten. Event 4688 oder Sysmon Event 1 muss services.exe als Elternprozess und den Benutzerpfad zeigen.
- Für Regel 3
accesschk.exe -uwcqv Benutzer *ausführen und den Treffer prüfen. - Breiter wird der Test mit den Fällen zu T1574.009, T1574.010 und T1574.011 aus Atomic Red Team sowie mit PowerUp im Audit-Modus.
Fehlalarme und Tuning
- Legitime Dienst-Administration. Admins installieren und konfigurieren Dienste. Bekannte Konten, Hosts und Wartungsfenster als Baseline ausnehmen, bevor die Regeln scharf geschaltet werden.
- Ungequotete Pfade sind meist harmlos. Regel 1 flaggt eine Schwäche, keine Ausnutzung. Die allermeisten Treffer liegen in geschützten Systempfaden und sind nicht ausnutzbar - sie gehören ins Härtungs-Backlog, nicht in die Alarmierung.
- Software mit Dienst im Datenpfad. Einzelne Produkte starten Dienste bewusst aus ProgramData oder einem Datenverzeichnis. Diese bekannten Dienste nach Pfad und Herausgeber ausnehmen; Users, AppData und Temp bleiben scharf.
- accesschk im Admin-Alltag. accesschk ist ein legitimes Sysinternals-Werkzeug. Priorisiere Treffer, die aus einem ungewöhnlichen Kontext oder kurz nach einem frischen Zugriff kommen.
Analysten-Checkliste
- Welche Fehlkonfiguration liegt vor: ungequoteter Pfad, beschreibbare Binary oder schwache Dienst-/Registry-Rechte?
- Ist die Schwäche überhaupt ausnutzbar - also ein Verzeichnis im Pfad oder die Binary für nicht privilegierte Nutzer beschreibbar?
- Startet der Dienst (Elternprozess services.exe) ein Programm aus einem Benutzerpfad? Zielpfad bewerten.
- Unter welchem Konto läuft der Dienst - SYSTEM oder ein Dienstkonto?
- Gab es davor eine Enumeration (accesschk, PowerUp) oder eine geänderte Dienstkonfiguration (siehe Dienst-Hijack)?
- Welcher vorangehende Zugriff und welches Konto führen zu dem Ereignis?
Fazit
Dienst-Fehlkonfigurationen sind Rechteausweitung ohne Exploit: eine zu weite Berechtigung, eine beschreibbare Binary oder ein ungequoteter Pfad mit einem beschreibbaren Verzeichnis genügen. Entscheidend ist, die Schwäche von ihrer tatsächlichen Ausnutzbarkeit zu trennen - ein ungequoteter Pfad allein ist noch kein Befund. Das belastbarste Signal ist ein Dienst, der Code aus einem Benutzerpfad startet; die strukturelle Schwäche und die Enumeration ergänzen das Bild. Das aktive Umbiegen einer Dienstkonfiguration behandelt der Dienst-Hijack, den Missbrauch zur reinen Ausführung die Dienst-Erstellung und PsExec, den verwandten Weg über DLLs das DLL-Hijacking. Weitere Techniken dieser Taktik führt das Lexikon nach Taktik unter Privilege Escalation.