Authority

Authority es una máquina Windows de dificultad media que resalta los peligros de las configuraciones incorrectas, la reutilización de contraseñas, el almacenamiento de credenciales en compartidos, y demuestra cómo los ajustes predeterminados en Active Directory (como la capacidad para que todos los usuarios del dominio puedan agregar hasta 10 equipos al dominio) pueden combinarse con otros problemas (plantillas de certificados AD CS vulnerables) para tomar el control de un dominio.

20240307170002.png

Enumeración

Para la enumeración usaremos la herramienta de nmap y iniciaremos por enumerar los puertos que se encuentran en open

  • -p-: Este parámetro indica a nmap que escanee todos los puertos, desde el puerto 1 hasta el puerto 65535. El guion (-) indica un rango de puertos completo.

  • --open: Este parámetro hace que nmap muestre solo los puertos que están abiertos y responda a las solicitudes de escaneo.

  • --min-rate 5000: Este parámetro establece la velocidad mínima de paquetes por segundo (pps) para enviar durante el escaneo. En este caso, se establece en 5000 paquetes por segundo.

  • -vvv: Este parámetro incrementa el nivel de verbosidad del escaneo, mostrando una salida muy detallada que incluye información adicional sobre el progreso del escaneo y los resultados obtenidos.

  • -Pn: Este parámetro indica a nmap que no realice la detección de hosts en vivo antes de iniciar el escaneo de puertos. Esto puede ser útil si sabes que el host objetivo está activo y no quieres perder tiempo en la detección de hosts.

  • -n: Este parámetro indica a nmap que no realice la resolución de DNS durante el escaneo, lo que acelera el proceso al evitar la búsqueda de nombres de host.

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

  • -oG allportsScan: Este parámetro indica a nmap que guarde los resultados del escaneo en formato "greppable" (compatible con grep) en un archivo llamado "allportsScan".

Luego de tener los puertos abiertos procederemos a enumerar los servicios y versiones que se ejecutan en cada uno de servicios.

  • -p53,80,88,135,139,389,445,464,593,636,3268,3269,5985,8443,9389,47001,49664,49665,49666,49667,49671,49674,49675,49676,49677,49684,49687,49764,59391: Este parámetro especifica los puertos TCP que se van a escanear. Estos puertos incluyen el puerto 53 (DNS), 80 (HTTP), 88 (Kerberos), 135 (RPC), 139 (NetBIOS), 389 (LDAP), 445 (SMB), 464 (Kerberos), 593 (HTTP RPC), 636 (LDAP SSL), 3268 (LDAP Global Catalog), 3269 (LDAP Global Catalog SSL), 5985 (WinRM), 8443 (HTTPS alternativo), 9389 (Microsoft AD CS RPC), y una serie de puertos de alta gama y efímeros utilizados por Windows.

  • -sC: Este parámetro activa la opción default script scan, lo que hace que nmap ejecute un conjunto de scripts predeterminados contra los puertos abiertos para obtener información adicional sobre los servicios que se están ejecutando.

  • -sV: Este parámetro activa la detección de versiones, lo que permite a nmap determinar las versiones de los servicios que se están ejecutando en los puertos abiertos.

  • -Pn: Este parámetro indica a nmap que no realice la detección de hosts en vivo antes de iniciar el escaneo de puertos. Esto puede ser útil si sabes que el host objetivo está activo y no quieres perder tiempo en la detección de hosts.

  • -n: Este parámetro indica a nmap que no realice la resolución de DNS durante el escaneo, lo que acelera el proceso al evitar la búsqueda de nombres de host.

  • -vvv: Este parámetro incrementa el nivel de verbosidad del escaneo, mostrando una salida muy detallada que incluye información adicional sobre el progreso del escaneo y los resultados obtenidos.

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

  • -oN servicesScan: Este parámetro indica a nmap que guarde los resultados del escaneo en un archivo de formato normal, con nombre "servicesScan".

Enumeración de smb

