UAC-Bypass erkennen: wenn Windows sich selbst eleviert

Kurzfassung: Die Benutzerkontensteuerung (UAC) soll verhindern, dass Programme unbemerkt mit Administratorrechten laufen. Ein UAC-Bypass umgeht genau diese Abfrage - meist, indem ein vertrauenswürdiger, auto-elevierter Windows-Prozess über einen manipulierten Registry-Eintrag auf fremden Code umgebogen wird. Für den Verteidiger ist das gut erkennbar, weil die genutzten Registry-Schlüssel und Eltern-Kind-Beziehungen eindeutig sind. Die Ansatzpunkte: der Registry-Hijack, der auffällige Kindprozess eines Auto-Elevate-Handlers und der CMSTP-Missbrauch. Drei sigma-cli-validierte Sigma-Regeln, Härtung und Test. Serie "Angriff erkennen".

Nach dem Erstzugang hat ein Angreifer oft nur die Rechte eines normalen Benutzers. Um an die wirklich interessanten Dinge zu kommen, braucht er mehr - und der leiseste Schritt dorthin ist häufig ein UAC-Bypass: keine Schwachstelle im klassischen Sinn, sondern das Ausnutzen von Windows-Programmen, die sich ohne Rückfrage selbst elevieren dürfen. Dieser Beitrag eröffnet die Serien-Welle "Rechte und blinde Flecken" und bleibt bewusst auf der Verteidigerseite. Verwandt ist das spätere Abschalten der Abwehr, etwa die EDR-Umgehung; die missbrauchten Bordmittel gehören zur Familie der LOLBins.

Einordnung in ATT&CK: Die Technik ist Abuse Elevation Control Mechanism: Bypass User Account Control (T1548.002). In der Serie steht der Beitrag in der Spalte Privilege Escalation. Ziel ist, erhöhte Rechte zu erlangen, ohne dass die UAC-Abfrage erscheint - der Angreifer wird vom System selbst eleviert.

Was der Angreifer tut

Hinter dem UAC-Bypass stehen dutzende Varianten, aber ein gemeinsames Grundmuster. Auf der Ebene des Prinzips, nicht als Anleitung:

  • Einen Auto-Elevate-Handler umbiegen. Ein Windows-Prozess, der sich ohne Rückfrage elevieren darf - etwa fodhelper, eventvwr, sdclt oder computerdefaults -, liest beim Start einen Registry-Schlüssel im Benutzerzweig. Dort wird das eigene Kommando eingetragen und läuft dann mit erhöhten Rechten.
  • CMSTP missbrauchen. Das Bordmittel cmstp lädt eine INF-Datei mit erhöhten Rechten und lässt sich so für Bypass und Code-Ausführung einspannen.
  • COM- und Token-Varianten. Es gibt ganze Sammlungen solcher Techniken; das Muster bleibt: ein vertrauenswürdiger Prozess wird eleviert und führt fremden Code aus.

Für die Erkennung ist entscheidend: Ein UAC-Bypass setzt meist voraus, dass das Konto ohnehin im geteilten Token lokale Admin-Rechte hat - er umgeht die Abfrage, nicht die Gruppenzugehörigkeit. Trotzdem ist er gefährlich, weil er leise volle Rechte verschafft. Und er hinterlässt klare Spuren.

Welche Logquellen die Technik zeigt

  • Die Registry zuerst. Sysmon Event 13 zeigt den Hijack der shell\open\command-Schlüssel unter ms-settings, mscfile oder Folder - das klarste Signal.
  • Die Eltern-Kind-Beziehung. Event 4688 und Sysmon Event 1 zeigen einen Auto-Elevate-Handler als Elternprozess eines cmd oder PowerShell - das typische Ergebnis des Bypasses. Die Skript-Variante deckt das Script Block Logging zusätzlich auf.
  • Der CMSTP-Aufruf. cmstp mit INF im stillen Modus taucht in der Prozess-Telemetrie auf.
  • Fehlende UAC-Abfrage. Ein elevierter Prozess ohne die übliche Interaktion mit der Zustimmungsabfrage ist ein schwächeres, ergänzendes Indiz.

