Authority [MEDIUM🔵]
Dificultad: Medio
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Windows, debido al TTL:
1.2 Nmap
1.2 NmapEstamos frente a un entorno de directorio activo con un controlador de dominio(Puerto 53 --> authority.htb), el puerto 80(Microsoft IIS 10.0) correspondiente a un servidor web, el puerto 88 correspondiente a Kerberos, puerto 135(RPC) y 139(NetBIOS), el puerto 389(LDAP) y 445 correspondiente a un servidor SMB para recursos compartidos, además del puerto 5985 correspondiente a Windows Remote Managment(WinRM) con el que luego podremos conectarnos mediante evil-winrm, ya que es posible los usuarios de la maquina se encuentren dentro del grupo "Remote Management Users"
1.3 crackmapexec
1.3 crackmapexecEstamos ante una maquina Windows Server 2019 en su compilación 17763 de 64 bits, el nombre de la maquina es "AUTHORITY", su dominio es "authority.htb", el servidor SMB se encuentra firmado y no es soportado por SMBv1, por lo que trabajaremos con SMBv2
1.4 smbclient
1.4 smbclientVamos a listar recursos compartidos con smbclient mediante una sesión nula
Tenemos 2 recursos compartidos interesantes, "Department Shares" y "Development"
2- Explotación
2.1 Recurso compartido "Development"
2.1 Recurso compartido "Development"Vamos a ver que hay dentro del recurso compartido "Development" con smbclient, asi que vamos a conectarnos al servidor SMB para mas comodidad:
Vamos a investigar que hay dentro del recurso compartido "Devlopment"
Hay una carpeta llamada "Ansible" correspondiente a una herramienta DevOps que se utiliza para enviar comandos a varias maquinas al mismo tiempo
Vamos a bajarnos el recurso compartido "Development", en nuestro Kali, para mayor comodidad y ver que hay dentro
Utilizando este comando, nos bajaremos todo el contenido del recurso compartido
Vamos a hacer un "tree" para listar que hay dentro de todos los directorios
Podemos ver que hay una carpeta llamda "PWM", vamos a ver que hay dentro
Vamos a ver que hay dentro de este directorio mismo con tree:
Hay un archivo interesante llamado "tomcat-users.xml.j2", vamos a visualizarlo:
Tenemos 2 credenciales, seguramente del servicio "Apache Tomcat" alojado en el puerto 8443
Vamos a guardarnos estos usuarios, por si acaso:
Si recordamos, dentro de la carpeta "PWM", tambien teníamos un archivo llamado "ansible_inventory"
Veamos que contiene:
Tambien podemos visualiar unas posibles credenciales, pero adelante que estas credenciales no son validas para conectase mediante "evil-winrm" por el puerto 5985
Vamos a guardarnosla, de tal manera que ahora mismo, tenemos las siguientes credenciales:
Tambien dentro de la carpeta /PWM/defaults, tenemos un archivo YAML(main.yml), vamos a visualizarlo:
Tenemos posibles hashes de "Ansible", el primer hash vault:
Vault 2:
Y por ultimo, un hash LDAP:
Cada uno de estos hashes, cifrados con el algoritmo AES 256
Nos guardamos los hashes:
Para pasar estos hashes en limpio, tenemos una herramienta en Kali llamada "ansible2john", vamos a utilizarla para los 3 hashes:
2.2 John The Ripper con hashes Ansible
2.2 John The Ripper con hashes AnsibleY ahora vamos a crackear los hashes con la herramienta John The Ripper, utilizando el diccionario clasico de clasicos, "rockyou"
hash1:
hash2:
hash3:
Es la misma contraseña para los 3 hashes
Esta contraseña vamos a utilizarla para abrir un Ansible Vault
(Ansible Vault permite a los usuarios cifrar secretos y otros datos confidenciales, como claves API, contraseñas y otras credenciales, para protegerlos en reposo)
Para eso vamos a utilizar la herramienta llamada "ansible-vault", para vamos a visualizar el hash de los vaults con "cat" y agregamos un pipe para adjuntarle el comando "ansible-vault", para luego ingresar la contraseña anteriormente crackeada "!@#$%^&*"
(Ansible Vault no viene instalado en Kali, para instalarla tenemos que instalar Ansible dentro de Kali, "sudo apt install ansible-core")
De tal manera que tenemos el usuario y la contraseña de un usuario y ademas tenemos una contraseña del servicio LDAP
Estas credenciales, adelanto que no son de un usuario del DC
2.3 Modificación del servidor LDAP para recibir hashes
2.3 Modificación del servidor LDAP para recibir hashesPero si recordamos en el escaneo de Nmap, teníamos el puerto 8443, correspondiente a Apache Tomcat, vamos a ver que se encuentra dentro de ese sitio web, que además es HTTPS:

"Configuration Manager":

Nos pide una contraseña, lo cual vamos a ingresar la contraseña de Ansible Vault "pWm_@dm!N_!23"

Nos ingresa correctamente, y no solo eso, si no que podemos bajarnos la configuración, editarla a nuestra conveniencia y además importarla con alguna configuración maliciosa, lo que haremos nosotros es descargarnos el archivo de configuración:

Vamos a abrirlo con un edito de texto, en mi caso Neovim, y vamos a irnos a la linea 74, que contiene lo siguiente:
Y vamos a cambiar esta linea por lo siguiente:
En mi caso quedaria de la siguiente manera:
Y antes de subir el archivo, vamos a ponernos en escucha con la herramienta "Responder" para recibir algun hash de contraseña o incluso la contraseña en texto plano, Responder ya viene integrada en Kali:
Y ahora vamos a subir el archivo de configuración al panel:


