Cicada - HackTheBox

elc4br4elc4br4
5 min read

Reconocimiento

Comenzamos realizando el reconocimiento del sistema operativo a través de la herramienta WhichSystem.py.

Esta herramienta se basa en el TTL para determinar el sistema operativo de la máquina.

Si el TTL es de 64 estamos ante una máquina Linux, si es 128 Windows.

Reconocimiento de Puertos

Comenzamos la fase de reconocimiento de puertos en la máquina víctima, para ello como de costumbre usamos la herramienta nmap.

El primer comando a utilizar lo que hará será identificar los puertos abiertos en la máquina víctima.

nmap -p- -Pn -n --min-rate 5000 $ip -oG puertos-cicada

Una vez que tenemos los puertos abiertos identificados procedemos a lanzar un escaneo un poco más avanzado que nos proporcionará mucha más información sobre estos puertos.

nmap -p<puertos> -n -Pn -sCV $ip -oN servicios-cicada

Podemos ver el dominio cicada.htb

Puerto 88 - Kerberos

Añadimos el dominio junto a la dirección IP en el archivo hosts y continuamos enumerando.


RpcClient - Null Session

Tenemos el puerto 135 (msrpc) abierto por lo que comenzaré enumerando por aquí utilizando una NULL Session ya que no dispongo de credenciales.

Como podemos ver en la imagen anterior al no disponer de credenciales no podemos hacer absolutamente nada... por lo que continuaré por otro lado hasta que disponga de credenciales.

SMB - Null Session

El puerto 445 está abierto, por lo que podemos buscar algun recurso compartido existente en la máquina víctima.

A través de la herramienta smbclient listo los recursos compartidos usando una NULL Session ya que no dispongo de credenciales.

smbclient --no-pass -L //cicada.htb

Podemos ver que hay 2 recursos compartidos que llaman la atención...

DEV y HR

Intento conectarme al recurso DEV usando la null session.

Sin credenciales no puedo acceder al recurso DEV, por lo que pruebo con el recurso HR.

smbclient \\\\cicada.htb\hr -N

Encuentro un archivo de texto llamado "Notice from HR.txt" que me descargo y abro para ver su contenido.

Dentro del archivo encontramos unas credenciales...

Pero necesitamos obtener algún usuario válido para las credenciales... por lo que el siguiente paso es obtener usaurios.

Obtención de usuarios mediante Netexec

Con la herramienta netexec hay un pàrámetro llamado --rid-brute que básicamente hace un ataque de fuerza bruta a los RID de los usuarios.

El RID (Relative Identifier Master) es el rol encargado de vincular el RID a los objetos creados.

En un dominio, cuando se crea un objeto (ya sea un usuario, un grupo o un equipo), se le asigna un SID (Security IDentifier) que es único y que nunca es reutilizado incluso aunque el objeto sea eliminado.

Por lo tanto haciendo uso de netexec haremos fuerza bruta a los RID sin tener credenciales válidas.

netexec smb cicada.htb -u guest -p '' --rid-brute

Como podemos ver hemos obtenido una lista de usuarios del dominio, por lo que ahora podemos meter estos usuarios en un diccionario y probar mediante netexec a qué usuario van asociadas las credenciales que encontramos anteriormente.

netexec smb cicada.htb -u guest -p '' --rid-brute | tail -n 6 | grep "SidTypeUser" | awk '{print $6}' | cut -c 8- > usuarios-rid.txt

Tras introducir los usuarios en un archivo de texto lanzamos netexec para encontrar el usuario asociado a la contraseña.

Podemos ver que el usuario michael.wrightson es el usuario asociado a la contraseña que encontramos anteriormente.

Llegados a este punto podríamos intentar utilizar estas credenciales para enumerar de nuevo usando rpcclient por ejemplo.

LdapDomainDump

Probaremos a enumerar de nuevo usando las credenciales que hemos obtenido.

Para enumerar el dominio utilizaremos la herramienta ldapdomaindump.

ldapdomaindump ldap://$ip -u 'cicada.htb\michael.wrightson' -p '$password'

Se nos generarán varios archivos en diferentes formatos, en formato JSON, grepeable, html...

En mi caso me interesan solo los que están en html ya que así puedo abrirlos y verlos desde el navegador de forma más visual.

En el archivo de ususrios del dominio (domain users) encontraremos un listado de todos los usuarios y si no fijamos bien veremos una contraseña.

Encontramos una contraseña que pertenece al usuario david.orelious.


SMB con credenciales de usuario

De nuevo vamos a intentar utilizar smbclient para conectarnos al recurso DEV utilizando las credenciales del usuario david.orelious.

Podemos ver que hay un archivo .ps1 llamado Backup_script el cual me descargo y abro para ver su contenido.

De nuevo encontramos unas credenciales pertenecientes al usuario emily.oscars, por lo que podríamos verificar con netexec si nos puede servir para conectarnos vía WinRM.

netexec winrm $ip -u emily.oscars -p $password 2>/dev/null

Como vemos podemos usar este usuario y su credencial para ganar acceso vía WinRM.


Escalada de Privilegios

Llegados a este punto el siguiente paso es escalar privilegios en la máquina para obtener acceso con privilegios máximos.

El primer paso será enumerar los privilegios que tenemos de usuario.

whoami /priv

Y podemos ver que tenemos el privilegio SeBackupPrivilege, el cual nos podría servir para leer cualquier archivo del sistema.

Para abusar de este privilegio seguiremos estos pasos:

  • Primero crearemos un directorio Temp en la raíz del sistema
cd c:\
mkdir Temp
  • A continuación nos guardaremos en el directorio Temp las claves de registro SAM y System.
reg save hklm\sam C:\Temp\sam

reg save hklm\system C:\Temp\system
  • Después descargamos en nuestra máquina las claves sam y system usando el comando download de evil-winrm.

Una vez tenemos en nuestra máquina atacante los doss registros, procedemos a lanzar la herramienta pypykatz que nos mostrará el hash del usuario Administrador.

Por lo que a continuación podemos usar el hash del usuario Administrador para hacer Pass The Hash a través de WinRM y ganar acceso a la máquina con privilegios máximos.

Hemos conseguido pwnear la máquina Cicada.

0
Subscribe to my newsletter

Read articles from elc4br4 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

elc4br4
elc4br4

Cybersecurity Student