Sizzle
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Sizzle
es un sistema operativo Windows con un entorno de Active Directory que presenta una dificultad increíble. Un directorio en el que se puede escribir en un recurso compartido SMB
permite robar hashes NTLM
que se pueden descifrar para acceder al Portal de servicios de certificados. Se puede crear un certificado autofirmado utilizando la CA
y utilizarlo para PSRemoting
. Un SPN
asociado a un usuario permite un ataque kerberoast en el sistema. Se descubre que el usuario tiene derechos de replicación que se pueden utilizar de forma abusiva para obtener hashes de administrador a través de DCSync
.
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Sizzle.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX.
Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.
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
Revisaremos las tecnologías que utiliza la aplicación web a través de la herramienta de whatweb.
Por otra parte, procederemos a realizar una enumeración de posibles directorios del sitio web.
Procederemos a revisar si podemos hacer (Directory Listing) sobre los directorios que hemos encontrado. Verificamos que nos aparece mensaje de 403 Forbidden.
Procederemos a enumerar el servicio de FTP a través del usuario anonymous, verificamos que podemos acceder correctamente pero no dispone de ningún directorio/archivo en el servidor FTP.
Revisaremos si el usuario guest se encuentra habilitado y podemos autenticarnos al sevidor SMB. Verificamos que el usuario se encuentra activo y dispone de permisos READ sobre un recurso compartido nombrado (Department Shares).
Verificaremos a través del módulo de (spider_plus) la estructura de los recursos compartidos, para ver si dispone de algún archivo interesante.
En este caso, vemos que hay archivos pero ninguno que nos pueda aportar información relevante.
Uno de los ataques más eficaces en redes SMB es el Hash Stealing utilizando un archivo SCF malicioso. Este tipo de ataque permite interceptar las credenciales NTLMv2 de usuarios conectados a recursos compartidos en un servidor vulnerable.
Antes de proceder a analizar el recurso SMB, lo primero es montar el recurso en nuestro sistema local. Esto nos permitirá explorar los directorios y sus permisos para comprobar si podemos escribir en alguno de ellos.
A través del sguiente comando, procederemos a enumerar todos los directorios para buscar si disponemos de permisos de Escritura sobre alguno de ellos.
Verificamos que hay un recurso llamado "Users/Public" que podríamos probar de realizar el ataque en este recurso.
Una vez montado el recurso SMB, procederemos a crear un archivo SCF malicioso que redirija las acciones realizadas sobre el recurso SMB hacia nuestro sistema. Este archivo malicioso permitirá interceptar las comunicaciones SMB y posteriormente robar los hashes NTLMv2.
Una de las maneras que disponemos de realizar el ataque, es montando un servidor SMB en nuestra Kali para recibir el hash NTLMv2.
Para empezar, subiremos el archivo SCF malicioso en el recurso que podemos escribir (Users/Public) y con el servidor SMB montado, al pasar un tiempo vemos que recibimos el hash NTLMv2 del usuario "amanda".
Otra de las maneras de realizar el ataque sin tener el servidor SMB montado en nuestro equipo atacante, es mediante el Responder, el cual recibirá el hash NTLMv2.
Guardaremos el hash NTLMv2 en un archivo TXT y a través de la herramienta de hashcat, procederemos a intentar crackear el hash para obtener la contraseña en texto plano.
Primero, procederemos a validar si las credenciales obtenidas para el usuario amanda son válidas, y también investigaremos de qué recursos compartidos tenemos permisos.
Al realizar un escaneo de recursos compartidos SMB en la máquina objetivo (10.10.10.103), observamos que tenemos acceso de READ sobre el recurso compartido llamado CertEnroll. Este recurso es utilizado por los servicios de Active Directory para gestionar certificados, donde se almacenan las solicitudes, plantillas y configuraciones asociadas. Aunque tenemos acceso de solo lectura, podemos intentar aprovechar esta entrada para realizar alguna acción.
Con las credenciales amanda / Ashare1972, intentamos conectarnos al WinRM, pero descubrimos que la autenticación NTLM no está funcionando correctamente. A pesar de ingresar las credenciales correctamente, el sistema simplemente nos vuelve a solicitar la autenticación, indicando que probablemente esté configurado para requerir un mecanismo de autenticación más seguro.
Al intentar acceder al servicio WinRM con las credenciales amanda / Ashare1972
, nos encontramos con que la autenticación NTLM no funciona correctamente.
A pesar de ingresar las credenciales correctamente, el sistema simplemente nos vuelve a solicitar la autenticación, como si las credenciales fueran inválidas. Esto ocurre porque el servicio está bloqueado o configurado para requerir un mecanismo de autenticación más seguro.
Dado que la autenticación NTLM está bloqueada, decidimos investigar el recurso compartido CertEnroll para buscar un servicio alternativo que permita la autenticación. Al explorar el sitio web asociado, encontramos el directorio /certsrv/, que pertenece al servicio de Active Directory Certificate Services (AD CS).
Verirficamos que logramos ingresar a la página de Microsoft Active Directory Certificate Services (AD CS).
En la página, observamos que se nos permite solicitar un certificado, eligiendo entre User Certificate o Advanced certificate request. Debemos seleccionar la opción de Advanced certificate request.
Procedemos a generar un Certificate Signing Request (CSR) con OpenSSL. Este CSR contiene información que enviaremos al servidor para obtener un certificado válido.
Volvemos al sitio /certsrv/ y pegamos el contenido del CSR en el formulario de solicitud.
El servidor nos ofrece el certificado en formato Base64. Seleccionamos la opción de Download certificate para descargar el certificado correspondiente al usuario amanda.
Revisaremos que disponemos de los archivos CSR, KEY y CER de los certificados que hemos generado.
Ahora, con el certificado descargado, procedemos a autenticar al usuario amanda utilizando WinRM. Reemplazamos las credenciales tradicionales con el certificado, lo que nos permite acceder correctamente al equipo:
Dado que disponemos de credenciales válidas de un usuario del dominio, procederemos a realizar una enumeración a través de BloodHound en buscar de vectores para elevar nuestros privilegios.
Al enumerar en BloodHound, verificamos que hay un usuario que es Kerberoastable, por lo tanto, es susceptible a realizar un Kerberoasting Attack.
Dado que hemos visto que existe un usuario susceptible al Kerberoasting Attack, procederemos a intentar a realizar el ataque a través de la herramienta GetUserSPNs, verificamos que no nos reporta ningún resultado.
Esto es debido seguramente a que el Kerberos no se encuentra expuesto, deberemos de buscar otra manera de explotar este ataque.
Dado que disponemos de acceso a la máquina víctima (Domain Controller), podemos de probar de realizar el Kerberoasting Attack a través de la herramienta de Rubeus.exe.
Procederemos a intentar subir el binairo del Rubeus.exe y en nuestro caso no nos permite la subida directamente con el comando "upload" que nos poporciona evil-winrm.
Probaremos de levantar un servidor web con Python y a descargar el archivo a través de IWR, verificamos que el binario se ha descargado correctamente en el equipo víctima.
Al intentar ejecutar el binario en la ruta (C:\Temp), nos aparece un eror indicando que se ha bloqueado la ejecución debido a una política, muy probablemente debido al AppLocker.
A través del siguiente comando, revisaremos la política del AppLocker y verificamos que hay una excepción en los directorios que se encuentran dentro de (WinDir).
En nuestro caso, hemos optado por crear un directorio en (C:\Windows\Temp), moveremos el binario a este nuevo directorio creado.
Una vez obtenido el binario en este nuevo directorio, al realizar el ataque, verificamos que hemos conseguido el TGS (Ticket Granting Service) del usuario (mrlky@htb.local).
A continuación, veremos otra de las maneras efectivas de explotar este ataque mediante Port-Forwarding.
Dado que el puerto 88 (Kerberos) no se encuentra expuesto en el equipo víctima y con la herramienta de impacket-GetUserSPNs al principio no pudimos efectuar el ataque, el objetivo será realizar el Port-Forwarding del puerto 88 (Kerberos) y 389 (LDAP) del Domain Controller para que se encuentren accesibles desde nuestro equipo local de atacante.
Para ello, pasaremos el binario del chisel.exe al equipo víctima, configuraremos el chisel en sevidor en la máquina Kali y cliente en el equipo Windows, haremos que el Kerberos y LDAP sean accesibles por los mismos puertos pero desde nuestro equipo de atacante.
Revisaremos que en nuestro equipo, los puertos 88 (Kerberos) y 389 (LDAP) se encuentran accesibles correctamente a través de chisel.
Pocederemos de realizar nuevamente el ataque mediante la herramienta de impacket-GetUserSPNs al localhost (127.0.0.1) y verificamos que ahora si hemos podido realizar el ataque desde la máquina Kali y hemos obtenido el TGS (Ticket Granting Service).
Al obtener el TGS; pocederemos a crackearlo con hashcat y verificamos que hemos logrado obtener la contraseña en texto plano del usuario mrlky@htb.local.
Validaremos que las credenciales de este usuario son válidas y de los recursos que tiene acceso dicho usuario.
Revisando nuevamente en BloodHound, verificamos que este nuevo usuario dispone de permisos de DCSync sobre el dominio.
Este permiso habilita al usuario a extraer los hashes NTLM de todos los usuarios del dominio, lo que facilita ataques como Pass-The-Hash, permitiendo el acceso a servicios y equipos sin necesidad de conocer las credenciales en texto plano de los usuarios del dominio, incluyendo a los usuarios que sean Domain Admins.
Procederemos a realizar el ataque de DCSync Attack mediante la herramienta de secretsdump.
Verificamos que hemos logrado obtener todos los hashes NTLM de los usuarios del dominio, incluyendo las del usuario Administrator.
Validaremos que podemos autenticarnos mediante Pass-The-Hash con el hash NTLM del usuario Administrator.
Procederemos a conectarnos al Domain Controller mediante la herramienta de wmiexec realizando Pass-The-Hash.
Verificamos del acceso correctamente y de la flag de root.txt.
Accederemos a y comprobaremos el resultado en un formato más cómodo para su análisis.
Procederemos a acceder a el cual contiene un GIF, aparantemente no contiene ningún metadato ni nada extraño.
Utilizamos el escáner gobuster para realizar un barrido del sitio web y verificamos que existe el directorio :
Intentamos acceder a con las credenciales de la usuaria (amanda@htb.local).
Otra de las maneras para evitar la restricción del AppLocker, es mediante las siguientes rutas que nos encontramos en el siguiente repositorio de GitHub.