Cascade
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Cascade
es una máquina Windows de dificultad media configurada como un controlador de dominio. Los enlaces anónimos de LDAP están habilitados y la enumeración genera la contraseña del usuario r.thompson
, que brinda acceso a una copia de seguridad del registro TightVNC
. La copia de seguridad se descifra para obtener la contraseña de s.smith
. Este usuario tiene acceso a un ejecutable .NET, que después de la descompilación y el análisis del código fuente revela la contraseña de la cuenta ArkSvc
.
Esta cuenta pertenece al grupo AD Recycle Bin
y puede ver los objetos de Active Directory eliminados. Se descubre que una de las cuentas de usuario eliminadas contiene una contraseña codificada, que se puede reutilizar para iniciar sesión como administrador principal del dominio.
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Cascade.
Lanzaremos una serie de scripts básicos para intentar buscar vulnerabilidades en los puertos que hemos encotrado expuestos.
Comprobaremos el nombre del dominio con el cual nos enfrentamos a través del siguiente comando.
Verificaremos también a qué tipo de máquina nos enfrentamos a través de netexec.
Procederemos a añadir la entrada en nuestro archivo /etc/hosts
Probaremos a través de la herramienta NSrpcenum de ver si nos podemos conectar al RPC mediante una null sesión y enumerar usuarios, comprobamos que si podemos efectuar el ataque y sacamos todo el listado de los usuarios que se encuentran en el dominio.
Otra de las herramientas que podemos probar es la de enum4linux que nos mostrará mucha más información a parte de la de los usuarios del equipo.
Procederemos a realizar una enumeración de qué usuarios de esos son válidos en el dominio, es decir, que su cuenta sea de AD.
Debido que disponemos de una gran lista de usuarios válidos, procederemos a intentar efectuar un AS-REP Roasting Attack para intentar obtener un Ticket Granting Ticket (TGT), pero no obtenemos resultado.
Procederemos a enumerar el protocolo LDAP y estaremos utilizando la herramienta de windapsearch.py la cual estaremos buscando por contenido que contenga "pwd" o "password".
Nos damos cuenta que aparece un campo llamado "cascadeLegacyPwd" con lo que parece ser una contraseña encodeada en Base64.
Podemos realizar la misma enumeración a través de la herramienta de ldapsearch.
Probaremos a descodificar el texto encontrado en Base64 y parece que obtenemos lo que parece ser una contraseña.
Probaremos de enumerar a todos los usuarios que disponemos para ver si uno de ellos se puede llegar a autenticar. Verificamos que el usuario "r.thompson" se puede autenticar con dichas credenciales.
Procederemos a intentar comprobar si con este usuario podemos acceder al WinRM, pero no nos lo acepta seguramente por falta de permisos, pero sus credenciales son correctas.
Debido que disponemos de unas credenciales válidas de un usuario, procederemos a intentar realizar un Kerberoasting Attack para solicitar un Ticket Granting Service (TGS), sin resultado esperado tampoco.
Procederemos a realizar la enumeración de SMB, para ver los recursos compartidos que tiene acceso el usuario "r.thompson".
Procedferemos a revisar por encima, cual es el contenido de la carpeta "Data" para ver si dispone de directorios, archivos, para así descartarlo de enumerarlo en caso que no disponga de nada.
Procederemos a conectarnos mediante smbclient al recurso compartido "DATA" y nos descargaremos todo el contenido del recurso compartido en nuestro equipo local.
El primer archivo que vemos, es una página web que indica que se creó un usuario llamado "TempAdmin" que su contraseña es la misma que la del usuario Administrador, pero este usuario se creó en un momento puntual y fue eliminado a finales de 2018.
Nos quedaremos con esta información por si pudieramos recuperar al usuario "TempAdmin" y lograr ver su contraseña más adelante.
Por otro lado, disponemos de un log en el cual se menciona al usuario "ArkSvc" y parece ser que se estan realizando tareas de eliminar/mover a usuarios del AD. Relativamente no encontramos algún tipo de información.
Revisando el archivo "VNC Install.reg" comporbamos que dispone de un valor llamado "Password" con una contraseña encodeada parace ser en hex.
Probaremos de descodear el contenido en hex de manera habitual, pero nos encontramos que el contenido no está en texto plano, esto hace pensar que alomejor pueda estar encriptado y por dicho motivo no lo vemos en texto plano.
Comprobamos finalmente lo que parece ser la contraseña en texto plano.
Procederemos a revisar si algún usuario de los que disponemos se puede autenticar con estas credenciales, comprobamos que el usuario "s.smith" puede autenticarse.
Guardaremos las nuevas credenciales obtenidas en nuestro archivo "credentials.txt"
Validaremos con netexec de que podemos conectarnos al WinRM, comprobamos que sí, debido que la herramienta nos reporta (pwn3d) y obtenemos la flag de user.txt.
Comprobaremos con el nuevo usario obtenido a qué recursos compartidos tiene acceso. Comprobamos que dispone de acceso al recurso "Audit$", por lo tanto con sqlmap listaremos el directorio para ver que no esté vacío.
Procederemos a conectarnos a través de smbclient y nos descargaremos todo el contenido del recurso.
Uno de los archivos que nos llama la atención, es el de "Audit.db" que es un archivo de BBDD. Reviasndo con el comando strings nos damos cuenta que es sobre un SQLite y se han ejecutado insutrcciones, estas mismas hacen referencia auna tabnla llamada "LDAP".
Revisando el contenido de la tabla "LDAP", obtenemos lo que parece ser el usuario "ArkSvc" y su respectiva contraseña encodeada en Base64.
Probaremos de descodearlo en Base64, pero obtenemos un resultado que no está en texto plano, lo que nos puede indicar que el contenido parece estar cifrado.
Procederemos a enumerar losnotros archivos, como el .exe .dll des de DNSpy. Nos fijamos que el binario del EXE hace uso de la librería Crypto que es una librería para la encriptación de texto, y vemos que aparece una clave en textoplano.
En el código hemos encontrado AES-CBC, un modo de cifrado que utiliza una clave secreta para cifrar datos en bloques donde cada bloque depende del anterior, y emplea un IV (Vector de Inicialización) para añadir aleatoriedad al primer bloque, lo que evita patrones repetidos y asegura que cada mensaje cifrado sea único y más seguro incluso si se usa la misma clave en múltiples cifrados.
Procederemos a realizar ingeniería inversa al cifrado CBC, para ello deberemos de tener los siguientes 3 datos
KEY
IV
Password
Ingresaremos a CyberChef y lo descodificaremos y ontendremos la contraseña en texto plano.
Procederemos de conectarnos conel usuario "Arksvc" con las nuevas credencials al WinRM.
Revisando los grupos a los que pertenece el usuario, nos fijamos que forma parte del grupo de "AD Recycle Bin", lo que nos permitirá encontrar objectos que han sido borrados.
Debido que formamos parte de este grupo, nuestro objetivo será de recuperar información sobre el usuario "TempAdmin" que según descubrimos en el archivo .html cuando enumeramos el SMB; indicaba que este usuario disponía de las mismas credenciales que utiliza el usuario Administrator, por lo tanto, en caso de tener la contraseña de este usuario podríamos llegar a probar si aún son válidas para el usuario Administrator.
Procederemos a buscar objetos que sean usuarios que hayan sido borrados. Comprobamos que nos aparece el usaurio borrado "TempAdmin", procederemos a listar ls propiedades.
Comprobamos que en un campo aparece "cascadeLegacyPwd" con lo que parece ser una contraseña encodeada nuevamente en Base64.
Procederemos a desencodear y nos aparece una contraseña en texto plano, validaremos con netexec de que las credenciales son válidas para el usuaro Administrator, nos conectarmos haciendo uso de evil-winrm y comprobaremos la flag de root.txt.
Como se trata de un VNC password ecnriptado, buscando en Internet logramos descubrir la siguiente página web - en la cual nos explicaba como desencriptar el hex de VNC.