
Erstellen von Angriffspfaden über Management- und Datenebenen hinweg

Cirro ist eine erweiterbare Sicherheitsforschungsplattform, die es Forschern und Penetrationstestern ermöglicht, Cloud-Umgebungen und Identitätsbeziehungen über Graphdatenbanken zu sammeln, zu analysieren und zu visualisieren. Mit einer modularen Architektur aufgebaut, kann Cirro erweitert werden, um mehrere Plattformen und Datenquellen zu unterstützen.
Weitere Informationen finden Sie in der Dokumentation.
Cirro hat zwei Hauptfunktionsbereiche:
cirro collect): Sammelt Informationen von verschiedenen Plattformen und APIscirro graph): Verwaltet Graphdatenbankoperationen einschließlich Datenaufnahme und -exportDie modulare Architektur verwendet Feature-Flags, um plattformspezifische Funktionalität zu aktivieren, sodass Benutzer nur die benötigten Komponenten erstellen können.
Cirro verwendet eine hierarchische Befehlsstruktur, die nach Funktion und Plattform organisiert ist:
cirro <function> <platform> <command> [options]
Azure (collect az)
# Available authentication methods:
cirro collect az azcli # Azure CLI authentication
cirro collect az client-secret # Client ID and secret
cirro collect az client-cert # Client certificate
cirro collect az access-token # Pre-obtained access token
cirro collect az user-pass # Username and password
Tailscale (collect ts)
# Tailscale data collection
cirro collect ts <auth-method> [options]
Datenaufnahme (graph ingest)
# Ingest collected data into graph database
cirro graph ingest --type <platform> --file <data-file> [database options]
Datenexport (graph export)
# Export graph data to various formats
cirro graph export --format <format> [options]
Laden Sie die neueste Version für Ihre Plattform von der Releases-Seite herunter. Die Releases werden mit allen aktivierten Funktionen erstellt.
git clone https://github.com/bishopfox/cirro.git
cd cirro
cargo build --release
HINWEIS: DAS ERSTELLEN MIT --RELEASE IST FÜR DIE GRAPH-FUNKTIONALITÄT WICHTIG, DA ES YAML-KONFIGURATIONSDATEIEN IN DIE BINÄRDATEI EINBETTET!
Die Binärdatei ist unter target/release/cirro verfügbar.
Standardmäßig enthält Cirro alle verfügbaren Funktionen. Um mit bestimmten Features zu erstellen:
# Build with only collection features
cargo build --release --no-default-features --features collector
# Build with only graph features
cargo build --release --no-default-features --features graph
# Build with specific platform support
cargo build --release --no-default-features --features "azure"
cargo build --release --no-default-features --features "tailscale"
Cirro verwendet Neo4j als Backend-Datenbank. Im Verzeichnis tools befinden sich Docker-Compose-Dateien, die bei der Arbeit mit containerisierten Datenbanken helfen.
Nach dem Sammeln der Daten nehmen Sie diese in Ihre Graphdatenbank auf:
# Ingest data for specific platforms
cirro graph ingest --type az --file cirro_output.db # Azure data
cirro graph ingest --type ts --file cirro_ts_socket.json # Tailscale data
# Specify custom database connection
cirro graph ingest --type az --file cirro_output.db \
--server bolt://localhost:7687 \
--user neo4j \
--password password
Vorschau auf das, was aufgenommen und nachbearbeitet würde, ohne Daten in die Graphdatenbank zu schreiben:
# Preview Azure ingestion and see which resource types have no implemented specs
cirro graph ingest --type az --file cirro_output.db --dry-run
# Preview Tailscale ingestion
cirro graph ingest --type ts --file cirro_ts_socket.json --dry-run
Im Dry-Run-Modus wird Cirro:
CirroDash finden Sie hier: https://github.com/bishopfox/cirrodash
Debug-Logging für detaillierte Informationen aktivieren:
# Collection debug mode
cirro collect az azcli --debug
# Ingestion debug mode
cirro graph ingest --type az --file cirro_output.db --debug
Hinweis: Cirro ist für autorisierte Sicherheitstests und Forschung konzipiert. Stellen Sie sicher, dass Sie über die entsprechenden Berechtigungen verfügen, bevor Sie es gegen eine Cloud- oder Netzwerkumgebung ausführen.