Nos llevara al panel de inicio de sesión:

Pero si volvemos al "Responder":
Si esto no funciona, podemos cambiar la configuración del dominio del servidor LDAP desde el "Configuration Editor" del panel, la configuración se encuentra dentro de "LDAP > LDAP Directories > default > Connection"

Por defecto, en "Load URLs" nos vendrá el dominio de la maquina utilizado por el servidor LDAP, nosotros lo cambiamos por nuestra IP y el puerto 389 así como se puede ver en la imagen
Genial, ahora tenemos unas credenciales en texto plano:
2.4 Obtención de shell con evil-winrm
2.4 Obtención de shell con evil-winrmAhora vamos a conectarnos mediante "evil-winrm" con estas credenciales que obtuvimos cambiando la configuración del servidor LDAP
2.5 Obtención de la flag user
2.5 Obtención de la flag userLa flag de user se encuentra dentro de la ruta absoluta "C:\Users\svc_ldap\Desktop\user.txt", vamos a visualizar la flag:
3- Escalado de privilegios
3.1 Dominio en /etc/hosts
3.1 Dominio en /etc/hostsAntes de nada, vamos a agregar el dominio del DC al archivo /etc/hosts :
De tal manera que ahora la IP de la maquina 10.10.11.222 apunta al dominio "authority.htb"
10.10.11.222 ----> authority.htb
Esto mas que nada, por que al estar trabajando con un Domain Controler en un entorno de directorio activo es mas cómodo que andar escribiendo la dirección IP
Si hacemos un ping al dominio "authority.htb" esto nos apunta a la IP mencionada:
3.2 Certificado LDAPs.pfx
3.2 Certificado LDAPs.pfxVamos a irnos a la shell que teniamos con "evil-winrm" y vamos a irnos al directorio "C:\Certs":
Tenemos un archivo .PFX correspondiente a un certificado que a menudo contienen información criptográfica, lo cual podemos deducir que esta maquina se maneja con certificados, podemos utilizar una herramienta para extraer el certificado y ver que permisos tiene el usuario "svc_ldap" con el que nos acabamos de logear en evil-winrm
3.3 certipy-ad
3.3 certipy-adPara lo anteriormente mencionado vamos a utilizar la herramienta "certipy-ad" para el certificado, esta herramienta ya viene integrada en Kali, en cualquier caso "sudo apt install certipy-ad"
Primeramente vamos a bajarnos el certificado con el comando "download" que ya viene integrado dentro de la misma herramienta "evil-winrm", esto lo hacemos por si acaso:
Ya tenemos el certificado en local:
Ahora vamos a ejecutar "certipy-ad" para ver que permisos y grupos hay dentro de la maquina objetivo:
Tenemos el nombre de la plantilla de este certificado:
Tambien tenemos un grupo que puede añadir equipos nuevos dentro de esta maquina:
3.4 impacket-addcomputer
3.4 impacket-addcomputerYa sabiendo esto, vamos a utilizar una herramienta para crear un equipo nuevo dentro de la maquina, para eso vamos a utilizar la herramienta "impacket-addcomputer" para que nos cree un equipo
Con este comando le estamos especificando el dominio del DC, el usuario y la contraseña, le especificamos la IP del DC, un nombre para el equipo(user1) y la contraseña(user123)
Ahora teniendo el equipo creado, las credenciales quedarian de la siguiente manera, ya que la herramienta "impacket-addcomputer" realiza algunos cambios:
3.5 Obtención del certificado Administrator
3.5 Obtención del certificado AdministratorVamos a obtener el certificado de Administrator con este equipo que hemos creado, para eso utilizaremos la herramienta anteriormente mencionada "certipy-ad":
(Ojo, quizas es necesario ejecutar el comando mas de una vez, ya que esto funciona con el serivico NetBIOS de Windows de la maquina)
Ahora tenemos el certificado
3.6 Obtención de shell LDAP con maximos privilegios
3.6 Obtención de shell LDAP con maximos privilegiosY ahora vamos a obtener una shell con privilegios elevados utilizando este certificado de Administrator, para eso utilizaremos nuevamente "certipy-ad":
Con este comando estamos indicando que nos queremos autenticar con el certificado de Administrator que acabamos de obtener, le estamos indicando la IP del controlador de dominio y por ultimo queremos que nos abra una shell LDAP
Ya somos usuarios Administrator:
3.7 Creación de un usuario Administrador
3.7 Creación de un usuario AdministradorAhora, esta consola es restrictiva, en sí, no es una PowerShell como las que se obtienen normalmente con evil-winrm, con esta consola podemos añadir un usuario dentro de la maquina y añadirlo al grupo de Administradores
Creamos el usuario "admin1":
Y lo agregamos al grupo de Administradores:
Y ahora vamos a entrar mediante evil-winrm con este usuario, recordemos que cuando creamos el usuario "admin1" nos genero una contraseña:
3.8 Obtención de la flag root
3.8 Obtención de la flag rootLa flag de root se encuentra dentro de la ruta absoluta "C:\Users\Administrator\Desktop\root.txt", vamos a visualizar la flag:
Con esto, concluimos la maquina "Authority" de Hack The Box
Espero te haya sido de ayuda este Write Up :)
Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales
Última actualización
