Escape

Escape es una máquina de nivel medio en Active Directory de Windows. Comienza con la enumeración de un recurso compartido SMB que permite a los usuarios autenticados como invitados en donde encontraremos un archivo PDF sensible para acceder a un servicio MSSQL en la máquina. Luego forzaremos al servicio MSSQL a autenticarse a nuestra maquina atacante y capturar el hash. Resulta que el servicio se está ejecutando bajo una cuenta de usuario y el hash es crackeable. Con un conjunto válido de credenciales. Explorando el sistema encontraremos las credenciales del usuario ryan.cooper en un archivo de registro. Además, se descubre una Autoridad de Certificación en la máquina, con una plantilla de certificado vulnerable al ataque ESC1. Esto permite a los usuarios solicitar certificados para cualquier otro usuario en el dominio, incluidos los Administradores de Dominio. Al explotar la vulnerabilidad ESC1, un atacante puede obtener un certificado válido para la cuenta de Administrador y luego usarlo para obtener el hash del usuario administrador.

20240312134710.png

Enumeración

Iniciamos enumerando los puertos que se encuentra abiertos en la maquina victima, esto con la herramienta de nmap

  • -p-: especifica que se escaneen todos los puertos (desde el puerto 1 hasta el puerto 65535).

  • --open: muestra solo los puertos que están abiertos.

  • --min-rate 5000: establece la tasa mínima de paquetes por segundo a 5000 para acelerar el escaneo.

  • -vvv: establece un nivel de verbosidad muy alto, mostrando una salida muy detallada del escaneo.

  • -Pn: ignora la detección de hosts y asume que el objetivo está activo.

  • -n: evita la resolución DNS inversa para las direcciones IP.

  • 10.10.11.202: es la dirección IP del host que se va a escanear.

  • -oG allportsScan: genera un archivo de salida en formato greppable con el nombre "allportsScan".

Luego de obtener los puertos abiertos lo que haremos será enumerar los servicios y las versiones de estas en cada uno de los puertos.

  • -p: especifica los puertos a escanear. En este caso, se están escaneando los puertos 53, 88, 135, 139, 389, 445, 464, 593, 636, 1433, 3268, 3269, 5985, 9389, 49667, 49673, 49674, 49686, 49726 y 62405.

  • -sC: activa la opción de enumeración de scripts predeterminados de Nmap. Esto permite ejecutar una serie de scripts diseñados para detectar vulnerabilidades o características específicas de los servicios.

  • -sV: realiza una detección de la versión de los servicios que se encuentran en los puertos especificados.

  • -Pn: ignora el descubrimiento de hosts y asume que el objetivo está activo.

  • -n: evita la resolución DNS inversa para las direcciones IP.

  • -vvv: establece un nivel de verbosidad muy alto, mostrando una salida muy detallada del escaneo.

  • 10.10.11.202: es la dirección IP del host que se va a escanear.

  • -oN servicesScan: genera un archivo de salida en formato normal con el nombre "servicesScan".

Enumeración de smb

Encontramos que el servicio smb esta abierto y procederemos a enumerar los recursos compartidos que están disponibles.

20240312154359.png

Podemos ver que tenemos permiso de lectura en el directorio Public. Haciendo uso de smbclient ingresaremos al recurso compartido para ver el contenido de la carpeta

20240312154502.png

Dentro del directorio encontraremos un pdf que contiene credenciales que podemos para tratar de ingresar a la maquina victima.

20240312154517.png

Explotación

Haciendo uso de las credenciales y la herramienta de impacket-mssqlclient que encontramos podemos ingresar a la base de datos que es un sql server.

20240312181808.png

Steal NetNTLM hash / Relay attack

Enumerando encontraremos que desde la terminal de la base de datos podemos hacer una petición a un recurso compartido de nuestra maquina y así obtener un has netNTLM, que es crackeable

Primero iniciaremos un servidor smb con impacket en nuestra maquina atacante

Luego ejecutaremos, haciendo una petición de un recurso compartido a nuestra maquina atacante

20240312184306.png

Luego deberiamos de obtener un hash del usuario sql_svc

20240312184327.png

Cracking hash

Ahora para crackear el hash que obtuvimos, usaremos la herramienta de john

Una vez obtenida la contraseña, lo que haremos será validarla contra el servicio winrm con la herramienta de netexec

20240312184439.png

Nos da un resultado de Pwn3d!, lo que no indica que la contraseña es valida y podemos conectarnos haciendo uso de evil-winrm

Escalada de privilegios

Usuario : sql_svc

Luego de validar las credenciales con netexec, ingresaremos a la maquina victima

20240312184604.png

Luego de enumerar la maquina victima encontraremos un .bak en donde encontraremos las credenciales del usuario ryan.cooper

20240312204424.png

Usuario : ryan.cooper

Una vez obtenidas las credenciales, lo que haremos será validarlas con netexec

20240312204502.png

¡Las credenciales son validas! Ahora haciendo uso de evil-winrm ingresaremos a la maquina victima por el servicio winrm

20240312204659.png

Certify

Enumerando encontraremos que un certificado de UserAuthentication tiene una vulnerabilidad. Esto lo enumeraremos con la herramienta de certify.exe que la podemos descargar de SharpCollectionarrow-up-right

20240313103652.png
20240313103714.png

Luego haremos una petición de un certificado para el usuario administrator, que nos dara un cert.pem

20240313113118.png

Luego copiareamos y lo guardaremos en un archivo cert.pem y vamos a transformar el certificado generado como .pem a .pfx con openssl de la siguiente manera

20240313113141.png

Luego subiremos el cert.pem con upload a la maquina victima

Ahora podremos usarlo para autenticarse usando Rubeus, podemos ver y leer un poco mas en el repositorio de Rubeus - asktgtarrow-up-right

20240313113335.png

Ahora con /getcredentials solicitaremos las credenciales en donde encontraremos el hash NTLM

20240313113403.png
20240313113424.png

Teniendo el hash, lo que haremos será un pass the hash con evil-winrm

Usuario : administrator

20240313113452.png

Certipy

Ahora haremos lo mismo que hicimos con certify con otra herramienta que es Certipy. Para mas detalles sobre la explotación de certificados podemos ir al sitio web de ESC 1 missconfigured certifiguredarrow-up-right

Haremos una petición del certificado con el usuario de administrator

20240313104232.png

Luego obtendremos un archivo administrator.pfx que lo usaremos para obtener el hash NTLM

20240313113702.png

Vemos que tenemos problemas con nuestra configuración de tiempo con la maquina victima, para ello lo que haremos será deshabilitar la sincronización de nuestra maquina atacante virtualizada en virtual box

Ahora haremos uso de ntpdate para sincronizar nuestra hora local de nuestra maquina atacante con la maquina victima.

20240313140812.png

Ahora si podemos volver a ejecutar y podremos obtener el hash NTLM.

20240313140909.png

Usuario : administrator

20240313141342.png

Recursos:

Last updated