
AD-PathFinder v1.2.0
Angriffspfad-Mapping für Active Directory, ADCS, SCCM und MSSQL mit BloodHound CE + OpenGraph-Daten.
ADPathFinder
ADPathFinder ist ein Angriffs-Mapping-Tool für Pentester und Red Teams. Es analysiert SharpHound-Daten und vereint sie mit OpenGraph-Plugins, um Angriffspfade zu hochwertigen Zielen wie Domain-Admins und Domain-Controllern aufzuzeigen, ausgehend von niedrig privilegierten Benutzern und Computern. MSSQLHound und ConfigManBearPig werden nativ unterstützt und erweitern die Abdeckung über AD, ADCS, SCCM und MSSQL.
Sprung zu: Schnellstart · Abdeckung · Funktionsweise · Berichte · Konfiguration · Mitwirkende
Abdeckung
| Bereich | Beispiele |
|---|---|
| Core AD | Eskalationspfade, Delegation, Administratorrechte, BadSuccessor, exponierte High-Value-Sitzungen |
| Passwörter | Schwache Passwörter, leere Passwörter, Wiederverwendung, Benutzernamen-Ähnlichkeit, LM-Hash-Nutzung, Kerberoast- und AS-REP-Exposition in Kombination mit schwachen Passwörtern |
| ADCS | ESC-artige Zertifikatsvorlagen- und CA-Risiken |
| MSSQL (MSSQLHound OpenGraph-Daten) | Logins, verknüpfte Server, Impersonation, Relay und Privilegien-Eskalationspfade |
| SCCM (ConfigManBearPig OpenGraph-Daten) | Übernahme- und Relay-Pfade, PXE-fähige Verteilungspunkte und Management-Point-Richtlinienabruf |
| Domänenübergreifend | Vertrauensstellungen, gemeinsame Passwörter und Eskalationspfade zwischen Domänen |
Voraussetzungen
- Python 3.9 oder höher.
- BloodHound CE und Neo4j, standardmäßig lokal unter
neo4j://localhost:7687verfügbar. - BloodHound CE API-Anmeldedaten für Import- und Löschvorgänge.
- Ein BloodHound CE / SharpHound-Zip für AD-Audit-Abdeckung.
- Optionale OpenGraph-Plugin-Zips von MSSQLHound und ConfigManBearPig für MSSQL- und SCCM-Abdeckung.
- Optional NTDS-Hash-Dump und Hashcat-Potfile für Passwort-Audits.
Schnellstart
Installation aus dem Quellcode
git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
BloodHound API-Zugriff konfigurieren
adpathfinder --setup-bloodhound-api
Dies speichert die BloodHound CE API-Einstellungen, die für Import- und Löschvorgänge verwendet werden.
SharpHound-Daten importieren
adpathfinder --import SharpHound.zip
Mehrere SharpHound- und OpenGraph-Plugin-Zip-Dateien können in einem Befehl importiert werden:
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
Daten importieren und ein vollständiges Audit durchführen
adpathfinder -i SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Verwenden Sie nur die Zip-Dateien, die Sie haben. Der --pwd-Wert ist nicht die AD-Domäne, sondern eine durch Kommas getrennte Liste von Unternehmens-, Marken- oder Organisationsbegriffen, die in geknackten Passwörtern markiert werden sollen.
Ein Domänen-Audit durchführen
adpathfinder --ad
Ein Passwort-Audit durchführen
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Verwenden Sie --unsafe-report nur, wenn Berichte Klartext-Passwörter enthalten sollen.
Diagnose schreiben
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
Funktionsweise
| Phase | Ablauf |
|---|---|
| Erfassen | Führt SharpHound und unterstützte OpenGraph-Zips zu einem einzigen Graphen zusammen. MSSQLHound- und ConfigManBearPig-Daten werden direkt unterstützt |
| Abbilden | Findet die kürzesten Pfade von Benutzern und Computern zu hochwertigen Zielen. Sie können die Kantenmenge konfigurieren, um verrauschte Kanten wie HasSession auszuschließen |
| Gruppieren | Gruppiert Konten, die sich einen Pfad teilen, sodass wiederholte Pfade als ein Fund statt vieler nahezu identischer gemeldet werden |
| Paaren | Vergleicht NTDS-Hashes und Hashcat-Potfiles mit Graphendaten, um zu zeigen, welche Pfade während der Bewertung nutzbar sind |
| Überlagern | Meldet eigenständige Funde wie deaktivierte SMB-Signierung oder Standard-Privilegierten-Gruppen und erhöht die Schwere, wenn derselbe Host oder dieselbe Gruppe auch auf einem Pfad zu hochwertigen Zielen liegt |
| Ausgeben | Schreibt HTML-Berichte mit SVG-Pfadgrafiken, Minderungshinweisen, PowerShell-Validierungsschritten und Nachverfolgung des behobenen Zustands, sowie Text-, JSON- und Diagnose-Ausgaben |
AD HTML-Bericht
Passwort-Audit HTML-Bericht
Konfiguration
ADPathFinder liest config.ini aus dem Arbeitsverzeichnis. Werte können auch mit ADPF_*-Umgebungsvariablen gesetzt werden.
Führen Sie dies aus, um den BloodHound CE API-Zugriff für Importe und Löschvorgänge zu konfigurieren:
adpathfinder --setup-bloodhound-api
Siehe Konfiguration im Wiki für alle Optionen, Neo4j-Verbindungseinstellungen, Dateiberechtigungen und Beispielkonfigurationen. Siehe Ausgeschlossene Beziehungen zum Filtern der Angriffspfad-Ausgabe.
Ausgaben
Berichte werden in report_<domain>/ geschrieben, z.B. report_training.local/.
| Ausgabe | Zweck |
|---|---|
<domain>_AD_report.html | HTML-Bericht für Kunden mit gruppierten Funden, Pfadgrafiken, Minderungshinweisen, Validierungsschritten und Nachverfolgung des behobenen Zustands |
<domain>_domain_audit.txt / <domain>_domain_audit.json | Text- und JSON-Domänen-Audit-Ausgaben zur Überprüfung, Automatisierung und späteren Analyse |
<domain>_password_audit.html / <domain>_password_audit.txt / <domain>_password_audit.json | Passwort-Audit-Ausgaben, wenn NTDS-Hashes und ein Hashcat-Potfile bereitgestellt werden |
<domain>_*_unsafe.* | Optionale unsichere Berichte, die nur mit --unsafe-report erstellt werden; diese können Klartext-Passwörter enthalten |
diagnostics.json | Optionale Laufstatistiken und Debugging-Daten, die mit --diagnostics erstellt werden |
Behandeln Sie NTDS-Daten, Potfiles und generierte Berichte als sensible Bewertungsdaten. Das Flag --unsafe-report schreibt Klartext-Passwörter in die Ausgabedateien; verwenden Sie es nur, wenn Sie speziell Klartext im Bericht benötigen, und speichern Sie die resultierenden _unsafe-Dateien entsprechend.
Siehe sample_reports/ für Beispiele von Domänen-Audit- und Passwort-Audit-Ausgaben.
Mitwirkende
Checks sind kleine Klassen, die sich mit einem Dekorator registrieren, ihre Datenanforderungen deklarieren und Fund-Wörterbücher zurückgeben. Plattform-Checks deklarieren ihre Datenquelle, sodass normale AD-Audits MSSQL- oder SCCM-Checks überspringen, wenn die entsprechenden OpenGraph-Daten nicht vorhanden sind.
Siehe Hinzufügen neuer Checks, Arbeiten mit OpenGraph-Plugins und den Framework-Leitfaden im Wiki.
Testen
pip install -e ".[test]" und dann pytest tests/ -m "not neo4j and not integration" führt die schnellen Framework-Tests ohne Neo4j aus. Siehe tests/README.md für die Neo4j-Fixture-Suite und den vollständigen lokalen Test-Workflow.
Danksagungen
ADPathFinder baut auf Daten auf, die von anderen Projekten gesammelt wurden; Danke an deren Autoren und das SpecterOps-Team:
- BloodHound CE — die Active Directory-Graphendaten.
- MSSQLHound von Chris Thompson — MSSQL-Erfassung.
- ConfigManBearPig von Chris Thompson — SCCM-Erfassung.