Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Copperhound — Analisi dei percorsi di attacco in Rust per AD, ADCS ed Entra ID | Kitploit
Strumenti/GitHubGitHub/benthecyberone/copperhound
Strumenti DifensiviGestione IdentitàMappatura della ReteAnalisi delle VulnerabilitàRaccolta InformazioniPenetration TestingSicurezza CloudRed Teaming
GitHubbenthecyberone/copperhound

Copperhound

Analisi dei percorsi di attacco in Rust per AD, ADCS ed Entra ID

Vedi Repository
83 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Logo di CopperHound

CopperHound

Analisi open-source dei percorsi di attacco per Active Directory, ADCS ed Entra ID / Azure, sviluppata in Rust per ambienti molto grandi. CopperHound importa output di SharpHound, bloodhound-python, ldapdomaindump e AzureHound, dump LDIF grezzi e snapshot di Sysinternals AD Explorer in un archivio di grafi mappato in memoria ed esegue query di percorso, esposizione e CHQL direttamente su di esso, senza alcun database a grafi. Un singolo container serve l'interfaccia web e l'API REST.

Tutti i percorsi più brevi da un utente helpdesk a Tier Zero

Risultati classificati per impatto sull'esposizione Pianificatore di remediation Postura nel tempo

Le schermate utilizzano dati demo fittizi (scripts/demo_data.py).

Documentazione: Guida utente · Distribuzione · Sorgenti dati · API REST · CHQL · Riferimento degli archi · Prestazioni · Architettura

Avvio rapido (Docker)

docker compose up -d --build
docker compose logs copperhound | grep "Initial admin password"

Apri http://127.0.0.1:8090, accedi come admin, trascina i tuoi file SharpHound / AzureHound .zip o .json nella scheda Data e premi Rebuild graph. COPPERHOUND_ADMIN_PASSWORD imposta la password, mentre COPPERHOUND_PORT / COPPERHOUND_HOST modificano l'indirizzo pubblicato (predefinito 127.0.0.1:8090, così può essere eseguito accanto a BloodHound sulla 8080).

Non hai ancora dati? python scripts/demo_data.py demo/ genera un ambiente fittizio (AD, ADCS ed Entra ID con debolezze deliberate) da caricare; vedi Provalo con i dati demo.

Senza Docker: cd web && npm ci && npm run build, poi cargo run --release -- serve (predefiniti: 127.0.0.1:8080, dati in ./data, UI da ./web/dist).

Account, token API, la cartella monitorata, report pianificati, avvisi di modifica, HTTPS e single sign-on (OpenID Connect, SAML 2.0): docs/DEPLOYMENT.md.

Analisi del rischio

Calcolata in background dopo ogni ingestione:

  • Risultati dei percorsi di attacco — 30 tipi di risultato su AD, ADCS, Entra ID e ibrido (DCSync al di fuori del Tier Zero, controllo del Tier Zero, diritti di gruppi ampi, delega al Tier Zero, escalation ESC, permessi Graph per il takeover del tenant, account sincronizzati che detengono ruoli Entra Tier Zero, …), ciascuno con gravità, impatto, indicazioni di remediation e tecniche MITRE ATT&CK. Ogni risultato sugli edge è misurato: "correggere questo rimuove i percorsi di N principal verso il Tier Zero", calcolato rieseguendo l'analisi di esposizione senza i suoi edge.
  • Simulazione what-if — rimuovi qualsiasi insieme di edge, tipi di edge o nodi (o aggiungi target) e visualizza istantaneamente l'esposizione prima/dopo per tipo.
  • Pianificatore di remediation — un albero dei dominatori su ogni percorso di attacco trova l'oggetto collo di bottiglia la cui correzione taglia fuori il maggior numero di principal dalla zona completamente. Il piano viene ricalcolato dopo ogni passo, quindi la curva di riduzione cumulativa è esatta. I membri dei gruppi della zona sono trattati come parte della zona, quindi non propone mai "rimuovi gli admin da Domain Admins".
  • Passaggio di consegne della remediation — trasforma gli edge della lista di correzioni o i passi del piano in uno script PowerShell (un comando suggerito per edge, oggetti denominati per SID / object id) oppure in issue Jira, record ServiceNow o eventi webhook firmati con le indicazioni e il comando per ciascun edge.
  • Zone di privilegio — definisci i tuoi insiemi di target con un selettore CHQL ("server Tier 1", "file server Finance", …) e ottieni esposizione, punti di strozzatura e piani di remediation per ciascuna. Nella revisione dei membri di una zona certifichi i membri che ne fanno parte e revochi quelli che la regola ha selezionato per errore (escono dalla zona); le nuove corrispondenze appaiono come in sospeso.
  • Postura nel tempo — uno snapshot per ingestione (percentuale di esposizione, risultati per gravità, conteggi per singolo risultato) e un diff tra due snapshot qualsiasi che elenca esattamente quali elementi dei risultati sono comparsi o sono stati risolti.

Equivalenti CLI: copperhound findings corp.chg, copperhound plan corp.chg --steps 10.

Web UI

Una canvas grafica WebGL (sigma.js) con ricerca, pathfinding, dettagli dei nodi, "Come è stato derivato?" per ogni edge derivato, l'editor CHQL e la libreria di query, e pagine per risultati, remediation, zone, postura, report, dati e amministrazione. Procedura guidata con screenshot: docs/USER_GUIDE.md.

CHQL

Un dialetto Cypher di sola lettura compilato in operazioni native sul grafo — pattern multipli e clausole MATCH, OPTIONAL MATCH, WITH, aggregazione, ORDER BY/SKIP/LIMIT, UNION, salti non orientati e a lunghezza variabile, funzioni di percorso e predicati di pattern. La maggior parte delle query BloodHound CE e legacy funziona invariata; vedi il riferimento CHQL e la tabella di compatibilità con Cypher.

MATCH p = shortestPath((u:User {name:'[email protected]'})-[*1..]->(t {tier0:true})) RETURN p
MATCH p = allShortestPaths((g:Group)-[*1..]->(t {tier0:true})) WHERE g.name STARTS WITH 'DOMAIN USERS@' RETURN p
MATCH (u:User {hasspn:true, enabled:true}) WHERE u.pwdlastset < 1600000000 RETURN u.name, u.pwdlastset
MATCH (g:Group)-[:AdminTo]->(c:Computer) RETURN g.name, count(c)
MATCH (p)-[r:ADCSESC1|ADCSESC6a]->(d:Domain) RETURN p, r, d
MATCH (n {owned:true}), (m:Group) WHERE m.objectid ENDS WITH '-512' MATCH p = shortestPath((n)-[*1..]->(m)) RETURN p
MATCH (dc)-[:MemberOf*0..]->(g:Group) WHERE g.objectid ENDS WITH '-516' WITH collect(dc) AS dcs
  MATCH (c:Computer {unconstraineddelegation:true}) WHERE NOT c IN dcs RETURN c

Da riga di comando: copperhound query corp.chg "MATCH …". days_ago(n) fornisce timestamp relativi, ad esempio WHERE u.lastlogontimestamp < days_ago(90).

Scarica lo strumento