
Angriffspfad-Mapping für Active Directory, ADCS, SCCM und MSSQL mit BloodHound CE + OpenGraph-Daten.
# ADPathFinder
[](https://github.com/NetSPI/AD-PathFinder/actions/workflows/test.yml)
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.
> **Blog:** [OpenGraph-Angriffspfad-Mapping in BloodHound CE](https://www.netspi.com/blog/technical-blog/network-pentesting/adpathfinder-opengraph-attack-path-mapping-in-bloodhound-ce/)
<p align="center">
<a href="https://github.com/netspi/ad-pathfinder/blob/main/docs/images/demo-slideshow.mp4">
<img src="https://assets.kitploit.com/production/public/readmes/35238/da8b4155e654c3272e19b1158bbaa3bc4632356196ea17dae76a4ad0c51aa3c0.webp" alt="ADPathFinder-CLI-Demo mit gruppierten Risikofunden und Angriffspfaden" width="850">
</a>
</p>
**Sprung zu:** [Schnellstart](#quickstart) · [Abdeckung](#coverage) · [Funktionsweise](#how-it-works) · [Berichte](#outputs) · [Konfiguration](#configuration) · [Mitwirkende](#contributors)
## 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:7687` verfü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
<details open>
<summary><strong>Installation aus dem Quellcode</strong></summary>
```bash
git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```
</details>
<details>
<summary><strong>BloodHound API-Zugriff konfigurieren</strong></summary>
```bash
adpathfinder --setup-bloodhound-api
```
Dies speichert die BloodHound CE API-Einstellungen, die für Import- und Löschvorgänge verwendet werden.
</details>
<details>
<summary><strong>SharpHound-Daten importieren</strong></summary>
```bash
adpathfinder --import SharpHound.zip
```
Mehrere SharpHound- und OpenGraph-Plugin-Zip-Dateien können in einem Befehl importiert werden:
```bash
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
```
</details>
<details>
<summary><strong>Daten importieren und ein vollständiges Audit durchführen</strong></summary>
```bash
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.
</details>
<details>
<summary><strong>Ein Domänen-Audit durchführen</strong></summary>
```bash
adpathfinder --ad
```
</details>
<details>
<summary><strong>Ein Passwort-Audit durchführen</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
```
Verwenden Sie `--unsafe-report` nur, wenn Berichte Klartext-Passwörter enthalten sollen.
</details>
<details>
<summary><strong>Diagnose schreiben</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
```
</details>
## 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](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships), 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 |
<p align="center">
<img src="https://raw.githubusercontent.com/netspi/ad-pathfinder/HEAD/docs/images/workflow.svg" alt="ADPathFinder-Workflow-Diagramm" width="850">
</p>
## AD HTML-Bericht
<p align="center">
<a href="https://github.com/netspi/ad-pathfinder/blob/main/docs/images/ad-report-slideshow.mp4">
<img src="https://assets.kitploit.com/production/public/readmes/35238/039c3cda9d34b24185b439d441359ed63a5b4f03002d400a88a8fbf04717c98c.webp" alt="ADPathFinder AD-Bericht-Durchlauf mit Überblick, Minderung und Bestätigungsschritten" width="850">
</a>
</p>
## Passwort-Audit HTML-Bericht
<p align="center">
<a href="https://github.com/netspi/ad-pathfinder/blob/main/docs/images/password-audit-slideshow.mp4">
<img src="https://assets.kitploit.com/production/public/readmes/35238/0d3b193537b32399c070e2f2caf32c8de6149ee267dfaa497a0c7b500f8f987d.webp" alt="ADPathFinder Passwort-Audit-Bericht-Durchlauf mit geknackten Kategorien, Richtlinieneinhaltung, Passwortlängen und roastbaren Konten" width="850">
</a>
</p>
## 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:
```bash
adpathfinder --setup-bloodhound-api
```
Siehe [Konfiguration](https://github.com/NetSPI/AD-PathFinder/wiki/Configuration) im Wiki für alle Optionen, Neo4j-Verbindungseinstellungen, Dateiberechtigungen und Beispielkonfigurationen. Siehe [Ausgeschlossene Beziehungen](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) 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/`](https://github.com/netspi/ad-pathfinder/blob/main/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](https://github.com/NetSPI/AD-PathFinder/wiki/Adding-New-Checks), [Arbeiten mit OpenGraph-Plugins](https://github.com/netspi/ad-pathfinder/blob/main/docs/OPENGRAPH.md) und den [Framework-Leitfaden](https://github.com/NetSPI/AD-PathFinder/wiki/Framework-Guide) 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`](https://github.com/netspi/ad-pathfinder/blob/main/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](https://github.com/SpecterOps/BloodHound) — die Active Directory-Graphendaten.
- [MSSQLHound](https://github.com/SpecterOps/MSSQLHound) von Chris Thompson — MSSQL-Erfassung.
- [ConfigManBearPig](https://github.com/SpecterOps/ConfigManBearPig) von Chris Thompson — SCCM-Erfassung.