Zum Inhalt springen

Angriffspfadmanagement mit BloodHound für Verteidiger

BloodHound defensiv nutzen: Tier Zero korrekt markieren, Engpässe finden, Angriffspfade in der richtigen Reihenfolge schließen und die Exposition messen.

Florian Amette7 Min. Lesezeit

Die meisten Active-Directory-Kompromittierungen folgen einem Pfad statt einer einzelnen Schwachstelle. Eine Helpdesk-Gruppe kann das Kennwort eines Server-Admins zurücksetzen. Dieser Admin hat eine Sitzung auf einem Server, auf dem sich auch ein Domänen-Admin angemeldet hat. Ein Dienstkonto besitzt GenericWrite auf eine Gruppe, die in eine Gruppe verschachtelt ist, welche eine mit der OU Domain Controllers verknüpfte GPO kontrolliert. Jeder Schritt ist eine normale Berechtigung, die jemand absichtlich vergeben hat. Zusammen ergeben sie einen Weg zur Kontrolle über die Domäne – und Angreifer finden ihn mit denselben Graph-Werkzeugen, die Verteidigern zur Verfügung stehen.

BloodHound macht aus Verzeichnisdaten diesen Graphen. Der ACL-Grundlagenleitfaden stellt es als Audit-Werkzeug vor. Dieser Leitfaden beschreibt den Betrieb als fortlaufendes Programm für Angriffspfadmanagement: sicher erfassen, Tier Zero präzise definieren, Engpässe finden, in der Reihenfolge beheben, die pro Änderung die meisten Pfade entfernt, und Fortschritt messen.

Sicher erfassen

BloodHound Community Edition liest Daten aus SharpHound (lokales AD) und AzureHound (Entra ID) ein. BloodHound Enterprise ergänzt kontinuierliche Erfassung und Choke-Point-Bewertung. Alternativen mit ähnlichen Modellen sind Semperis Forest Druid (mit Fokus auf Tier 0) und Adalanche. Das folgende Vorgehen gilt für alle.

Erfassungsregeln für ein defensives Programm:

  • Dediziertes Konto. Für LDAP-Daten genügt ein normaler Domänenbenutzer ohne zusätzliche Rechte. Die Erfassung lokaler Gruppen und Sitzungen funktioniert mit Rechten auf Mitgliedscomputern besser, verwenden Sie dafür aber keinen Domänen-Admin. Geben Sie dem Konto ein langes zufälliges Kennwort, verweigern Sie ihm die interaktive Anmeldung und überwachen Sie seine Nutzung.
  • Dedizierter Host. Führen Sie den Collector von einem Tier-0-Verwaltungshost oder einer gehärteten Assessment-VM aus, niemals von einer Benutzer-Arbeitsstation.
  • Informieren Sie das SOC. SharpHound-Verkehr (massenhafte LDAP-Abfragen, SAMR- und Sitzungsaufzählung über viele Hosts) ist genau das, worauf Ihre Erkennungen anschlagen sollten. Nehmen Sie Host und Konto für das Erfassungsfenster in eine Ausnahmeliste auf, statt die Erkennung wegzutunen.
  • Schützen Sie die Ausgabe. Die ZIP-Dateien und die BloodHound-Datenbank sind eine Anleitung zur Übernahme Ihrer Domäne. Speichern Sie sie verschlüsselt, beschränken Sie den Zugriff auf Tier 0 und das Assessment-Team und legen Sie eine Aufbewahrungsfrist fest.
  • Erfassen Sie Sitzungen wiederholt. Eine einzelne Sitzungsmomentaufnahme verpasst den Großteil der Exposition. Erfassen Sie mehrmals pro Woche oder nutzen Sie einen kontinuierlichen Collector.

Tier Zero definieren, bevor Sie Pfade betrachten

