Windows UAC hört nie auf zu überraschen, oder wie man einen Insider erkennt

Bild

Hallo allerseits! Ich bin sicher, dass Sie von den Unzulänglichkeiten der Windows-UAC-Technologie gehört haben, aber vor relativ kurzer Zeit sind Details einer merkwürdigen Sicherheitsanfälligkeit aufgetaucht, deren Ausnutzung es einem nicht privilegierten Benutzer ermöglicht, die Berechtigungen zu maximieren. In Jet CSIRT haben wir diesen Fall nicht unbeaufsichtigt gelassen, da für jedes IS-Überwachungs- und Reaktionsteam die Sicherheitsanfälligkeiten der Privilege Escalation-Klasse von besonderem Interesse sind. Under the cut - eine Beschreibung der Sicherheitsanfälligkeit, Methoden zur Erkennung und zum Schutz.

Schwachstellendetails


Der Forscher Eduardo Braun Prado vom Zero Day Initiative-Team hat eine lokale Sicherheitsanfälligkeit bezüglich der Eskalation von Berechtigungen in der Windows Certificate Dialog-Komponente entdeckt, die auf eine fehlerhafte Verarbeitung von Benutzerrechten zurückzuführen ist. Die Sicherheitsanfälligkeit ermöglicht es, die Benutzerrechte auf das maximal mögliche SYSTEM zu erhöhen und alle Schutzmechanismen von Windows zu umgehen. Dies ist der Fall, wenn der Windows-UAC-Mechanismus verwendet wird und der Benutzer mit der Secure Desktop-Komponente interagiert, indem er das Dialogfeld zum Starten der Datei im Namen des Administrators öffnet.

Bild

Was ist das Wesentliche der Sicherheitsanfälligkeit? Das Zertifikat der ausführbaren Datei enthält ein optionales numerisches Feld "Richtlinienkennung" im Format der Microsoft-spezifischen Objektkennung (OID).

Bild

Die Wintrust.h-Headerdatei definiert dieses Feld als SPC_SP_AGENCY_INFO_OBJID. Obwohl sein Zweck schlecht dokumentiert ist, wird er höchstwahrscheinlich analysiert, wenn ein Fenster mit Zertifikatdetails geöffnet wird. Wenn dieses Feld im richtigen Format angezeigt wird, wird das Feld Ausgestellt von als Hyperlink mit dem Wert aus dem Attribut SpcSpAgencyInfo angezeigt.

Bild

Wenn Sie auf einen Link mit dem Feld Ausgestellt von klicken, wird Internet Explorer mit SYSTEM-Berechtigungen geöffnet. Der übergeordnete Prozess dafür ist der Prozess consent.exe. Es wird auch mit maximalen Berechtigungen ausgeführt und in diesem Kontext wird das Dialogfeld "Benutzerkontensteuerung" gestartet. Dementsprechend ist es weiterhin möglich, eine beliebige Datei (cmd.exe, powershell.exe) über das Browsermenü mit den geerbten SYSTEM-Rechten auszuführen.

Bild

Als PoC zur Demonstration der Ausnutzung der Sicherheitsanfälligkeit (Video siehe unten) schlug der Forscher vor, das Hilfsprogramm HTML Help ActiveX Control zu verwenden, dessen Zertifikat die oben beschriebenen Funktionen aufweist.

Gleichzeitig ist es möglich, ausführbare Dateien auf diese Weise zu signieren, z. B. mithilfe des PowerShell-Cmdlets Set-AuthenticodeSignature. Zunächst müssen Sie mit dem Dienstprogramm makecert aus dem Windows SDK ein selbstsigniertes Stammzertifizierungsstellenzertifikat und ein endgültiges Zertifikat erstellen. Die Anleitung finden Sie hier .

Die Sicherheitsanfälligkeit hat die Kennung CVE-2019-1388 und CVSS 7.8 erhalten. Alle Betriebssystemversionen von Windows 7 bis Windows Server 2019 waren davon betroffen.Nach der Installation des Patches wird das Feld Ausgestellt von in den Zertifikatdetails nicht mehr als Hyperlink angezeigt.

Eine Massenausnutzung dieser Sicherheitsanfälligkeit ist aufgrund der Schwierigkeit der Automatisierung unwahrscheinlich. Um einen darauf basierenden Angriff zu implementieren, muss der Benutzer viele Aktionen ausführen - vom Öffnen eines Fensters mit einem Zertifikat einer ausführbaren Datei bis zum Starten einer Befehlszeile über die Internet Explorer-Oberfläche. Daher hängt das wahrscheinlichste Angriffsszenario möglicherweise mit den Aktionen des internen Eindringlings zusammen.


Wie erkennt man