Das Muster im Log

Zwei Signale tragen. Erstens ein neuer shell\open\command-Eintrag unter ms-settings, mscfile oder Folder im Benutzerzweig - dafür gibt es kaum einen legitimen Grund. Zweitens fodhelper, eventvwr oder sdclt als Elternprozess von cmd oder PowerShell. Beide zusammen sind praktisch eindeutig, und der CMSTP-Aufruf mit INF im stillen Modus rundet das Bild ab. Anders als bei vielen anderen Techniken brauchen diese Treffer kaum Tuning: Die Muster kommen im normalen Betrieb schlicht nicht vor.

Drei Sigma-Regeln

Die Regeln sind mit sigma-cli geprüft. Die erste nutzt den Registry-Hijack, die zweite die Eltern-Kind-Beziehung, die dritte den CMSTP-Missbrauch. Die erste setzt die Registry-Erfassung voraus, die beiden anderen die Prozessüberwachung mit Kommandozeile.

1. UAC-Bypass über Registry-Hijack (T1548.002). Das Anlegen der manipulierten shell\open\command-Schlüssel. Die Regel steht auf level: high.

Sigma
title: UAC-Bypass ueber Registry-Hijack von Auto-Elevate-Handlern
id: 8bda5fd0-29d4-403b-9da7-093a05f9a89d
status: experimental
description: |
  Erkennt das Anlegen von Registry-Eintraegen, mit denen gaengige UAC-Bypasses
  einen auto-elevierten Windows-Prozess auf ein eigenes Kommando umbiegen. Die
  Schluessel unter ms-settings, mscfile oder Folder im Benutzerzweig werden von
  fodhelper, eventvwr oder sdclt gelesen und fuehren dann mit erhoehten Rechten aus.
references:
  - https://attack.mitre.org/techniques/T1548/002/
author: blue-team.net
tags:
  - attack.privilege-escalation
  - attack.t1548.002
logsource:
  category: registry_set
  product: windows
detection:
  selection:
    TargetObject|contains:
      - '\ms-settings\shell\open\command'
      - '\mscfile\shell\open\command'
      - '\Folder\shell\open\command'
      - '\exefile\shell\open\command'
  condition: selection
falsepositives:
  - Sehr selten; bestimmte Software registriert eigene Handler. Im Kontext pruefen
level: high

2. Auto-elevierter Prozess startet ungewöhnlichen Kindprozess (T1548.002). Ein Auto-Elevate-Handler als Elternteil eines Kommandozeilen- oder Skript-Hosts. Ebenfalls level: high.

Sigma
title: Auto-elevierter Windows-Prozess startet ungewoehnlichen Kindprozess
id: 03fe59b5-ad76-42c1-8fe1-899178903d31
status: experimental
description: |
  Erkennt, dass ein auto-elevierter Windows-Prozess wie fodhelper, computerdefaults,
  eventvwr oder sdclt einen Kommandozeilen- oder Skript-Host startet. Das ist das
  typische Ergebnis eines UAC-Bypasses: Der vertrauenswuerdige Prozess fuehrt mit
  erhoehten Rechten fremden Code aus.
references:
  - https://attack.mitre.org/techniques/T1548/002/
author: blue-team.net
tags:
  - attack.privilege-escalation
  - attack.t1548.002
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith:
      - '\fodhelper.exe'
      - '\computerdefaults.exe'
      - '\eventvwr.exe'
      - '\sdclt.exe'
      - '\slui.exe'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\mshta.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\rundll32.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Sehr selten; im Einzelfall administrative Nutzung pruefen
level: high