Ein Pfad ist nur dann ein Angriffspfad, wenn er an einem relevanten Ziel endet. BloodHound markiert offensichtliche Tier-Zero-Objekte vorab (Domain Admins, Enterprise Admins, Domänencontroller, das Domänenobjekt und Ähnliches). In neueren Versionen heißt das Privilege Zones mit einer Tier-Zero-Zone. Die Standardmarkierung ist ein Ausgangspunkt, nicht Ihr Tier Zero. Ergänzen Sie alles, was die Steuerungsebene kontrolliert:

  • Entra-Connect-Server und deren AD-DS-Connector-Konto sowie ADFS-Server.
  • AD-CS-Unternehmens-CAs und Zertifikatvorlagen, die eine Authentifizierung als beliebige Identität erlauben (Fehlkonfigurationen vom Typ ESC1).
  • Backup-Server und Konten, die DC-Sicherungen wiederherstellen oder lesen können.
  • Hypervisor- und Speicherverwaltung, auf der virtuelle DCs laufen.
  • Konfigurationsmanagement- und PAM-Systeme, die Code auf DCs ausführen oder Tier-0-Anmeldeinformationen halten.
  • GPOs, die mit der OU Domain Controllers oder dem Domänenstamm verknüpft sind, sowie die OUs mit Tier-0-Objekten.
  • Konten mit Replikationsrechten, wie im DCSync-Rechte-Audit ermittelt.

Die Liste stammt aus Ihrem Tier-0-Inventar. Stimmen Graph und Inventar nicht überein, ist eines von beiden falsch – und beide Fehler sind Funde. Alles, was von Tier Zero über eine Kontrollkante erreichbar ist, gehört ebenfalls zu Tier Zero, ob beabsichtigt oder nicht.

Messen: die Abfragen, auf die es ankommt

Die integrierte Pfadsuche eignet sich zum Erkunden. Programme laufen auf einer festen Menge gespeicherter Abfragen, deren Ergebnisse sich zählen lassen. Diese Cypher-Beispiele funktionieren in der Abfrageansicht von BloodHound CE. Passen Sie das Ziel an Ihre eigene Tier-Zero-Markierung an:

Cypher
// Principals with a direct control edge onto Domain Admins or the domain object.
// Expect built-in admin groups and DCs; everything else needs an owner.
MATCH (n)-[r:GenericAll|GenericWrite|WriteDacl|WriteOwner|Owns|AddMember|AllExtendedRights|DCSync|GetChangesAll]->(t)
WHERE t:Domain OR (t:Group AND t.objectid ENDS WITH '-512')
RETURN n.name, type(r), t.name
Cypher
// Domain Admins with sessions on computers that are not domain controllers
MATCH (c:Computer)-[:HasSession]->(u:User)-[:MemberOf*1..]->(g:Group)
WHERE g.objectid ENDS WITH '-512'
  AND NOT (c)-[:MemberOf]->(:Group {name: 'DOMAIN CONTROLLERS@CORP.EXAMPLE.COM'})
RETURN DISTINCT c.name, u.name
Cypher
// Shortest paths from Domain Users to Domain Admins
MATCH p = shortestPath((s:Group)-[*1..]->(t:Group))
WHERE s.objectid ENDS WITH '-513' AND t.objectid ENDS WITH '-512'
RETURN p

Verfolgen Sie außerdem wöchentlich: die Anzahl der Prinzipale mit irgendeinem Pfad zu Tier Zero, den Anteil aktivierter Benutzer mit einem solchen Pfad und die Anzahl unterschiedlicher Kanten ersten Grades in Tier Zero. Diese drei Zahlen sind die KPIs Ihres Programms.

Die Engpässe finden

Ein Engpass (Choke Point) ist eine Kante oder ein Knoten, durch den viele Pfade laufen. Das Entfernen einer einzigen Engpasskante kann Hunderte Pfade unterbrechen. Das Entfernen der Kante am Anfang eines Pfades unterbricht meist nur diesen einen. BloodHound Enterprise berechnet das. In CE können Sie es näherungsweise ermitteln:

  1. Exportieren Sie alle kürzesten Pfade von großen Quellgruppen (Domain Users, Authenticated Users, Domain Computers) zu Ihren Tier-Zero-Zielen.
  2. Zählen Sie, wie oft jede Kante in diesen Pfaden vorkommt.
  3. Sortieren Sie nach Häufigkeit, dann nach Nähe der Kante zu Tier Zero.

Gewichten Sie die Häufigkeit mit der Größe der Quelle. Ein Pfad, der bei Domain Users beginnt, bringt jedes Mitarbeiterkonto eine Phishing-Mail von Tier Zero entfernt. Ein Pfad, der bei einem einzelnen deaktivierten Dienstkonto beginnt, ist deutlich weniger dringend, selbst wenn er kürzer ist. Halten Sie außerdem fest, welche Kanten strukturell (Gruppenmitgliedschaft, ACLs, GPO-Verknüpfungen) und welche transient (Sitzungen) sind. Strukturelle Kanten werden einmal behoben. Transiente Kanten erfordern eine Änderung der Arbeitsweise von Menschen und Werkzeugen.

