Page cover

🟠Attracktive Directory

En esta ocasión vamos a hacer el writeup de la máquina Attracktive Directory de TryHackMe una máquina Windows Active Directory de dificultad Medium.

Setup

Target: 10.10.26.240

Para esta máquina es necesario tener Bloodhound instalado, puedes consultar el proceso de instalación en la siguiente sección:

🩸BloodHound

Enumeración

Escaneo de puertos

La presencia del Global Catalog (3268) y LDAP + Kerberos indica 100% que este host es un Domain Controller. Destacamos los puertos:

  • 445 - SMB

  • 3268 - LDAP

  • 3389 - RDP

  • 5985 - WinRM

También encontramos el nombre del dominio, que añadiremos a nuestro /ect/hosts junto con la IP:

Por el puerto 80 solamente tenemos el típico inicio de un Windows Server sin nada interesante:

Enumeración de usuarios via Kerberos

Vamos a usar kerbrute. Podemos instalarlo en Kali Linux con:

Para esta máquina, TryHackMe nos proporciona una lista de Usuarios y una de Contraseñas que usaremos para ataques de fuerza bruta / enumeración.

De los usuarios que encontramos destacamos:

  • svc-admin - Posible administrador de servicios

  • administrator - Posible Domain Admin

  • backup - Usuario interesante

Nos guardamos estos usuarios en una lista valid-users.txt que usaremos para otros ataques:

Abuso de Kerberos

Una vez finalizada la enumeración de cuentas de usuario, podemos intentar abusar de una característica dentro de Kerberos con un método de ataque llamado ASREPRoasting.

El ASREPRoasting ocurre cuando una cuenta de usuario tiene el privilegio "Does not require Pre-Authentication" . Esto significa que la cuenta no necesita proporcionar una identificación válida antes de solicitar un ticket Kerberos para la cuenta de usuario especificada.

Recuperación de tickets Kerberos

Impacket cuenta con una herramienta llamada " GetNPUsers.py " que nos permite consultar cuentas ASReproastables desde el Key Distribution Center (KDC). Lo único necesario para consultar cuentas es un conjunto válido de nombres de usuario , que enumeramos previamente mediante Kerbrute.

Obtenemos el hash del usuario svc-admin, que guardaremos en un archivo hash.txt para crackearlo con hashcat y el modo 18200 (Kerberos):

Encontramos la contraseña en plano del usuario svc-admin!

Enumeración

Con las credenciales de esta cuenta de usuario, ahora tenemos mucho más acceso al dominio. Podemos intentar enumerar los recursos compartidos que el controlador de dominio pueda estar asignando.

Con smbclient -L podemos enumerar SMB Shares de una forma muy sencilla:

También podemos usar SMBMap para obtener algo más de información:

Encontramos los siguiente recursos compartidos:

Recurso Compartido

Permisos

Descripción

ADMIN$

NO ACCESS

Administración remota

backup

READ ONLY

Posible acceso a archivos de respaldo

C$

NO ACCESS

Share predeterminado

IPC$

READ ONLY

Canal de comunicación remota

NETLOGON

READ ONLY

Archivos del servidor de inicio de sesión

SYSVOL

READ ONLY

Políticas y scripts de dominio

Nos interesa sobre todo el de backup, que puede contener archivos interesantes que contengan credenciales:

Nos descargamos el archivo backup_credentials.txt. Vamos a echarle un ojo:

Parece que el contenido está codificado en base64, vamos a decodificarlo:

Obtenemos las credenciales del usuario backup!

Acceso por RDP

Vamos a acceder por RDP como el usuario svc-admin y a crear un recurso compartido en red para compartirnos herramientas fácilmente:

Al acceder en el escritorio nos encontramos el user flag:

Bloodhound

Vamos a analizar el objetivo con Bloodhound para extraer más información sobre el dominio. Para ello podemos:

  • Importar el archivo SharpHound.exe a la máquina Windows, ejecutarlo y enviar a Kali de vuelta el zip que genera.

  • Ejecutar bloodhound-python desde Kali Linux con credenciales en el dominio.

Para evitar tener que enviar el archivo a la máquina Windows, y enviarlo de vuelta a Kali para analizarlo, utilizaremos bloodhound-python.

Para ello debemos primera configurar el archivo /etc/resolv.conf de la siguiente manera:

Ahora ya podemos ejecutar bloodhound-python de la siguiente manera. Usaremos las credenciales del usuario backup:

Esto nos genera el zip que debemos importar en BloodHound. Para ello vamos a instalarlo siguiendo los pasos de la siguiente sección:

🩸BloodHound

Domain Admins

Vemos que hay solo 2 usuarios Domain Admins: a-spooks y administrator:

Enumeración de usuarios del sistema

Encontramos 4 cuentas interesantes en el grupo Domain Users:

  • A-SPOOKS - Domain Admin

  • ADMINISTRATOR - Domain Admin

  • SVC-ADMIN - Administrador

  • BACKUP - Usuario interesante (tenemos credenciales)

DCSync Right

La manera más simple de encontrar la ruta a un ataque DCSync es buscar por el nombre de dominio permisos GenericAll o DCSync de algún usuario o grupo:

Observamos que el usuario backup tiene permisos GenericAll sobre el DC, lo que significa que podemos realizar el ataque DcSync con este usuario para extraer todos los hashes de los usuarios del dominio. Esto nos serviría para extraer el hash del usuario administrator y conectarnos para obtener la flag.

Escalada de privilegios

Es la hora de intentar hacernos con el control total del dominio AD. Vamos a utilizar Impacket secretsdump con el usuario backup para realizar la extracción de todos los hashes.

Ataque DcSync

Tenemos el hash del usuario administrator! Y el de todos los usuarios del dominio. Vamos a conectarnos por RDP haciendo un Pass the Hash.

Pass the Hash

Al conectarnos nos da el mítico error de seguridad que no nos permite conectarnos por RDP haciendo un Pass the Hash:

Para bypassearlo vamos a usar impacket-psexec para hacer el Pass the Hash y conseguir una shell como SYSTEM:

También podríamos usar EvilWinRM para hacer el pass the hash y obtener una shell, pero solamente obtendríamos una shell como Administrator, no como SYSTEM, por lo que preferiblemente debemos usar Impacket-Psexec:

Acceso a la flag

Última actualización

¿Te fue útil?