
Mappatura del percorso di attacco per Active Directory, ADCS, SCCM e MSSQL utilizzando BloodHound CE + OpenGraph data.
# ADPathFinder
[](https://github.com/NetSPI/AD-PathFinder/actions/workflows/test.yml)
ADPathFinder è uno strumento di mappatura degli attacchi per pentester e red teamer. Analizza i dati di SharpHound e li unifica con i plugin OpenGraph per individuare i percorsi di attacco verso obiettivi di alto valore come Amministratori di Dominio e Controller di Dominio, partendo da utenti e computer con privilegi ridotti. MSSQLHound e ConfigManBearPig sono supportati nativamente, estendendo la copertura su AD, ADCS, SCCM e MSSQL.
> **Blog:** [Mappatura dei percorsi di attacco OpenGraph 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 showing grouped risk findings and attack paths" width="850">
</a>
</p>
**Vai a:** [Avvio rapido](#quickstart) · [Copertura](#coverage) · [Come funziona](#how-it-works) · [Report](#outputs) · [Configurazione](#configuration) · [Contributori](#contributors)
## Copertura
| Area | Esempi |
| --- | --- |
| AD principale | Percorsi di escalation, deleghe, diritti di amministratore, BadSuccessor, sessioni di alto valore esposte |
| Password | Password deboli, password vuote, riutilizzo, somiglianza tra nomi utente, uso di hash LM, esposizione Kerberoast e AS-REP abbinate a password deboli |
| ADCS | Rischi legati a modelli di certificato stile ESC e CA |
| MSSQL (dati OpenGraph di MSSQLHound) | Login, server collegati, impersonificazione, relay e percorsi di escalation dei privilegi |
| SCCM (dati OpenGraph di ConfigManBearPig) | Percorsi di takeover e relay, punti di distribuzione abilitati PXE e recupero criteri da management point |
| Tra domini | Trust, password condivise e percorsi di escalation tra domini |
## Requisiti
- Python 3.9 o successivo.
- BloodHound CE e Neo4j disponibili localmente di default su `neo4j://localhost:7687`.
- Credenziali API di BloodHound CE per operazioni di importazione ed eliminazione.
- Uno zip di BloodHound CE / SharpHound per la copertura dell'audit AD.
- Zip opzionali dei plugin OpenGraph da MSSQLHound e ConfigManBearPig per la copertura MSSQL e SCCM.
- Dump di hash NTDS e potfile di hashcat opzionali per audit delle password.
## Avvio rapido
<details open>
<summary><strong>Installa dal sorgente</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>Configura l'accesso API di BloodHound</strong></summary>
```bash
adpathfinder --setup-bloodhound-api
```
Questo salva le impostazioni API di BloodHound CE utilizzate per le operazioni di importazione ed eliminazione.
</details>
<details>
<summary><strong>Importa dati SharpHound</strong></summary>
```bash
adpathfinder --import SharpHound.zip
```
È possibile importare più file zip di SharpHound e plugin OpenGraph con un unico comando:
```bash
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
```
</details>
<details>
<summary><strong>Importa dati ed esegui un audit completo</strong></summary>
```bash
adpathfinder -i SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
```
Utilizza solo i file zip che hai. Il valore `--pwd` non è il dominio AD; è un elenco separato da virgole di termini di azienda, marchio o organizzazione da segnalare nelle password craccate.
</details>
<details>
<summary><strong>Esegui un audit del dominio</strong></summary>
```bash
adpathfinder --ad
```
</details>
<details>
<summary><strong>Esegui un audit delle password</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
```
Utilizza `--unsafe-report` solo quando i report devono includere password in chiaro.
</details>
<details>
<summary><strong>Scrivi diagnostica</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
```
</details>
## Come funziona
| Fase | Cosa succede |
| --- | --- |
| **Inserimento** | Unisce gli zip di SharpHound e dei plugin OpenGraph supportati in un unico grafo. I dati di MSSQLHound e ConfigManBearPig sono supportati direttamente |
| **Mappatura** | Trova i percorsi più brevi da utenti e computer agli obiettivi di alto valore. Puoi [configurare il set di archi](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) per rimuovere archi rumorosi come `HasSession` |
| **Raggruppamento** | Raggruppa gli account che condividono un percorso, in modo che i percorsi ripetuti siano riportati come un unico risultato invece di molti quasi duplicati |
| **Abbinamento** | Confronta gli hash NTDS e i potfile di hashcat con i dati del grafo per mostrare quali percorsi sono utilizzabili durante la valutazione |
| **Stratificazione** | Segnala risultati indipendenti come firma SMB disabilitata o gruppi privilegiati predefiniti, e aumenta la gravità quando lo stesso host o gruppo si trova anche su un percorso verso obiettivi di alto valore |
| **Rendering** | Scrive report HTML con grafici dei percorsi SVG, note di mitigazione, passaggi di validazione PowerShell e tracciamento dello stato corretto, oltre a output di testo, JSON e diagnostica |
<p align="center">
<img src="https://raw.githubusercontent.com/netspi/ad-pathfinder/HEAD/docs/images/workflow.svg" alt="ADPathFinder workflow diagram" width="850">
</p>
## Report HTML AD
<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 report walkthrough showing overview, mitigation, and confirmation steps" width="850">
</a>
</p>
## Report HTML per Audit Password
<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 password audit report walkthrough showing cracked categories, policy compliance, password lengths, and roastable accounts" width="850">
</a>
</p>
## Configurazione
ADPathFinder legge `config.ini` dalla directory di lavoro. I valori possono anche essere impostati con variabili d'ambiente `ADPF_*`.
Esegui questo comando per configurare l'accesso API di BloodHound CE per importazioni ed eliminazioni:
```bash
adpathfinder --setup-bloodhound-api
```
Vedi [Configurazione](https://github.com/NetSPI/AD-PathFinder/wiki/Configuration) sul wiki per tutte le opzioni, impostazioni di connessione Neo4j, permessi dei file e configurazioni di esempio. Vedi [Relazioni escluse](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) per filtrare l'output dei percorsi di attacco.
## Output
I report vengono scritti in `report_<dominio>/`, ad esempio `report_training.local/`.
| Output | Scopo |
| --- | --- |
| `<dominio>_AD_report.html` | Report HTML per i client con risultati raggruppati, grafici dei percorsi, note di mitigazione, passaggi di validazione e tracciamento dello stato corretto |
| `<dominio>_domain_audit.txt` / `<dominio>_domain_audit.json` | Output di audit del dominio in formato testo e JSON per revisione, automazione e analisi successive |
| `<dominio>_password_audit.html` / `<dominio>_password_audit.txt` / `<dominio>_password_audit.json` | Output di audit delle password quando vengono forniti hash NTDS e un potfile di hashcat |
| `<dominio>_*_unsafe.*` | Report unsafe opzionali generati solo con `--unsafe-report`; possono includere password in chiaro |
| `diagnostics.json` | Statistiche di esecuzione e dati di debug opzionali generati con `--diagnostics` |
Gestisci i dati NTDS, i potfile e i report generati come dati sensibili della valutazione. Il flag `--unsafe-report` scrive password in chiaro nei file di output; utilizzalo solo quando hai specificamente bisogno di password in chiaro nel report e conserva i file `_unsafe` risultanti di conseguenza.
Vedi [`sample_reports/`](https://github.com/netspi/ad-pathfinder/blob/main/sample_reports) per esempi di output di audit del dominio e delle password.
## Contributori
I controlli sono piccole classi che si registrano con un decorator, dichiarano i loro requisiti di dati e restituiscono dizionari di risultati. I controlli di piattaforma dichiarano la loro origine dati, quindi gli audit AD normali saltano i controlli MSSQL o SCCM quando i dati OpenGraph corrispondenti non sono presenti.
Vedi [Aggiungere nuovi controlli](https://github.com/NetSPI/AD-PathFinder/wiki/Adding-New-Checks), [Lavorare con i plugin OpenGraph](https://github.com/netspi/ad-pathfinder/blob/main/docs/OPENGRAPH.md) e la [Guida al framework](https://github.com/NetSPI/AD-PathFinder/wiki/Framework-Guide) sul wiki.
### Test
Esegui `pip install -e ".[test]"` poi `pytest tests/ -m "not neo4j and not integration"` per eseguire i test rapidi del framework senza Neo4j. Vedi [`tests/README.md`](https://github.com/netspi/ad-pathfinder/blob/main/tests/README.md) per la suite di fixture Neo4j e il flusso di lavoro completo dei test locali.
## Riconoscimenti
ADPathFinder si basa sui dati raccolti da altri progetti; grazie ai loro autori e al team di SpecterOps:
- [BloodHound CE](https://github.com/SpecterOps/BloodHound) — i dati del grafo di Active Directory.
- [MSSQLHound](https://github.com/SpecterOps/MSSQLHound) di Chris Thompson — raccolta MSSQL.
- [ConfigManBearPig](https://github.com/SpecterOps/ConfigManBearPig) di Chris Thompson — raccolta SCCM.