Para seguir enumerando usaremos smbmap

  • smbmap: Este es el nombre del programa que estás ejecutando. Se utiliza para mapear recursos compartidos en servidores SMB.

  • -H 10.10.11.222: Este parámetro especifica la dirección IP del servidor al que deseas conectarte. En este caso, parece que estás intentando conectarte a un servidor que tiene la dirección IP 10.10.11.222.

  • -u 'guest': Este parámetro especifica el nombre de usuario que utilizarás para la autenticación en el servidor SMB. Es importante destacar que 'guest' es un usuario comúnmente utilizado para acceder a recursos compartidos sin necesidad de proporcionar credenciales de usuario específicas. Este usuario a menudo tiene acceso limitado y se utiliza para permitir el acceso público a ciertos recursos compartidos.

20240307172030.png

Podemos observar que el directorio Development es un directorio al que podemos acceder. Para acceder podemos usar smbclient

20240307173434.png

Para descargar el contenido podemos hacer lo siguiente:

En los archivos que tenemos podemos encontrar ciertas contraseñas que pueda que nos sirva.

En los archivos que descargamos podemos encontrar que Automation/Ansible/PWM/ansible_inventory/ansible_invetory en donde encontraremos algunas credenciales

Según que vamos viendo cada uno de los archivos de lo que descargamos podremos ver ciertas credenciales

20240308103957.png

Explotación

Investigando podremos encontrarnos con el siguiente post, que basicamente nos dice que son credenciales encriptadas y que las podemos desencriptar.

Para obtener la contraseña usaremos ansible2john para obtener el hash y para crackearla usaremos john

pwm_admin_login

ansible2john

Crack - john

pwm_admin_password

ansible2john

Crack - john

ldap_admin_password

ansible2john

Crack - john

Puerto 8443 - pwm

Mirando el proyecto que encontramos en los archivos que logramos a descargar nos encontraremos con el proyecto pwm - projectarrow-up-right

20240308110025.png

Para desencriptar las credenciales ansible vault haremos uso de ansible-vault-decryptarrow-up-right

20240308113329.png

Ejecutando con cada uno de las credenciales encontradas obtendremos tres contraseñas que podremos usar en el sitio web antes encontrado. En este sitio web encontraremos con dos apartados que son manager y config Editor

manager

20240308171014.png

Config - Editor

Vamos a centrarnos en este apartado. Podemos ver que se tiene una opción Connection en donde podemos editar la LDAP URLs

20240308170948.png

Lo que intentaremos será interceptar lo que se envía cuando quiere obtener o enviar los datos a la dirección de ldap, para lo que cambiaremos a nuestra dirección ip

20240308171405.png

Luego nos pondremos a la escucha en el con cualquiera de los siguientes:

responder

20240308170848.png

Wireshark

20240308172820.png

ncat

20240308172941.png

Luego de obtener las credenciales validaremos con netexec, también se podría validar con crackmapexec y no habría ningún inconveniente.

20240308173855.png

Escalada de privilegios

Usuario : svc_ldap

Una vez validado las credenciales podemos hacer uso de evil-winrm para poder obtener una shell

20240308174029.png

Enumerando encontraremos que tiene un certificado vulnerable, esto haciendo uso de la herramienta de Certify.exe

20240309101818.png

Además encontraremos todo lo que tenemos permiso dentro del dominio

20240309101857.png

Ya que tenemos permisos para crear una nueva computadora, lo que haremos sera crearnos una con impacket-addcomputer

20240309155905.png

Luego usaremos certify, que en este caso viene en kali certify-ad pero esto nos da un error

  • Certipy-ad

20240309162439.png

Dado que tenemos este error, lo que usaremos será certify, que lo descargaremos desde su repositorio

Si ejecutamos con los parámetros de lo anterior podremos ver que este si nos generar el administrator.pfx

20240309162552.png

El certify ya lo podemos eliminar de nuestra maquina atacante o dejarlo

PassTheCert

Luego de generar nuestro archivo administrator.pfx lo que haremos sera generar un user.crt y un auser.key para hacer uso de passthecert.py.

Generamos el user.crt

20240309163800.png

Generamos el user.key

20240309163818.png

Una vez generadas lo que haremos será usarlas para hacer un passthecert y ejecutando comandos o cambiando la contraseña al usuario que nosotros le indicamos con el parámetro -action modify_user -target administrator -new-pass

20240309165554.png

Haciendo uso de las credenciales y con evil-winrm podremos ingresar a la maquina como el usuario administrator.

20240309192502.png

Last updated