
Angriffspfad-Mapping für Active Directory, ADCS, SCCM und MSSQL mit BloodHound CE + OpenGraph-Daten.
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
| 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 |
neo4j://localhost:7687 verfügbar.git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
adpathfinder --setup-bloodhound-api
Dies speichert die BloodHound CE API-Einstellungen, die für Import- und Löschvorgänge verwendet werden.
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
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.
adpathfinder --ad
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Verwenden Sie --unsafe-report nur, wenn Berichte Klartext-Passwörter enthalten sollen.
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
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.
Berichte werden in report_<domain>/ geschrieben, z.B. report_training.local/.
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.
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.
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.
ADPathFinder baut auf Daten auf, die von anderen Projekten gesammelt wurden; Danke an deren Autoren und das SpecterOps-Team:
| 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 |
| 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 |