¡Hola a todos y feliz año nuevo! 🥳 Hoy (después de taaaaanto tiempo otra vez) os traigo una entrada nueva, en este caso la resolución de una máquina de directorio activo llamada Raz0rBlack, de TryHackMe ya que últimamente estoy intentando mejorar en AD.
Como siempre para empezar el recon vamos a ver qué puertos abiertos tiene la máquina.
Podemos identificar varias cosas interesantes, el nombre de dominio, que vamos a añadirlo a nuestro archivo hosts ya, kerberos que intentaremos explotar más tarde y un servicio NFS que vamos a revisar ahora.
Vamos a usar showmount para ver qué hay compartido en el dominio:
Hay una carpeta llamada users que podemos montar en nuestro sistema:
Hay un archivo txt que contiene la primera flag (la del usuario sbradley) y una hoja de cálculo. Vamos a guardar los dos archivos en nuestra máquina y a cambiar los permisos para poder verlos.
El contenido del txt no lo vamos a ver ya que es la flag y no nos va a servir de nada, pero veamos el xlsx.
Como veis, tenemos nombres y apellidos y uno de estos coincide con el usuario de la flag, "sbradley" es "steven bradley" por lo que deducimos que todos los usuarios siguen el formato de la inicial del nombre y el apellido completo. Podemos hacer una lista con todos los usuarios.
Ahora comprobamos el código correspondiente a este hash para usarlo en hashcat y obtener la contraseña del usuario.
Si usamos smbmap con el usuario y la contraseña obtenidos vamos a ver distintos recursos compartidos, uno de ellos resulta llamativo ya que no es de los que vienen por defecto, "trash". Pero no tenemos acceso.
Vamos a borrar el usuario twilliams de la lista de usuarios (ya que tenemos su contraseña) y vamos a hacer fuerza bruta por samba con crackmapexec para ver si esta contraseña es reutilizada por otros usuarios.
El resultado del usuario sbradley es una indicación del sistema que indica que la contraseña debe de ser cambiada, por lo que vamos a reemplazar la antigua por una nueva, por ejemplo "Usuario12345".
Ahora que hemos cambiado la contraseña, podemos realizar una conexión por samba al dominio. Vamos a ver con smbmap a qué directorios tenemos acceso.
Como ahora tenemos acceso a "trash", vamos a ver qué contiene y a descargar los ficheros.
Uno de estos archivos es una conversación entre el usuario y el administrador en la que el usuario dice que ha explotado ZeroLogon en el servidor y ha obtenido los ficheros ntds.dit y system.hive.
También tenemos un fichero zip con contraseña al que podemos hacer fuerza bruta con john. Para ello, convertimos con zip2john el zip a un hash con el que john pueda trabajar y después se lo pasamos. Una vez obtenida la contraseña, lo descomprimimos y obtenemos los ficheros que mencionaba sbradley en la conversación.
Ahora podemos obtener los hashes de los ficheros system.hive y ntds.dit con secretsdump.
Vamos a quedarnos sólo con el campo que nos interesa de cada línea y lo guardamos en un fichero de texto para usarlos haciendo hash spraying.
Ejecutamos crackmapexec para descubrir si alguno de estos nos va a servir para hacer un pass the hash para el usuario lvetrova (la siguiente tarea de la room nos daba la pista de qué usuario tocaba, por lo que usamos ese en lugar de la lista entera).
Después de varios intentos vemos que se ha encontrado el hash correcto.
Ahora que tenemos el usuario y su hash, vamos a usar evil-winrm para conseguir una conexión a la máquina mediante pass the hash.
La conexión de lvetrova (aparte de la flag que estaba en su carpeta personal) no me aportó nada ya que no encontré la forma de escalar o moverme a otro usuario de bajos privilegios desde esta conexión por lo que vamos a intentar obtener hashes por los SPNs con lvetrova.
Vamos a repetir lo mismo que antes con el hash que acabamos de obtener, identificamos el hash y hacemos fuerza bruta con hashcat para obtener la contraseña.
Volvemos a conectarnos con evil-winrm al servidor pero esta vez con la contraseña y usuario que acabamos de obtener.
Revisé los privilegios que tenía el usuario y esta vez había forma de escalar privilegios con él, en concreto con el privilegio SeBackupPrivilege.
Seguí un post en el que se explicaba cómo escalar con este privilegio otorgado y lo exploté correctamente, para ello creamos este fichero y se lo pasamos a unix2dos.
Mediante la conexión que habíamos establecido subimos el archivo y dos dll que se encuentran en un repositorio de github que encontré en el post que usé para escalar. Una vez subidos los archivos, importamos los módulos y usamos el primer archivo subido.
Ahora podemos hacer una copia del archivo ntds.dit y otra de system en el directorio temporal que estamos usando.
En mi caso he abierto un servidor de samba en mi máquina para copiar los dos archivos (abajo está la ejecución del smbserver y arriba la copia de la máquina víctima a la atacante).
Ahora que tenemos los dos archivos en nuestra máquina, usamos secretsdump para obtener hashes de estos dos archivos y volver a intentar un pass the hash.
Probamos el hash de administrador con evil-winrm y vemos que se ha realizado la conexión correctamente.
¡Con esto hemos comprometido completamente la máquina!
Me ha gustado mucho esta máquina aunque me ha costado bastante (al igual que cada vez que hago AD xD) pero veo que voy mejorando y asimilo mejor los conceptos del directorio activo.
Me gustaría traer más publicaciones en las que veamos AD ya que es algo que últimamente me está llamando la atención y quiero tener una buena base de cara a poder auditar ADs en empresas en un futuro, por lo que espero que a vosotros os gusten estas entradas.
Muchas gracias a todos una vez más por leerme y espero volver por aquí pronto.
No hay comentarios:
Publicar un comentario