
Werkzeug zur Erkennung von Resource-Based Constrained Delegation Angriffspfaden in Active Directory-Umgebungen
Tool zum Auffinden von Resource-Based Constrained Delegation-Angriffspfaden in Active Directory-Umgebungen
Basiert fast vollständig auf den wunderbaren Blogbeiträgen "Wagging the Dog: Abusing Resource-Based Constrained Delegation to Attack Active Directory" von Elad Shamir und "A Case Study in Wagging the Dog: Computer Takeover" von harmj0y. Lesen Sie diese beiden Blogbeiträge, wenn Sie tatsächlich verstehen möchten, was hier passiert. Ich verstehe es ehrlich gesagt selbst nur zur Hälfte (und das ist noch großzügig).
Ich kann C# nicht gut, daher habe ich herausgefunden, wie man in C# mit einer Domäne kommuniziert, indem ich den Quellcode von SharpSploit und SharpView gelesen habe.
Get-RBCD-Threaded fragt alle Active Directory-Benutzer, -Gruppen (außer privilegierten Gruppen wie "Domänen-Admins" und "BUILTIN\Administratoren") und -Computerobjekte in Ihrer aktuellen Domäne ab und erstellt eine Liste ihrer SIDs. Get-RBCD-Threaded fragt dann AD nach allen DACLs auf den Computerobjekten in der Domäne ab. Jeder ACE in den DACLs wird überprüft, ob eine der Benutzer-/Gruppen-/Computer-SIDs entweder "GenericAll", "GenericWrite", "WriteOwner" oder "WriteDacl"-Berechtigungen auf dem Computerobjekt hat, oder ob die SIDs "WriteProp"-Berechtigungen auf dem Attribut ms-DS-Allowed-To-Act-On-Behalf-Of-Other-Identity haben (GUID:3f78c3e5-f79a-46bd-a0b8-9d18116ddc79). Wenn ja, dann, nun ja, mein Freund, sind Sie auf dem Weg zu einem Resource-Based Constrained Delegation-Angriff!
Kompilieren Sie in Visual Studio. Dies verwendet Parallel.ForEach, um die Suche durch das DACL-Objekt zu beschleunigen, daher ist mindestens .NET v4 erforderlich.
-u|-username=, Benutzername für die Authentifizierung
-p|-password=, Passwort für den Benutzer
-d|-domain=, Vollqualifizierter Domänenname für die Authentifizierung
-s|-searchforest, Domänen und Gesamtstrukturen über Vertrauensstellungen erkennen. Alle Domänen und Gesamtstrukturen aufzählen
-pwdlastset=, Filtert Computer basierend auf pwdLastSet, um veraltete Computerobjekte zu entfernen. Wenn Sie dies auf 90 setzen, werden Computerobjekte herausgefiltert, deren pwdLastSet-Datum mehr als 90 Tage zurückliegt
-i|-insecure, Erzwingt unsichere LDAP-Verbindung, wenn LDAPS Verbindungsprobleme verursacht.
-o|-outputfile=, Ausgabe in eine CSV-Datei. Vollständigen Pfad und Dateinamen angeben.
-h|-?|-help, Hilfeoptionen anzeigen
Sie können jetzt Benutzername, Passwort und Domäne für die Authentifizierung angeben. Wenn die Optionen u/p/d leer sind, versucht Get-RBCD-Threaded, sich mit Ihrem aktuellen Benutzerkontext bei der Domäne zu authentifizieren.
-o gibt in eine CSV-Datei aus. Geben Sie den vollständigen Dateipfad und -namen an, um die Ausgabe zu speichern.
Die Standardsuche gibt vor, dass Port 636 verwendet wird, um LDAPS zu erzwingen. Dies kann Probleme verursachen. Wenn Sie eine Fehlermeldung erhalten, dass der Server nicht verfügbar ist oder ähnliches, versuchen Sie das Flag "-i", um den Port 636 aus der Verbindungszeichenfolge zu entfernen.
"pwdLastSet" wurde als Filteroption hinzugefügt. In größeren Umgebungen kann es viele veraltete Computerobjekte geben, die als "Ziel"-Objekt in der ACL nicht mehr existieren und nicht für den RBCD-Angriff verwendet werden können (soweit ich weiß). Setzen Sie pwdLastSet auf eine Anzahl von Tagen. Beispiel: "-pwdlastset=90" filtert alle Computerobjekte aus Ihren Ergebnissen heraus, deren pwdLastSet-Datum größer oder gleich 90 Tagen ab dem aktuellen Datum und der aktuellen Uhrzeit ist.
Getestet in einer Umgebung mit 20.000+ Benutzern, Gruppen und Computern (über 60.000 Objekte insgesamt). Get-RBCD-Threaded benötigte ca. 60 Sekunden. Im Vergleich dazu liefen meine zusammengehackten PowerView-Befehle aus diesem Gist zur Durchführung einer ähnlichen Suche mehrere Stunden und wurden nie fertig.
Dieses Tool führt den Delegierungsangriff nicht für Sie aus. Sie müssen die Blogs von Elad Shamir und harmj0y lesen, um herauszufinden, wie das geht. Es hilft Ihnen nur, mögliche Ziele für den RBCD-Angriff zu finden.
Beispielverwendung aus meinem AD-Labor:

Dieses Tool führt nichts weiter aus, als Active Directory mit LDAP-Abfragen zu durchsuchen, was möglicherweise nicht einfach zu erkennen ist. NetFlow könnte möglicherweise verwendet werden, um eine große Anzahl von LDAP-Abfragen / Datenverkehr zu einem System zu erkennen.
Eine andere mögliche Erkennungsmethode sind Honeypot-Konten. Die Idee wäre, ein Computerobjekt zu erstellen, auf das ein Benutzer / eine Gruppe Schreibberechtigungen hat. Der RBCD-Angriff basiert auf der Änderung eines Computerobjekts und der anschließenden Delegierung von Kerberos-Tickets an dieses. Die möglichen Erkennungspunkte für das Honeypot-Computerobjekt könnten sein:
Ich habe dieses Tool erstellt, um mir bei Penetrationstests zu helfen. Allerdings können Verteidiger / Blue Teams / Systemadministratoren es leicht verwenden, um Schwachstellen in ihren Umgebungen zu finden und (hoffentlich) zu beheben.