Kanten einen Schritt vor Tier Zero gewinnen fast immer. Sie liegen auf jedem Pfad, der das Ziel über sie erreicht, und ihr Entfernen ist meist eine einzige ACL- oder Mitgliedschaftsänderung an einem bekannten Objekt.

Reihenfolge der Behebung

Arbeiten Sie in dieser Reihenfolge. Jeder Schritt entfernt pro Änderung mehr Exposition als der nächste.

  1. Kontrollkanten von außerhalb in Tier Zero. GenericAll, WriteDacl, WriteOwner, Owns, AddMember und Replikationsrechte, die Prinzipale außerhalb von Tier Zero auf Tier-Zero-Objekten besitzen. Entfernen Sie sie oder nehmen Sie das Prinzipal in Tier Zero auf und schützen Sie es entsprechend. Prüfen Sie zuerst AdminSDHolder und den Domänenstamm.
  2. Exposition von Tier-Zero-Anmeldeinformationen. HasSession-Kanten von Tier-Zero-Benutzern auf Computer niedrigerer Tiers. Die Lösung ist betrieblich: PAWs, Anmeldebeschränkungen und Authentifizierungsrichtlinien, keine ACL-Änderungen.
  3. Breite Prinzipale mit Kontrolle. Jede Kante, die bei Everyone, Authenticated Users, Domain Users oder Domain Computers beginnt. Diese machen jedes Konto zum Ausgangspunkt.
  4. GPO- und OU-Kontrolle über Tier Zero. Schreibrechte auf GPOs, die oberhalb von Tier-Zero-Objekten verknüpft sind, und Schreibrechte auf gPLink dieser OUs.
  5. Wildwuchs bei lokalen Admins. AdminTo-Auffächerung durch gemeinsame lokale Admin-Kennwörter oder breite Gruppen in der lokalen Gruppe Administrators. Rollen Sie Windows LAPS aus und entfernen Sie Domänengruppen aus den lokalen Admins.
  6. Delegierungs- und Zertifikatkanten. AllowedToDelegate, AllowedToAct, AddKeyCredentialLink und AD-CS-ESC-Kanten, die mit den jeweiligen Bereichsleitfäden behandelt werden.

Entfernen Sie bei ACL-Kanten den konkreten ACE, nicht den gesamten Zugriff des Prinzipals. Sichern Sie vor der Änderung die SDDL des Objekts:

PowerShell
$dn  = 'CN=Tier0-Servers,OU=Groups,OU=Tier0,DC=corp,DC=example,DC=com'
$acl = Get-Acl "AD:\$dn"
$acl.Sddl | Out-File "C:\Tier0\Backup\$(Get-Date -f yyyyMMdd)-Tier0-Servers.sddl"

$acl.Access | Where-Object {
    $_.IdentityReference -eq 'CORP\Helpdesk-L2' -and -not $_.IsInherited -and
    $_.ActiveDirectoryRights -match 'GenericAll|GenericWrite|WriteDacl|WriteOwner|WriteProperty'
} | ForEach-Object { [void]$acl.RemoveAccessRule($_) }
Set-Acl "AD:\$dn" -AclObject $acl

Ist die Kante vererbt, beheben Sie sie an der übergeordneten OU, an der sie definiert ist. Prüfen Sie außerdem, ob beim Objekt die Vererbung blockiert ist – typisch für Konten, die SDProp berührt hat.

Überprüfen

Jeder Behebungssprint endet mit einer frischen Erfassung, nicht mit einem Häkchen:

  • Führen Sie die gespeicherten Abfragen erneut aus. Die konkret entfernten Kanten müssen verschwunden sein, und die Pfadzahlen müssen sinken.
  • Prüfen Sie, dass keine neuen Kanten ersten Grades in Tier Zero entstanden sind. Rückschritte kommen meist durch neue Anwendungsinstallationen oder Delegierungsassistenten.
  • Beobachten Sie die KPIs über die Zeit. Eine sinkende Zahl der „Prinzipale mit einem Pfad zu Tier Zero“ ist der deutlichste Beleg, dass das Programm wirkt.

