Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Copperhound — Rust-Angriffspfadanalyse für AD, ADCS und Entra ID | Kitploit
Tools/GitHubGitHub/benthecyberone/copperhound
DefensivwerkzeugeIdentitätsmanagementNetzwerkkartierungSchwachstellenanalyseInformationsbeschaffungPenetrationstestsCloud-SicherheitRed Teaming
GitHubbenthecyberone/copperhound

Copperhound

Rust-Angriffspfadanalyse für AD, ADCS und Entra ID

Repository anzeigen
8vor 3 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CopperHound-Logo

CopperHound

Open-Source-Angriffspfadanalyse für Active Directory, ADCS und Entra ID / Azure, in Rust für sehr große Umgebungen entwickelt. CopperHound liest Ausgaben von SharpHound, bloodhound-python, ldapdomaindump und AzureHound, rohe LDIF-Dumps und Sysinternals AD Explorer-Snapshots in einen speicherabgebildeten Graph-Store ein und führt Pfad-, Expositions- und CHQL-Abfragen direkt darauf aus, ohne Graphdatenbank. Ein Container stellt die Web-UI und die REST-API bereit.

Alle kürzesten Pfade von einem Helpdesk-Benutzer zu Tier Zero

Befunde nach Expositionsauswirkung sortiert Behebungsplaner Sicherheitslage im Zeitverlauf

Die Screenshots verwenden fiktive Demodaten (scripts/demo_data.py).

Dokumentation: Benutzerhandbuch · Bereitstellung · Datenquellen · REST-API · CHQL · Edge-Referenz · Performance · Architektur

Schnellstart (Docker)

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

Öffne http://127.0.0.1:8090, melde dich als admin an, ziehe deine SharpHound- / AzureHound-.zip- oder .json-Dateien auf den Tab Data und drücke Rebuild graph. COPPERHOUND_ADMIN_PASSWORD legt das Passwort fest, und COPPERHOUND_PORT / COPPERHOUND_HOST ändern die veröffentlichte Adresse (Standard 127.0.0.1:8090, sodass es neben BloodHound auf 8080 laufen kann).

Noch keine Daten? python scripts/demo_data.py demo/ schreibt eine fiktive Umgebung (AD, ADCS und Entra ID mit absichtlichen Schwachstellen) zum Hochladen; siehe Mit Demo-Daten ausprobieren.

Ohne Docker: cd web && npm ci && npm run build, dann cargo run --release -- serve (Standardwerte: 127.0.0.1:8080, Daten in ./data, UI aus ./web/dist).

Konten, API-Tokens, der Überwachungsordner, geplante Berichte, Änderungsbenachrichtigungen, HTTPS und Single Sign-on (OpenID Connect, SAML 2.0): docs/DEPLOYMENT.md.

Risikoanalyse

Wird im Hintergrund nach jedem Ingest berechnet:

  • Angriffspfad-Befunde — 30 Befundtypen über AD, ADCS, Entra ID und hybrid (DCSync außerhalb von Tier Zero, Kontrolle über Tier Zero, Rechte breiter Gruppen, Delegation an Tier Zero, ESC-Eskalationen, Graph-Berechtigungen zur Tenant-Übernahme, synchronisierte Konten mit Entra-Tier-Zero-Rollen, …), jeweils mit Schweregrad, Auswirkung, Behebungsempfehlung und MITRE-ATT&CK-Techniken. Jeder Kantenbefund ist gemessen: „Behebung entfernt die Pfade von N Prinzipalen zu Tier Zero", berechnet durch erneutes Ausführen der Expositionsanalyse ohne seine Kanten.
  • What-if-Simulation — entferne beliebige Mengen von Kanten, Kantenarten oder Knoten (oder füge Ziele hinzu) und sieh sofort die Exposition vorher/nachher pro Art.
  • Behebungsplaner — ein Dominator-Baum über alle Angriffspfade findet das Engpass-Objekt, dessen Behebung die meisten Prinzipale vollständig von der Zone abschneidet. Der Plan wird nach jedem Schritt neu berechnet, sodass die kumulative Reduktionskurve exakt ist. Mitglieder von Zonengruppen werden als Teil der Zone behandelt, sodass er nie vorschlägt, „die Admins aus Domain Admins zu entfernen".
  • Behebungsübergabe — verwandle Fix-List-Kanten oder Planschritte in ein PowerShell-Skript (ein vorgeschlagener Befehl pro Kante, Objekte benannt nach SID / Objekt-ID) oder in Jira-Issues, ServiceNow-Datensätze oder signierte Webhook-Events mit der Empfehlung und dem Befehl für jede Kante.
  • Privilegienzonen — definiere deine eigenen Zielmengen mit einem CHQL-Selektor („Tier-1-Server", „Finance-Dateiserver", …) und erhalte Exposition, Engpässe und Behebungspläne für jede. In der Mitgliederüberprüfung einer Zone zertifizierst du die Mitglieder, die dazugehören, und widerrufst solche, die die Regel versehentlich erfasst hat (sie fallen aus der Zone heraus); neue Treffer werden als ausstehend angezeigt.
  • Posture im Zeitverlauf — ein Snapshot pro Ingest (Expositions-%, Befunde nach Schweregrad, Zählungen pro Befund) und ein Diff zwischen zwei beliebigen Snapshots, der genau auflistet, welche Befund-Elemente aufgetreten oder behoben wurden.

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

Web-UI

Eine WebGL-Graph-Canvas (sigma.js) mit Suche, Pfadfindung, Knotendetails, „Wie wurde das abgeleitet?" für jede abgeleitete Kante, dem CHQL-Editor und der Abfragebibliothek sowie Seiten für Befunde, Behebung, Zonen, Posture, Berichte, Daten und Administration. Durchlauf mit Screenshots: docs/USER_GUIDE.md.

CHQL

Ein schreibgeschützter Cypher-Dialekt, der zu nativen Graph-Operationen kompiliert wird — mehrere Patterns und MATCH-Klauseln, OPTIONAL MATCH, WITH, Aggregation, ORDER BY/SKIP/LIMIT, UNION, ungerichtete und variabel lange Hops, Pfad- Funktionen und Pattern-Prädikate. Die meisten BloodHound-CE- und Legacy-Abfragen laufen unverändert; siehe die CHQL-Referenz und Cypher-Kompatibilitätstabelle.

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

Auf der Kommandozeile: copperhound query corp.chg "MATCH …". days_ago(n) liefert relative Zeitstempel, z. B. WHERE u.lastlogontimestamp < days_ago(90).

Tool herunterladen