DACL

Attaques sur les DACL Active Directory : la carte complète des entrées de contrôle d'accès exploitables (GenericAll, GenericWrite, WriteDacl, WriteOwner, WriteSPN, AddKeyCredentialLink, ForceChangePassword, AddMember, droits de réplication et de mot de passe géré) et l'outillage Linux et Windows qui transforme chacune en contrôle d'un principal privilégié.

4 min de lecturemis à jour le 12 oct. 2026florianamette1 contributeur
Demander à votre assistant (MCP)Modifier sur GitHub

Chaque objet Active Directory porte une liste de contrôle d'accès discrétionnaire (DACL) : une liste d'entrées de contrôle d'accès (ACE) indiquant quels principaux peuvent le lire ou le modifier. Les administrateurs délèguent ces droits généreusement et ne les auditent presque jamais, si bien qu'AD regorge d'ACE qui permettent à un principal ordinaire d'en modifier un privilégié. Le travail sur les DACL consiste à transformer une écriture sur un objet en contrôle de celui-ci, et BloodHound existe en grande partie pour trouver ces arêtes et les enchaîner (A peut écrire sur B, B est admin de C) en un chemin vers Domain Admin.

La carte complète des arêtes#

Chaque droit exploitable, l'attribut ou le droit de contrôle d'accès qui le sous-tend, et où la technique est documentée :

Droit (arête BloodHound)Soutenu parSe transforme en
GenericAllcontrôle totaltout ce qui suit
GenericWrite / WritePropertyécritures de propriétésSPN, key credential, délégation, appartenance
WriteDaclWRITE_DACvous accorder n'importe quel droit
WriteOwner / OwnsWRITE_OWNERs'approprier la propriété, puis réécrire la DACL
ForceChangePasswordUser-Force-Change-Passwordréinitialiser le mot de passe
AddMember / AddSelfécrire memberrejoindre un groupe privilégié
WriteSPNécrire servicePrincipalNameKerberoasting ciblé
AddKeyCredentialLinkécrire msDS-KeyCredentialLinkshadow credentials
AddAllowedToAct / WriteAccountRestrictionsécrire msDS-AllowedToActOnBehalfOfOtherIdentitydélégation basée sur les ressources
DCSyncDS-Replication-Get-Changes + -All sur le domaineDCSync
ReadGMSAPasswordlire msDS-ManagedPasswordrécupérer le mot de passe gMSA
ReadLAPSPasswordlire ms-Mcs-AdmPwd / msLAPS-*récupérer le mot de passe LAPS
WriteGPLinkécrire gPLink sur une OUlier une GPO à l'OU

Le droit ne compte que par ce qu'il vous permet de faire, le tableau est donc la voie rapide : trouvez l'arête dans BloodHound, sautez à la technique.

Choisir la conversion la plus discrète#

Plusieurs arêtes atteignent le même objectif avec des empreintes très différentes, ce qui est la décision pratique une fois que vous détenez une écriture :

  • Les shadow credentials (là où PKINIT est disponible) et le Kerberoasting ciblé sont non destructifs : ils ne changent pas le mot de passe de la victime ni n'excluent personne, préférez-les donc à une réinitialisation de mot de passe quand le compte est en usage.
  • Une réinitialisation de mot de passe est bruyante et perturbatrice (l'utilisateur légitime perd l'accès), gardez-la donc pour les comptes d'ordinateur ou obsolètes, ou quand rien de plus discret n'est disponible.
  • La RBCD et l'ajout de droits de réplication laissent un changement de configuration durable ; s'ajouter à un groupe est trivialement visible dans l'appartenance. Pesez la valeur de persistance contre la détectabilité.

Pages#

Une fois qu'une arête vous amène dans un groupe privilégié intégré, l'appartenance elle-même est l'élévation :

  • Groupes privilégiés : ce qu'accorde l'appartenance à DnsAdmins, Backup/Server/Print Operators et d'autres.
  • DnsAdmins : une DLL chargée dans le service DNS en tant que SYSTEM.
  • Backup Operators : SeBackupPrivilege lit NTDS.dit.
  • Server Operators : reconfigurer un service pour qu'il s'exécute en tant que SYSTEM.

Outils#

  • BloodHound : analyse de chemins d'ACL transitifs et identification des arêtes.
  • Impacket (dacledit.py, owneredit.py) : lire/écrire des ACE et changer la propriété depuis Linux.
  • bloodyAD : définir le propriétaire, accorder des droits, réinitialiser des mots de passe, ajouter des key credentials et des membres de groupe depuis Linux.
  • NetExec (nxc) : -M daclread pour lire les ACE, -M maq pour le quota de comptes machine, et --ntds une fois qu'un octroi DCSync atterrit, sur LDAP/SMB.
  • PowerView (Add-DomainObjectAcl, Set-DomainObjectOwner) : édition d'ACE et de propriété en local.

Références#

  • SpecterOps: An ACE Up the Sleeve, and the BloodHound edge reference
  • The Hacker Recipes: DACL abuse