
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
| 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 |
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/.