Erkennen Sie dieselben Änderungen zwischen den Erfassungen in Echtzeit. Ereignis 5136 an Tier-Zero-Objekten (ACL- und member-Änderungen) und 4728/4732/4756 für Gruppenmitgliedschaften sollten in dieselbe Alarmierungspipeline einfließen wie Ihre übrigen Tier-0-Erkennungen.

Was dabei kaputtgeht

  • Delegierungen, von denen niemand mehr wusste, dass man sie braucht. Helpdesk- oder Anwendungsteams verlieren die Rechte hinter einem Pfad. Vereinbaren Sie vor jeder Änderung Verantwortung und Rückfallplan (die gesicherte SDDL) und entfernen Sie in kleinen Tranchen.
  • Admin-Gewohnheiten. Tier-Zero-Sitzungen von Mitgliedsservern zu entfernen bedeutet, dass Admins keine Domänen-Admin-Konten mehr für Serverarbeit nutzen. Stellen Sie zuerst gestaffelte Admin-Konten und PAWs bereit, sonst kommen die Sitzungen zurück.
  • Herstellerwerkzeuge mit weitreichenden Rechten. Backup-, IAM- und Monitoring-Produkte verlangen oft GenericAll auf großen OUs. Grenzen Sie sie gemeinsam mit dem Hersteller ein oder verschieben Sie das Produkt nach Tier Zero und schützen Sie es.
  • Das Alarmaufkommen im SOC während der Erfassungsfenster, wenn nicht abgestimmt.

Weiterführende Lektüre: der ACL-Grundlagenleitfaden, Tier 0 & privilegierter Zugriff und eine PingCastle-Bewertung durchführen für eine ergänzende, punktebasierte Sicht.

Häufige Fragen

Ist es gefahrlos, SharpHound in Produktion auszuführen?

Die Erfassung besteht aus reinen LDAP-Lesezugriffen sowie optional SMB- und RPC-Abfragen an Mitgliedscomputer für Sitzungen und lokale Gruppen. Sie ändert nichts, ist aber auffällig und sieht exakt wie Aufklärung durch einen Angreifer aus. Informieren Sie daher Ihr SOC, verwenden Sie ein dediziertes Erfassungskonto, führen Sie sie von einem Tier-0- oder dedizierten Assessment-Host aus und schützen Sie Ausgabedateien und Datenbank als sensible Daten – sie sind eine vollständige Karte Ihrer Schwachstellen.

Was ist der Unterschied zwischen einem Angriffspfad und einer Fehlkonfiguration?

Ein Fund ist eine einzelne Tatsache, etwa dass eine Gruppe GenericWrite auf einen Benutzer hat. Ein Angriffspfad ist eine Kette solcher Tatsachen, die in Tier Zero endet. Viele Funde sind für sich genommen harmlos, und einige harmlos wirkende ergeben zusammen einen Pfad von Domain Users zu Domain Admins. Angriffspfadmanagement priorisiert danach, was die Kette erreicht und wie viele Prinzipale sie starten können, nicht nach dem Schweregrad jedes einzelnen Glieds.

Wie oft sollten Angriffspfade neu erfasst werden?

ACL- und Gruppendaten ändern sich langsam; eine wöchentliche Erfassung ist daher ein guter Standard und macht Trendkennzahlen erst aussagekräftig. Sitzungsdaten ändern sich im Minutentakt, sodass eine einzelne Momentaufnahme die Exposition unterschätzt. Erfassen Sie Sitzungen mehrmals über eine Arbeitswoche verteilt oder nutzen Sie einen kontinuierlichen Collector, und erfassen Sie nach jedem Behebungssprint erneut, um zu bestätigen, dass die Pfade wirklich verschwunden sind.

Angriffspfadmanagement mit BloodHound für Verteidiger

Verwandte Leitfäden

Gruppenrichtlinien & SYSVOL

GPO-Berechtigungen und gPLink-Rechte auditieren

Ermitteln, wer in AD GPOs bearbeiten, erstellen und verknüpfen darf: GPO-ACLs, gPLink-Rechte auf OUs und Standorten, Group Policy Creator Owners und WMI-Filter.

Fortgeschritten