
Mappatura del percorso di attacco per Active Directory, ADCS, SCCM e MSSQL utilizzando BloodHound CE + OpenGraph data.
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
Vai a: Avvio rapido · Copertura · Come funziona · Report · Configurazione · Contributori
| 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 |
neo4j://localhost:7687.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
Questo salva le impostazioni API di BloodHound CE utilizzate per le operazioni di importazione ed eliminazione.
adpathfinder --import SharpHound.zip
È possibile importare più file zip di SharpHound e plugin OpenGraph con un unico comando:
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
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.
adpathfinder --ad
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Utilizza --unsafe-report solo quando i report devono includere password in chiaro.
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
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:
adpathfinder --setup-bloodhound-api
Vedi Configurazione sul wiki per tutte le opzioni, impostazioni di connessione Neo4j, permessi dei file e configurazioni di esempio. Vedi Relazioni escluse per filtrare l'output dei percorsi di attacco.
I report vengono scritti in report_<dominio>/, ad esempio report_training.local/.
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/ per esempi di output di audit del dominio e delle password.
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, Lavorare con i plugin OpenGraph e la Guida al framework sul wiki.
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 per la suite di fixture Neo4j e il flusso di lavoro completo dei test locali.
ADPathFinder si basa sui dati raccolti da altri progetti; grazie ai loro autori e al team di SpecterOps:
| 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 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 |
| 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 |