
Werkzeug zur automatischen Ausnutzung von Active Directory-Privilegieneskalationspfaden, die von BloodHound angezeigt werden
autobloodyautobloody ist ein Tool zur automatischen Ausnutzung von Active Directory-Privilegieneskalationspfaden, die von BloodHound angezeigt werden.
Dieses Tool automatisiert die AD-Privilegieneskalation zwischen zwei AD-Objekten, der Quelle (die, die wir besitzen) und dem Ziel (das, das wir wollen), sofern ein Privesc-Pfad in der BloodHound-Datenbank existiert. Die Automatisierung besteht aus zwei Schritten:
bloodyAD-Pakets.Da autobloody auf bloodyAD basiert, unterstützt es die Authentifizierung mittels Klartext-Passwörtern, Pass-the-Hash, Pass-the-Ticket oder Zertifikaten und bindet an LDAP-Dienste eines Domaincontrollers, um AD-Privilegieneskalation durchzuführen.
Ein Python-Paket ist verfügbar:
pip install autobloody
Oder Sie können das Repository klonen:
git clone --depth 1 https://github.com/CravateRouge/autobloody
pip install .
Für eine bessere Leistung wird empfohlen, die GDS-Bibliothek in Neo4j installiert zu haben. Ohne sie verwendet autobloody native CYPHER-Abfragen, die langsamer, aber dennoch funktionsfähig sind.
Eine leichte BloodHound-Umgebung mit GDS-Plugin kann durch Starten von ./bloodhound-ce von https://github.com/CravateRouge/Single-User-BloodHound installiert werden.
Zunächst müssen Daten in BloodHound importiert werden (z. B. mit SharpHound oder BloodHound.py) und Neo4j muss ausgeführt werden.
⚠️ -ds und -dt Werte beachten die Groß-/Kleinschreibung
Einfache Verwendung:
autobloody -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds '[email protected]' -dt 'BLOODY.LOCAL'
Vollständige Hilfe:
[bloodyAD]$ ./autobloody.py -h
usage: autobloody.py [-h] [--dburi DBURI] [-du DBUSER] -dp DBPASSWORD -ds DBSOURCE -dt DBTARGET [-d DOMAIN] [-u USERNAME] [-p PASSWORD] [-k] [-c CERTIFICATE] [-s] --host HOST [-y] [-v] [--timeout TIMEOUT]
AD Privesc Automation
options:
-h, --help show this help message and exit
--dburi DBURI The host neo4j is running on (default is "bolt://localhost:7687")
-du DBUSER, --dbuser DBUSER
Neo4j username to use (default is "neo4j")
-dp DBPASSWORD, --dbpassword DBPASSWORD
Neo4j password to use
-ds DBSOURCE, --dbsource DBSOURCE
Case sensitive label of the source node (name property in bloodhound)
-dt DBTARGET, --dbtarget DBTARGET
Case sensitive label of the target node (name property in bloodhound)
-d DOMAIN, --domain DOMAIN
Domain used for NTLM authentication (optional, default is dbsource domain)
-u USERNAME, --username USERNAME
Username used for NTLM authentication (optional, default is dbsource sAMAccountName)
-p PASSWORD, --password PASSWORD
Cleartext password or LMHASH:NTHASH for NTLM authentication
-k, --kerberos
-c CERTIFICATE, --certificate CERTIFICATE
Certificate authentication, e.g: "path/to/key:path/to/cert"
-s, --secure Try to use LDAP over TLS aka LDAPS (default is LDAP)
--host HOST Hostname or IP of the DC (ex: my.dc.local or 172.16.1.3)
-y, --yes Assume yes to apply the generated privesc
-v, --verbose Enable verbose output (-v for INFO, -vv for DEBUG)
--timeout TIMEOUT Connection timeout in seconds (default is 60)
Zunächst wird ein Privesc-Pfad mit dem Dijkstra-Algorithmus gefunden, der in der Neo4j-GDS-Bibliothek implementiert ist. Der Dijkstra-Algorithmus ermöglicht die Lösung des Problems des kürzesten Pfades auf einem gewichteten Graphen. Standardmäßig haben die von BloodHound erstellten Kanten kein Gewicht, sondern einen Typ (z. B. MemberOf, WriteOwner). Jedem Edge wird dann entsprechend dem Kantentyp und dem Typ des erreichten Knotens (z. B. Benutzer, Gruppe, Domäne) ein Gewicht hinzugefügt.
Sobald ein Pfad generiert wurde, verbindet sich autobloody mit dem DC, führt den Pfad aus und bereinigt das, was reversibel ist (alles außer ForcePasswordChange und setOwner).
Derzeit werden nur die folgenden BloodHound-Kanten für die automatische Ausnutzung unterstützt:
Gefällt Ihnen dieses Projekt? Spenden sind willkommen
Benötigen Sie personalisierten Support? Senden Sie mir eine E-Mail für Schulungen oder kundenspezifische Funktionen.