Was macht Analyse von Active Directory ACL-Missbrauch?
Überblick
Active Directory Access Control Lists (ACLs) definieren Berechtigungen für AD-Objekte über Discretionary Access Control Lists (DACLs), die Access Control Entries (ACEs) enthalten. Fehlkonfigurierte ACEs können nicht-privilegierten Benutzern gefährliche Berechtigungen wie GenericAll (vollständige Kontrolle), WriteDACL (Berechtigungen ändern), WriteOwner (Besitzer übernehmen) und GenericWrite (Attribute ändern) auf sensible Objekte wie Domain-Admins-Gruppen, Domain Controller oder GPOs gewähren.
Dieser Skill verwendet die Python-Bibliothek ldap3, um eine Verbindung zu einem Domain Controller herzustellen, Objekte mit ihrem Attribut nTSecurityDescriptor abzufragen, den binären Sicherheitsdeskriptor in das SDDL-Format (Security Descriptor Definition Language) zu parsen und ACEs zu identifizieren, die nicht-administrativen Sicherheitsprinzipalen gefährliche Berechtigungen erteilen. Diese Fehlkonfigurationen sind die Grundlage für ACL-basierte Angriffspfade, die von Tools wie BloodHound entdeckt werden.
Verwendungszwecke
- Bei der Untersuchung von Sicherheitsvorfällen, die eine Analyse von Active Directory ACL-Missbrauch erfordern
- Bei der Erstellung von Erkennungsregeln oder Bedrohungssuche-Abfragen für diesen Bereich
- Wenn SOC-Analysten strukturierte Verfahren für diese Analyseart benötigen
- Bei der Validierung der Sicherheitsüberwachungsabdeckung für verwandte Angriffstechniken
Voraussetzungen
- Python 3.9 oder höher mit der ldap3-Bibliothek (
pip install ldap3) - Domänenbenutzeranmeldeinformationen mit Lesezugriff auf AD-Objekte
- Netzwerkkonnektivität zum Domain Controller über Port 389 (LDAP) oder 636 (LDAPS)
- Verständnis des Active Directory-Sicherheitsmodells und des SDDL-Formats
Schritte
-
Verbindung zum Domain Controller herstellen: Stellen Sie eine LDAP-Verbindung mit ldap3 über NTLM oder einfache Authentifizierung her. Verwenden Sie LDAPS (Port 636) für verschlüsselte Verbindungen in der Produktion.
-
Zielobjekte abfragen: Durchsuchen Sie die Ziel-OU oder die gesamte Domäne nach Objekten wie Benutzern, Gruppen, Computern und OUs. Fordern Sie die Attribute
nTSecurityDescriptor,distinguishedName,objectClassundsAMAccountNamean. -
Sicherheitsdeskriptoren parsen: Konvertieren Sie den binären nTSecurityDescriptor in seine SDDL-String-Darstellung. Parsen Sie jeden ACE in der DACL, um die Trustee-SID, die Zugriffsmaske und den ACE-Typ (Allow/Deny) zu extrahieren.
-
SIDs in Prinzipalnamen auflösen: Ordnen Sie Sicherheitskennungen (SIDs) mithilfe von LDAP-Abfragen gegen die Domäne menschenlesbaren Kontonamen zu. Identifizieren Sie bekannte SIDs für integrierte Gruppen.
-
Auf gefährliche Berechtigungen prüfen: Vergleichen Sie die Zugriffsmaske jedes ACE mit den Bitmasken gefährlicher Berechtigungen: GenericAll (0x10000000), WriteDACL (0x00040000), WriteOwner (0x00080000), GenericWrite (0x40000000) und WriteProperty für bestimmte erweiterte Rechte.
-
Nicht-administrative Trustees herausfiltern: Schließen Sie erwartete administrative Trustees aus (Domain-Admins, Enterprise-Admins, SYSTEM, Administratoren) und markieren Sie ACEs, bei denen nicht-privilegierte Benutzer oder Gruppen gefährliche Berechtigungen besitzen.
-
Angriffspfade abbilden: Dokumentieren Sie für jeden Fund die potenzielle Angriffskette (z. B. GenericAll auf Benutzer erlaubt Passwort-Reset, WriteDACL auf Gruppe erlaubt das eigene Hinzufügen zur Gruppe).
-
Sanierungsbericht erstellen: Geben Sie einen JSON-Report mit allen gefährlichen ACEs, betroffenen Objekten, nicht-administrativen Trustees und empfohlenen Sanierungsschritten aus.
Erwartete Ausgabe
{
"domain": "corp.example.com",
"objects_scanned": 1247,
"dangerous_aces_found": 8,
"findings": [
{
"severity": "critical",
"target_object": "CN=Domain Admins,CN=Users,DC=corp,DC=example,DC=com",
"target_type": "group",
"trustee": "CORP\\helpdesk-team",
"permission": "GenericAll",
"access_mask": "0x10000000",
"ace_type": "ACCESS_ALLOWED",
"attack_path": "GenericAll auf Domain-Admins-Gruppe erlaubt Hinzufügen beliebiger Mitglieder",
"remediation": "Entfernen Sie den GenericAll-ACE für helpdesk-team auf Domain-Admins"
}
]
}