
Parst AD Explorer-Snapshots in BloodHound-kompatibles JSON oder NDJSON für Active Directory-Erkundung und Angriffspfad-Kartierung.
ADExplorerSnapshot.py ist ein AD Explorer-Snapshot-Parser. Es wurde als Ingestor für BloodHound über BOFHound entwickelt und unterstützt auch das vollständige Dumping von Objekten im NDJSON-Format.
AD Explorer ermöglicht es, sich mit einem DC zu verbinden und LDAP-Daten zu durchsuchen. Es kann auch Snapshots des Servers erstellen, mit dem Sie gerade verbunden sind. Dieses Tool ermöglicht es, diese Snapshots in das BOFHound-Format oder in BloodHound-kompatible JSON-Dateien zu konvertieren oder alle verfügbaren Objekte im Snapshot als NDJSON für eine einfachere Verarbeitung auszugeben.

Im Ausgabemodus BOFHound werden alle Attribute jedes Objekts geparst und im BOFHound-Format (ähnlich LDIF) ausgegeben. Dieses Format kann dann mit BOFHound geparst werden:
Im Ausgabemodus Objects werden alle Attribute jedes Objekts geparst und im NDJSON-Format ausgegeben.
Im Ausgabemodus BloodHound (veraltet zugunsten der vollständigeren BOFHound-Konvertierung):
AD Explorer-Snapshots enthalten nur Informationen, die vom LDAP-Server abrufbar sind. Das bedeutet, dass Funktionen wie Session- und Localadmin-Sammlung nicht verfügbar sind, da dieses Tool nicht mit Systemen im Netzwerk interagiert. Es stehen nur die Daten des LDAP/DC zur Verfügung, gegen den der Snapshot ausgeführt wurde.
Im Modus BOFHound werden alle Daten in das BOFHound-Format konvertiert, was den vollständigsten Sammlungsansatz darstellt.
Im Modus BloodHound verarbeitet der Ingestor alle Daten, die er aus dem Snapshot extrahieren kann (einschließlich ACLs), gibt jedoch nur die JSON-Daten aus, die von BloodHound interpretiert werden können. Die GPO/OU-Sammlung fehlt.
Die Vertrauensstellungssammlung enthält die Ansicht, die vom verbundenen LDAP-DC aus sichtbar ist.
ADExplorerSnapshot.py unterstützt Python 3.12+. Abhängigkeiten werden über pip verwaltet.
Sie können das Tool direkt mit uvx ausführen (falls nicht vorhanden: pip install uvx).
uvx git+https://github.com/c3c/ADExplorerSnapshot
usage: ADExplorerSnapshot.py [-h] [-o OUTPUT] [-m {BOFHound,BloodHound,Objects}] snapshot
AD Explorer snapshot ingestor for BloodHound
positional arguments:
snapshot Path to the snapshot .dat file.
options:
-h, --help show this help message and exit
-o, --output OUTPUT Path to the *.json output folder. Folder will be created if it doesn't exist. Defaults to the current directory.
-m, --mode {BOFHound,BloodHound,Objects}
The output mode to use. Defaults to BOFHound output mode, which can then be used with BOFHound. Can also directly output to BloodHound JSON output files (with limitations). In Objects
mode all objects with all attributes are outputted to NDJSON.
Der Ausgabemodus BOFHound ist der bevorzugte Ausgabemodus. Anschließend können Sie das BOFHound-Tool verwenden, um die Daten in BloodHound zu importieren.
Typischer Aufruf:
uvx git+https://github.com/c3c/ADExplorerSnapshot -m BOFHound snapshot.dat
uvx bofhound -i ./dc.server.com_1234567890_bofhound.log -o output


Zertifikatvorlagen können im BloodHound-Format oder im BloodHound-ly4k-Format importiert werden.
Wenn Sie die reguläre BloodHound-Version verwenden, sollten Sie nur die cert_bh JSON-Datei importieren (die als GPOs importiert wird).
Wenn Sie den Fork von ly4k verwenden, sollten Sie stattdessen die cert_ly4k-Dateien importieren. Einige Informationen werden weggelassen (z. B. für ESC8, ob Web Enrollment aktiviert ist), da sie mit AD Explorer nicht gesammelt werden können.
Das Erstellen von Snapshots in AD Explorer ist netzwerkintensiver als die traditionellen BloodHound-Ingestoren, da versucht wird, alle möglichen Objekte aus dem LDAP abzurufen.
ADExplorerSnapshot.py erstellt Caches von Informationen für schnellere Nachschlagevorgänge während der Verarbeitung der Daten. Insbesondere bei der Verarbeitung größerer Snapshots (z. B. 4 GB+) benötigen Sie auch ausreichend RAM. In meinen Tests wurde etwa die Hälfte der Snapshot-Dateigröße im RAM benötigt.
Die Bibliothek wurde mit einer Reihe von Datensätzen getestet. Bitte erstellen Sie einen Issue-Report, wenn Sie auf Probleme stoßen.
Der AD Explorer-Snapshot-Parser ist als eigenes Modul implementiert, das auch einzeln verwendet werden kann.
Das Format, in dem Snapshots von AD Explorer gespeichert werden, ist proprietär und führte zu einer unterhaltsamen Reverse-Engineering-Reise. In diesem Repository ist eine 010-Editor-Vorlage enthalten, die ich verwendet habe, um die Inhalte des Snapshots iterativ in Strukturen abzubilden.
Für den BloodHound-Ausgabemodus unterstützt diese Bibliothek das BloodHound v6-Ausgabeformat. Ältere Versionen wurden in früheren Commits unterstützt, falls Sie diese noch benötigen. Für das alte v3-Ausgabeformat können Sie den Code im v3-format Branch verwenden.
In Bezug auf OPSEC ist AD Explorer ein legitimes Microsoft-Tool. Bei der Erstellung eines Snapshots werden nur begrenzte Abfragen an den LDAP-Server gesendet (objectGuid=*). Das Ergebnissatz ist jedoch riesig, da alle Objekte und ihre zugehörigen Attribute abgerufen werden. Dies führt zu einer recht umfangreichen Ausgabe.
Die Erkennung dieses Tools ist auf verschiedene Weise möglich, für die ich auf den hervorragenden Blogbeitrag von FalconForce verweise: FalconFriday — Detecting Active Directory Data Collection — 0xFF21.
Dieser Code ist unter der MIT-Lizenz lizenziert und verwendet Code, der ebenfalls unter der MIT-Lizenz lizenziert ist.
ADExplorerSnapshot.py stützt sich auf die folgenden Projekte:
Danksagungen:
Dank an Deloitte für die Bereitstellung der Umgebung, in der dieses Tool entwickelt wurde.