3. CMSTP-Missbrauch zur Rechteausweitung (T1548.002). cmstp mit INF im stillen Modus. level: medium, mit Tuning gegen VPN-Profile.

Sigma
title: CMSTP-Missbrauch zur Rechteausweitung
id: 20521687-6543-4bfe-b797-00f68b533c7d
status: experimental
description: |
  Erkennt den Aufruf von cmstp mit einer INF-Datei im stillen Modus. cmstp laedt
  die INF mit erhoehten Rechten und wird so fuer UAC-Bypass und Code-Ausfuehrung
  missbraucht. Der stille Modus mit INF ist im normalen Betrieb ungewoehnlich.
references:
  - https://attack.mitre.org/techniques/T1548/002/
author: blue-team.net
tags:
  - attack.privilege-escalation
  - attack.t1548.002
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith: '\cmstp.exe'
    CommandLine|contains: '.inf'
  selection_flag:
    CommandLine|contains:
      - ' /s'
      - ' /au'
      - ' /ns'
  condition: selection and selection_flag
falsepositives:
  - Legitime VPN- oder Verbindungsprofile per cmstp; bekannte Faelle ausnehmen
level: medium

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

  • Keine lokalen Admin-Rechte im Alltag. Ein UAC-Bypass braucht ein Konto, das im geteilten Token Administrator ist. Wer für die tägliche Arbeit kein lokaler Admin ist, gibt dem Bypass keine Grundlage - die wirksamste Maßnahme.
  • UAC auf die höchste Stufe. "Immer benachrichtigen" verkleinert die Zahl der auto-elevierten Pfade, die sich missbrauchen lassen.
  • Anwendungssteuerung. Die Ausführung von cmstp und ungewöhnliche Kindprozesse von Auto-Elevate-Handlern einschränken, wo sie nicht gebraucht werden.
  • Registry als Tripwire. Die shell\open\command-Schlüssel gezielt überwachen - ihr Beschreiben ist fast immer bösartig.

Der Test

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

  • Für Regel 1 einen der shell\open\command-Schlüssel im Benutzerzweig setzen. Sysmon Event 13 muss den Eintrag zeigen.
  • Für Regel 2 einen bekannten fodhelper-Bypass im Lab ausführen. Event 4688 und Sysmon Event 1 müssen die Eltern-Kind-Beziehung zeigen.
  • Für Regel 3 cmstp mit einer Test-INF im stillen Modus aufrufen. Vollständiger wird der Test mit den Fällen zu T1548.002 aus Atomic Red Team.

Fehlalarme und Tuning

  • Software mit eigenen Handlern. Sehr selten registriert legitime Software eigene shell\open\command-Einträge. Prüfe neue Einträge im Kontext, bevor du hart blockierst.
  • Bewusste Admin-Elevation. Ein Administrator, der gezielt eleviert, kann ähnliche Prozessmuster erzeugen. Korreliere mit Nutzer und Kontext.
  • cmstp für VPN. Legitime Verbindungsprofile nutzen cmstp. Nimm die bekannten INFs und Profile aus, bevor du Regel 3 scharf schaltest.
  • Eltern-Kind schlägt Einzelsignal. Der Registry-Eintrag allein oder der Kindprozess allein ist schwächer als beide zusammen. Korreliere die Treffer der ersten beiden Regeln.

Fazit

Der UAC-Bypass ist der leise erste Schritt zu vollen lokalen Rechten - aber er hinterlässt eindeutige Spuren: manipulierte shell\open\command-Schlüssel und auffällige Kindprozesse vertrauenswürdiger Windows-Programme. Die wirksamste Härtung ist, Normalnutzern keine lokalen Admin-Rechte zu geben; die Erkennung ist dank der präzisen Muster unkompliziert. Wie sich das spätere Abschalten der Abwehr zeigt, steht in der EDR-Umgehung. Weitere Techniken dieser Taktik sammelt das Lexikon nach Taktik unter Privilege Escalation.

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.