Um die Ausnutzung einer Sicherheitsanfälligkeit auf Windows x64-Plattformen zu erkennen, verwenden wir eine Korrelationsregel im SIEM-System im SIEM-System, die die Ereigniskette überwacht (auf dem überwachten Knoten müssen Sie zuerst die Überwachung des Prozessstarts mithilfe der entsprechenden Gruppenrichtlinie aktivieren oder das Sysmon-Dienstprogramm von Sysinternals verwenden):

  1. Erkennen des Starts des Prozesses constent.exe mit SYSTEM-Berechtigungen (Ereigniscode 4688 ).
  2. Erkennen des Starts des Prozesses C: \ Programme \ iexplore.exe mit SYSTEM-Rechten, wobei consent.exe als übergeordneter Prozess fungiert.
  3. Erkennen des Starts des Prozesses C: \ Programme (x86) \ iexplore.exe mit SYSTEM-Berechtigungen, wobei C: \ Programme \ iexplore.exe als übergeordneter Prozess fungiert.

    Bild
  4. Erkennen des Starts der Shell (cmd.exe, powershell.exe) mit SYSTEM-Berechtigungen, wobei C: \ Programme (x86) \ iexplore.exe als übergeordneter Prozess fungiert.

    Bild
  5. Die Prozess-ID C: \ Programme (x86) \ iexplore.exe aus Schritt 3 und die ID C: \ Programme (x86) \ iexplore.exe als übergeordneter Prozess aus dem vorherigen Absatz stimmen überein.

Nennen wir ein Beispiel für die beschriebene Korrelationsregel auf der FortiSIEM-Seite.

Verwendete Begriffe



Ausführliche Informationen zu den Zustimmungsbedingungen für launch.exe



Detail IEx64-Startbedingung



Detaillierte Startbedingungen für IEx86



Detaillierte Startbedingungen cmd.exe, powershell.exe



FortiSIEM-Korrelationsregel-Quellcode
<rules><DataRequest advanced="true" custId="1" type="Rule"> <Name>UAC Privilege Escalation through Secure Desktop</Name> <Description>   UAC Secure Desktop CVE-2019-1388</Description> <Remediation/> <CustomerScope groupByEachCustomer="true"> <Include>1</Include> <Exclude/> </CustomerScope> <PatternClause window="300"> <SubPattern id="148021654" name="Consent_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND procName CONTAIN "consent.exe" AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>user,procName</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021655" name="IE_x64_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND procName REGEXP (".*Files\\\\Internet.*\\\\iexplore\\.exe$") AND parentProcName CONTAIN "consent.exe" OR user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>procId,user,parentProcName,procName</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021664" name="IE_x86_Execution"> <SingleEvtConstr>eventId = 4688 AND procName REGEXP (".*\\(x86\\)\\\\.*\\\\iexplore\\.exe$") AND parentProcName REGEXP (".*Files\\\\Internet.*\\\\iexplore\\.exe$") AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>procName,parentProcName,procId,user</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021656" name="Cmd_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND ( procName CONTAIN "cmd.exe" OR procName CONTAIN "powershell.exe" ) AND parentProcName REGEXP (".*\\(x86\\)\\\\.*\\\\iexplore\\.exe$") AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>user,parentProcName,procName,parentProcId</GroupByAttr> </SubPattern> <GlobalConstr>IE_x86_Execution.procId = Cmd_Execution.parentProcId</GlobalConstr> </PatternClause> <IncidentDef eventType="UAC_Privilege_Escalation_through_Secure_Desktop" eventTypeGroup="PH_SYS_EVENT_PH_RULE_SEC" fireFreq="900" severity="7"> <ArgList>procName=Cmd_Execution.procName,parentProcName=Cmd_Execution.parentProcName,user=Cmd_Execution.user</ArgList> </IncidentDef> <DynWatchListDef/> <userRoles> <roles custId="0"></roles> </userRoles> <TriggerEventDisplay> <AttrList>phRecvTime,eventType,reptDevName,reptDevIpAddr,destIpAddr,destName,user,parentProcId,parentProcName,procId,procName,rawEventMsg</AttrList> </TriggerEventDisplay> </DataRequest> </rules> 


Der Forscher Florian Roth hat eine Sigma-Regel veröffentlicht, um Versuche zu erkennen, diese Sicherheitsanfälligkeit auszunutzen. Aufgrund von Spracheinschränkungen kann mithilfe der Regel jedoch nur ein Internet Explorer-Startereignis mit SYSTEM-Rechten und dem übergeordneten consent.exe-Prozess erkannt werden, ohne dass anschließend Shell-Starts erkannt werden. Es ist nicht möglich, die Kette notwendiger Ereignisse unter den oben beschriebenen Bedingungen (1-5) mit Sigma-Tools zu verfolgen, weshalb wir gezwungen waren, unsere eigene Regel zu entwickeln.

So schützen Sie sich


1. Installieren Sie den Microsoft-Patch vom 12. November für die entsprechende Betriebssystemversion.

2. Wenn ein Patch zur Beseitigung dieser Sicherheitsanfälligkeit nicht installiert werden kann, sollten Sie Folgendes verwenden:

  • AppLocker-Regeln, die das Starten von cmd.exe- und powershell.exe-Shells für Konten in der Benutzergruppe verbieten (Sie müssen Dienstprogramme und Techniken berücksichtigen, die AppLocker umgehen, das in LOLBINS aufgeführt ist ).
  • Host-basiertes IPS mit Systemen der Klasse EPP, EDR (Sie müssen Zugriffsregeln konfigurieren, die den Zugriff des Prozesses iexplore.exe auf cmd.exe, powershell.exe verhindern).

Source: https://habr.com/ru/post/de478616/


All Articles