
Creando rutas de ataque a través de los planos de gestión y datos

Cirro es una plataforma extensible de investigación en seguridad que permite a investigadores y testers de penetración recolectar, analizar y visualizar entornos en la nube y relaciones de identidad a través de bases de datos de grafos. Construida con una arquitectura modular, Cirro puede extenderse para soportar múltiples plataformas y fuentes de datos.
Puedes consultar la Documentación para más información.
Cirro tiene dos áreas funcionales principales:
cirro collect): Recopila información de varias plataformas y APIscirro graph): Gestiona operaciones de bases de datos de grafos, incluyendo ingesta y exportación de datosLa arquitectura modular utiliza flags de características para habilitar funcionalidades específicas de la plataforma, permitiendo a los usuarios construir solo los componentes que necesitan.
Cirro utiliza una estructura de comandos jerárquica organizada por función y plataforma:
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]
Ingesta de datos (graph ingest)
# Ingest collected data into graph database
cirro graph ingest --type <platform> --file <data-file> [database options]
Exportación de datos (graph export)
# Export graph data to various formats
cirro graph export --format <format> [options]
Descarga la última versión para tu plataforma desde la página de lanzamientos. Los lanzamientos están compilados con todas las características habilitadas.
git clone https://github.com/bishopfox/cirro.git
cd cirro
cargo build --release
NOTA: COMPILAR CON --RELEASE ES IMPORTANTE PARA LA FUNCIONALIDAD DE GRAFOS YA QUE INCORPORA ARCHIVOS DE CONFIGURACIÓN YAML EN EL BINARIO!
El binario estará disponible en target/release/cirro.
Por defecto, Cirro incluye toda la funcionalidad disponible. Para compilar con características específicas:
# 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 utiliza Neo4j como base de datos backend. Hay archivos docker-compose en el directorio tools para ayudar con bases de datos en contenedores.
Después de recolectar datos, ingiérelos en tu base de datos de grafos:
# 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
Previsualiza lo que se ingeriría y post-procesaría sin escribir ningún dato en la base de datos de grafos:
# 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
En modo dry-run, Cirro:
CirroDash se puede encontrar aquí: https://github.com/bishopfox/cirrodash
Habilita el registro de depuración para información detallada:
# Collection debug mode
cirro collect az azcli --debug
# Ingestion debug mode
cirro graph ingest --type az --file cirro_output.db --debug
Nota: Cirro está diseñado para pruebas de seguridad autorizadas e investigación. Asegúrate de tener los permisos adecuados antes de ejecutarlo contra cualquier entorno en la nube o red.