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.

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.

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

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

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.

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

Luego deberiamos de obtener un hash del usuario sql_svc

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

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

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

Usuario : ryan.cooper
Una vez obtenidas las credenciales, lo que haremos será validarlas con netexec

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

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 SharpCollection


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

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

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 - asktgt

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


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

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 certifigured
Haremos una petición del certificado con el usuario de administrator

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

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.

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

Usuario : administrator

Recursos:
Last updated