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.

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 anmapque 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 quenmapmuestre 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 anmapque 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 anmapque 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 anmapque guarde los resultados del escaneo en formato "greppable" (compatible congrep) 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óndefault script scan, lo que hace quenmapejecute 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 anmapdeterminar las versiones de los servicios que se están ejecutando en los puertos abiertos.-Pn: Este parámetro indica anmapque 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 anmapque 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 anmapque 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.

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

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

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

Para desencriptar las credenciales ansible vault haremos uso de ansible-vault-decrypt

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

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

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

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

Wireshark

ncat

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

Escalada de privilegios
Usuario : svc_ldap
Una vez validado las credenciales podemos hacer uso de evil-winrm para poder obtener una shell

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

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

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

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

Dado que tenemos este error, lo que usaremos será certify, que lo descargaremos desde su repositorio
Certipy
Si ejecutamos con los parámetros de lo anterior podremos ver que este si nos generar el administrator.pfx

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

Generamos el user.key

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

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

Last updated