Thomas el motor de hackeo a máxima velocidad en las pistas de IPT;.

El viernes 31 de mayo fuimos invitados a un taller sobre Active Directory en Bureau Veritas Cybersecurity. En este blogpost, vamos a hablar de nuestra experiencia y de lo que hemos aprendido.

El taller fue impartido por Max Rozendaal y Thomas "the hacking engine" Oldengram. Comenzaron con una breve presentación, tras la cual nos lanzaron a las profundidades.

¿Active Directory? ¿Qué es eso?

Active Directory (AD) es un servicio desarrollado por Microsoft que permite gestionar el acceso a cuentas y dispositivos a través de una red. Utiliza Controladores de Dominio (DC) para gestionar esta funcionalidad. Un controlador de dominio es un servidor que responde a las solicitudes de autenticación de seguridad dentro de la red, como el inicio de sesión, el acceso a recursos y la validación de permisos.

Dentro del entorno de Active Directory, los dominios tienen una colección de Objetos de Active Directory, como usuarios, grupos, ordenadores y otros recursos. Un grupo de dominios dentro de un entorno de este tipo se denomina árbol, y una colección de árboles, bosque.

Laconfianza es un mecanismo para que los usuarios puedan acceder a los recursos de otro dominio. La confianza puede establecerse de tres maneras:

  • Confianza unidireccional
  • Confianza bidireccional (por defecto)
  • Confianza transitiva, que extiende la confianza a otros dominios.

Configuración del laboratorio

El taller de hacking giró en torno a un "Juego de Active Directory" (GOAD), que fue desarrollado por Mayfly277 y puede encontrarse aquí: https://github.com/Orange-Cyberdefense/GOAD.

Se nos informó de 2 dominios relevantes

  • DC01: 192.168.56.10 (sevenkingdoms.local)
  • DC02: 192.168.56.11 (winterfell.north.sevenkingdoms.local)

Nuestro jumpserver era 13.94.204.183, al que pudimos acceder a través de SSH.

Este blogpost contiene spoilers de algunos de los desafíos del "Juego del Directorio Activo" desarrollados por Mayfly277.

Entrando en el reino de Active Directory: ¡Sesiones nulas!

Para el primer desafío, necesitábamos comprometer el mayor número posible de cuentas mediante la pulverización de contraseñas de las cuentas presentes en nuestro entorno de directorio activo. Para ello, intentamos averiguar qué cuentas estaban asociadas a los dominios. Se nos indicó que empezáramos con el dominio winterfell.north.sevenkingdoms.local . Podemos acceder con una sesión NULL (una sesión sin nombre de usuario ni contraseña) y enumerar los usuarios del dominio.

Image in image block

Como podemos ver, Samwell Tarly tiene en su descripción la contraseña "Heartbane", así que vamos a hacer un barrido de contraseñas utilizando esa contraseña.

Primero creamos una lista de los usuarios utilizando el siguiente comando:

nxc smb 192.168.56.11 -u '' -p '' --users | awk '{ print $5 }'   users.txt 


Y utilicemos esta lista para realizar el rociado de contraseñas:

Image in image block

Vemos que efectivamente obtenemos un login para el usuario Samwell Tarley. A veces, más usuarios del dominio utilizan la misma contraseña. Desgraciadamente, Samwell Tarley es el único que utiliza la contraseña Heartbane, por lo que éste no es nuestro caso.

¡Pero hay más! Max y Thomas nos informaron de que a menudo se utilizan contraseñas poco seguras para las cuentas. Las contraseñas más populares incluyen la estación con un año, el nombre de la empresa o el nombre de la cuenta. Así que también hicimos una búsqueda de contraseñas en los usuarios del dominio mencionado utilizando como contraseña su nombre de usuario. Y conseguimos una coincidencia para el usuario hodor.

Terror de certificados

El segundo reto consistía en convertirse en administrador del dominio solicitando un certificado para dicha cuenta. Ya habíamos encontrado dos cuentas para winterfell.north.sevenkingdoms.local, pero para ahorrar algo de tiempo nos dieron también una cuenta para el dominio sevenkingdoms.local: Renly.Baratheon:lorastyrell.

Utilizamos el siguiente comando para encontrar configuraciones vulnerables de los Servicios de certificación de Active Directory utilizando las credenciales de renly.baratheon:

user@ubuntu-jumpbox:~$ certipy find -vulnerable -u renly.baratheon -p lorastyrell -dc-ip 192.168.56.10 -stdout

En la salida de este comando obtuvimos el nombre de la plantilla y la autoridad de certificación:

Nombre de plantilla : ESC1 Nombre para mostrar : ESC1 Autoridades de certificación : SEVENKINGDOMS-CA

Así que ahora el siguiente paso era solicitar un certficado para la cuenta de administrador del dominio ADMINISTRATOR, que es una cuenta en el dominio SEVENKINGDOMS.LOCAL que encontramos utilizando bloodhound.

user@ubuntu-jumpbox:~$ certipy req -u renly.baratheon @SEVENKINGDOMS.LOCAL -p lorastyrell -target-ip 192.168.56.10 -ca SEVENKINGDOMS-CA -template ESC1 -upn ADMINISTRATOR@SEVENKINGDOMS.LOCAL Certipy v4.8.2 - por Oliver Lyak (ly4k) [*] Solicitando certificado mediante RPC [*] Certificado solicitado con éxito [*] El ID de la solicitud es 22 [*] Obtenido el certificado con UPN 'ADMINISTRATOR@SEVENKINGDOMS.LOCAL' [*] El certificado no tiene SID de objeto [*] Guardado el certificado y la clave privada en 'administrator.pfx'

Siguiente obtenemos el hash de la contraseña para la cuenta de administrador.

Image in image block

¡Y estamos dentro! ¡Sí!

Reflexiones finales

Nos gustaría dar las gracias a Max y Thomas por el increíble taller. Fue estupendo escuchar de primera mano de ellos cómo utilizaban los ataques a Active Directory para irrumpir en los servidores de sus clientes. Fue especialmente interesante escuchar de ellos cómo utilizar en equipo rojo las cuentas de AD para hacer mucho más daño del que antes creíamos posible. Por ejemplo, hablaron de cómo a veces las contraseñas de AD se utilizan también fuera de un entorno AD, lo que les permite hacerse con el control de otros servicios que a primera vista parecen desconectados de su red.

En general, lo pasamos muy bien y esperamos asistir pronto a otro taller.

Lisanne y Michel

Image in image block