CloudFox te ayuda a obtener conciencia situacional en entornos de nube desconocidos. Es una herramienta de línea de comandos de código abierto creada para ayudar a testers de penetración y otros profesionales de seguridad ofensiva a encontrar rutas de ataque explotables en infraestructura en la nube.
CloudFox es modular (puedes ejecutar un comando a la vez), pero hay un comando aws all-checks que ejecutará los demás comandos de AWS por ti con valores predeterminados sensatos:
CloudFox fue diseñado para ser ejecutado por un principal con permisos limitados de solo lectura, pero su propósito es ayudarte a encontrar rutas de ataque que puedan ser explotadas en escenarios de compromiso simulados (también conocido como pruebas de penetración basadas en objetivos).
Enumeración Black Box
CloudFox puede usarse con credenciales "encontradas", de manera similar a como usarías weirdAAL o enumerate-iam. Las comprobaciones que fallan lo hacen en silencio, por lo que cualquier dato devuelto significa que tus credenciales "encontradas" tienen el acceso necesario para recuperarlo.
Documentación
Para la documentación completa, consulta nuestra wiki.
**Opción 5:** Probando una corrección de errores ```
git clone [email protected]:BishopFox/cloudfox.git
git checkout seth-dev
go build .
./cloudfox [rest of the command options]
Requisitos previos
AWS
CLI de AWS instalado
Compatible con perfiles de AWS, variables de entorno de AWS o recuperación de metadatos (en una instancia ec2)
Para ejecutar comandos en múltiples perfiles a la vez, puede especificar la ruta a un archivo con una lista de nombres de perfiles separados por una nueva línea usando el indicador -l o pasar todos los perfiles almacenados con el indicador -a.
Una entidad principal con una de las políticas recomendadas adjuntas (descritas a continuación)
Tiene una lista completa de cada permiso que cloudfox utiliza y nada más
arn:aws:iam::aws:policy/SecurityAudit
Cubre la mayoría de las comprobaciones de cloudfox pero faltan servicios o permisos más nuevos como apprunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices
Cubre la mayoría de las comprobaciones de cloudfox pero faltan servicios o permisos más nuevos como AppRunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices - y también falta iam:SimulatePrincipalPolicy.
arn:aws:iam::aws:policy/ReadOnlyAccess
Solo falta AppRunner, pero también concede cosas como "s3:Get*" que pueden ser demasiado permisivas.
arn:aws:iam::aws:policy/AdministratorAccess
Esto funcionará perfectamente con CloudFox, pero si se le otorgó este nivel de acceso como probador de penetración, eso probablemente debería ser un hallazgo en sí mismo :)
Azure
Permisos de Visor o similares aplicados.
GCP
Google Cloud SDK instalado y autenticado
Credenciales predeterminadas de la aplicación configuradas (gcloud auth application-default login)
Permisos recomendados en los niveles de jerarquía apropiados (ver más abajo)
Permisos de GCP: Mínimos vs Completo
Permisos Mínimos (Proyecto único):
Para la enumeración básica de un solo proyecto, el rol roles/viewer proporciona acceso de lectura a la mayoría de los recursos (incluye registro, monitoreo y visualización de cómputo/red).
Permisos Completo (A nivel de organización):
Para evaluaciones de seguridad exhaustivas en toda una organización:
Ámbito
Rol
Propósito
Organización
roles/resourcemanager.organizationViewer
Ver la estructura y metadatos de la organización
Organización
roles/iam.securityReviewer
Revisar las políticas de IAM en toda la organización
Organización
roles/cloudasset.viewer
Consultar el inventario de activos en la nube para todos los recursos
Organización
roles/cloudidentity.groupsViewer
Enumerar grupos de Google y membresías
Carpeta
roles/resourcemanager.folderViewer
Ver la jerarquía de carpetas y metadatos
Proyecto
roles/viewer
Acceso de lectura a la mayoría de los recursos del proyecto (incluye logging.viewer, monitoring.viewer, compute.viewer)
Proyecto de herramientas
roles/serviceusage.serviceUsageAdmin
(Opcional) Gestionar cuotas de API para operaciones de CloudFox
Nota: El rol básico roles/viewer incluye permisos de roles/logging.viewer, roles/monitoring.viewer y roles/compute.networkViewer, por lo que no es necesario otorgarlos por separado.
Requisitos de API de GCP
Las API deben estar habilitadas en cada proyecto que desee evaluar. Las API de GCP están limitadas al proyecto.
API
Nombre del servicio
Propósito
Cloud Identity API
cloudidentity.googleapis.com
Enumeración de grupos, análisis de roles heredados
Cloud Asset API
cloudasset.googleapis.com
Descubrimiento de recursos entre proyectos
Cloud Resource Manager API
cloudresourcemanager.googleapis.com
Mapeo de organización, enumeración de IAM
IAM API
iam.googleapis.com
Análisis de IAM, detección de escalada de privilegios
Ejecuta todos los demás comandos usando valores predeterminados razonables. Aún querrá revisar las opciones no predeterminadas de cada comando, pero este es un excelente lugar para comenzar.
Lista las claves de acceso activas de todos los usuarios. Útil para referenciar de forma cruzada una clave que encontró con la cuenta dentro del alcance a la que pertenece.
Lista las pilas de cloudformation en la cuenta. Genera un archivo de botín con detalles de la pila, parámetros de la pila y salida de la pila - busque secretos.
Lista el URI de la imagen más reciente enviada de todos los repositorios. Use el archivo de botín para descargar imágenes seleccionadas con docker/nerdctl para su inspección.
Muestra información sobre el inquilino, las suscripciones y los grupos de recursos disponibles para su sesión actual de Azure CLI. Esto es útil para tener conciencia de la situación sobre qué ID de inquilino y suscripción usar con los otros subcomandos.
Enumera información útil para instancias de Compute en todos los grupos de recursos y suscripciones disponibles
Comandos de GCP
Para obtener documentación detallada sobre cada comando de GCP, consulte la Wiki de comandos de GCP.| Proveedor | Nombre del Comando | Descripción
| - | - | - |
| GCP | whoami | Muestra el contexto de identidad para el usuario autenticado/cuenta de servicio de GCP |
| GCP | iam | Enumera los principales de IAM de GCP en organizaciones, carpetas y proyectos |
| GCP | permissions | Enumera TODOS los permisos para cada entidad IAM con explosión completa de herencia |
| GCP | serviceaccounts | Enumera las cuentas de servicio de GCP con análisis de seguridad |
| GCP | service-agents | Enumera los agentes de servicio administrados por Google |
| GCP | keys | Enumera todas las claves de GCP (claves de SA, claves HMAC, claves API) |
| GCP | resource-iam | Enumera las políticas IAM en recursos de GCP (buckets, conjuntos de datos, secretos, etc.) |
| GCP | domain-wide-delegation | Encuentra cuentas de servicio con Delegación de Todo el Dominio a Google Workspace |
| GCP | privesc | Identifica rutas de escalada de privilegios en proyectos de GCP |
| GCP | hidden-admins | Identifica principales que pueden modificar políticas IAM (administradores ocultos) |
| GCP | identity-federation | Enumera la Federación de Identidades de Carga de Trabajo (identidades externas) |
| GCP | instances | Enumera instancias de Compute Engine de GCP con configuración de seguridad |
| GCP | gke | Enumera clústeres de GKE con análisis de seguridad |
| GCP | cloudrun | Enumera servicios y trabajos de Cloud Run con análisis de seguridad |
| GCP | functions | Enumera Cloud Functions de GCP con análisis de seguridad |
| GCP | app-engine | Enumera aplicaciones de App Engine y configuraciones de seguridad |
| GCP | composer | Enumera entornos de Cloud Composer |
| GCP | dataproc | Enumera clústeres de Dataproc |
| GCP | dataflow | Enumera trabajos y pipelines de Dataflow |
| GCP | notebooks | Enumera notebooks de Vertex AI Workbench |
| GCP | workload-identity | Enumera la Identidad de Carga de Trabajo de GKE y la Federación de Identidades de Carga de Trabajo |
| GCP | inventory | Inventario rápido de recursos - funciona sin la API de Cloud Asset |
| GCP | storage | Enumera buckets de Cloud Storage de GCP con configuración de seguridad |
| GCP | storage-enum | Enumera buckets de GCS en busca de archivos sensibles (credenciales, secretos, configuraciones) |
| GCP | bigquery | Enumera conjuntos de datos y tablas de BigQuery de GCP con análisis de seguridad |
| GCP | cloudsql | Enumera instancias de Cloud SQL con análisis de seguridad |
| GCP | spanner | Enumera instancias y bases de datos de Cloud Spanner |
| GCP | bigtable | Enumera instancias y tablas de Cloud Bigtable |
| GCP | filestore | Enumera instancias de Filestore NFS |
| GCP | memorystore | Enumera instancias de Memorystore (Redis) |
| GCP | vpc-networks | Enumera redes VPC |
| GCP | firewall | Enumera redes VPC y reglas de firewall con análisis de seguridad |
| GCP | loadbalancers | Enumera equilibradores de carga |
| GCP | dns | Enumera zonas y registros de Cloud DNS con análisis de seguridad |
| GCP | endpoints | Enumera todos los puntos finales de red (externos e internos) con IPs, puertos y nombres de host |
| GCP | private-service-connect | Enumera puntos finales de Private Service Connect y adjuntos de servicio |
| GCP | network-topology | Visualiza la topología de la red VPC, relaciones de interconexión y límites de confianza |
| GCP | vpc-sc | Enumera Controles de Servicio VPC |
| GCP | access-levels | Enumera niveles de acceso de Access Context Manager |
| GCP | cloud-armor | Enumera políticas de seguridad de Cloud Armor y encuentra debilidades |
| GCP | iap | Enumera configuraciones de Identity-Aware Proxy |
| GCP | beyondcorp | Enumera configuraciones de BeyondCorp Enterprise |
| GCP | kms | Enumera anillos de claves y claves criptográficas de Cloud KMS con análisis de seguridad |
| GCP | secrets | Enumera secretos de Secret Manager de GCP con configuración de seguridad |
| GCP | cert-manager | Enumera certificados SSL/TLS y encuentra certificados que expiran o mal configurados |
| GCP | org-policies | Enumera políticas de organización e identifica debilidades de seguridad |
| GCP | artifact-registry | Enumera Artifact Registry y Container Registry de GCP con configuración de seguridad |
| GCP | cloudbuild | Enumera disparadores y compilaciones de Cloud Build |
| GCP | source-repos | Enumera repositorios de Cloud Source Repositories |
| GCP | scheduler | Enumera trabajos de Cloud Scheduler con análisis de seguridad |
| GCP | pubsub | Enumera temas y suscripciones de Pub/Sub con análisis de seguridad |
| GCP | logging | Enumera sumideros y métricas de Cloud Logging con análisis de seguridad |
| GCP | organizations | Enumera la jerarquía de organización de GCP |
| GCP | asset-inventory | Enumera Cloud Asset Inventory con análisis opcional de dependencias |
| GCP | backup-inventory | Enumera políticas de respaldo, recursos protegidos e identifica brechas de respaldo |
| GCP | lateral-movement | Mapea rutas de movimiento lateral, vectores de robo de credenciales y oportunidades de pivoteo |
| GCP | data-exfiltration | Identifica rutas de exfiltración de datos, vectores potenciales y falta de endurecimiento de seguridad |
| GCP | public-access | Encuentra recursos con acceso allUsers/allAuthenticatedUsers en 16 servicios de GCP |
| GCP | cross-project | Analiza enlaces IAM entre proyectos, sumideros de logging y exportaciones de Pub/Sub para movimiento lateral |
| GCP | foxmapper | Ejecuta FoxMapper (análisis IAM basado en grafos) para descubrimiento de rutas de escalada de privilegios |
| GCP | logging-enum | Escanea entradas de Cloud Logging en busca de datos sensibles (credenciales, tokens, PII) |
| GCP | bigquery-enum | Escanea conjuntos de datos, tablas y columnas de BigQuery en busca de indicadores de datos sensibles |
| GCP | bigtable-enum | Escanea instancias, tablas y familias de columnas de Bigtable en busca de indicadores de datos sensibles |
| GCP | spanner-enum | Escanea esquemas de bases de datos de Spanner en busca de nombres de tablas y columnas sensibles |
¿Cómo se compara CloudFox con ScoutSuite, Prowler, Módulo de Cumplimiento AWS de Steampipe, AWS Security Hub, etc.?
CloudFox no genera alertas ni hallazgos, y no verifica su entorno para determinar el cumplimiento de una línea base o punto de referencia. En cambio, simplemente le permite ser más eficiente durante sus actividades de pruebas de penetración manuales. Le brinda la información que probablemente necesitará para validar si una ruta de ataque es posible o no.
¿Por qué veo errores en algunos comandos de CloudFox?
Servicios que no existen en todas las regiones - CloudFox intenta algunas formas de averiguar qué servicios son compatibles en cada región. Sin embargo, algunos servicios no admiten los métodos que CloudFox utiliza, por lo que CloudFox predetermina simplemente preguntar a cada región sobre el servicio. Las regiones que no admiten el servicio devolverán errores.
No tiene permiso - Otra razón por la que podría ver errores es si no tiene permisos para realizar las llamadas que CloudFox está haciendo. Ya sea porque la política no lo permite (por ejemplo, SecurityAudit no permite todos los permisos que CloudFox necesita). O podría ser un SCP que lo está bloqueando.
Siempre puede consultar el archivo ~/.cloudfox/cloudfox-error.log para obtener más información sobre los errores.
Steampipe - Usamos steampipe para prototipar muchos comandos de cloudfox. Mientras que CloudFox está enfocado específicamente en ayudar a los probadores de penetración en la nube, steampipe es una forma fácil de consultar todos sus recursos en la nube.
Principal Mapper - Inspiración para, y un socio fuertemente recomendado para el comando iam-simulator
Cloudsplaining - Inspiración para el comando permissions
ScoutSuite - Excelente herramienta de evaluación comparativa de seguridad en la nube. Proporcionó inspiración para la funcionalidad --userdata en el comando instances, el comando permissions y muchos otros.
Prowler - Otra excelente herramienta de evaluación comparativa de seguridad en la nube.
Pacu - Excelente herramienta de pruebas de penetración en la nube. PACU tiene bastantes comandos de enumeración similares a CloudFox, y muchos otros comandos que automatizan tareas de explotación (algo que CloudFox evita por diseño)
CloudMapper - Inspiración para el comando inventory y en general para CloudFox en su conjunto
Lista todas las tareas de ecs. Esto devuelve una lista de tareas ecs y el clúster, la definición de tarea, la instancia de contenedor, el tipo de lanzamiento y la entidad principal de IAM asociados.
Lista todos los clústeres EKS, verifica si exponen su punto final públicamente y revisa los roles de IAM asociados adjuntos para llegar al clúster o grupo de nodos. Genera un archivo de botín con el comando aws eks udpate-kubeconfig necesario para conectarse a cada clúster.
Lista toda la información de las eni. Esto devuelve una lista de ID de eni, tipo, IP externa, IP privada, ID de VPC, instancia adjunta y una descripción.
Enumera puntos finales de varios servicios. Escanee estos puntos finales tanto desde una posición interna como externa para buscar cosas que no requieran autenticación, estén mal configuradas, etc.
Obtiene las variables de entorno de servicios que las tienen (App Runner, ECS, Lambda, contenedores de Lightsail, Sagemaker son compatibles. Si encuentra un secreto sensible, use cloudfox iam-simulator Y pmapper para ver quién tiene acceso a ellos.
Enumera los sistemas de archivos EFS y FSx que podría montar sin credenciales (si tiene el acceso de red adecuado). Por ejemplo, esto es útil cuando tiene ec:RunInstance pero no iam:PassRole.
Similar a pmapper, pero utiliza el simulador de políticas de IAM. Utiliza la lógica de evaluación de AWS, pero notablemente no considera el acceso transitivo a través de escalada de privilegios, por lo que también debe usar siempre pmapper.
Enumera información útil para instancias EC2 en todas las regiones, como nombre, IPs públicas/privadas y perfiles de instancia. Genera archivos de botín que puede alimentar a nmap y otras herramientas para la enumeración de servicios.
Lista las funciones lambda en la cuenta, incluyendo cuáles tienen roles de administrador adjuntos. También le proporciona comandos útiles para descargar cada función.
Enumera los servicios de AWS que potencialmente exponen un servicio de red. Los grupos de seguridad y las ACL de red se analizan para cada recurso para determinar qué puertos están potencialmente expuestos.
Lista los roles que han sido asumidos por entidades principales en esta cuenta. Esta es una excelente manera de encontrar rutas de ataque salientes que conducen a otras cuentas.
Enumera los permisos de IAM asociados a todos los usuarios y roles. Busque en esta salida para determinar qué permisos tiene una entidad principal en particular en lugar de iniciar sesión en la consola de AWS y expandir minuciosamente cada política adjunta a la entidad principal que está investigando.
Busca datos de pmapper almacenados en el sistema de archivos local, en las ubicaciones definidas aquí. Si se han encontrado datos de pmapper (ya ejecutó pmapper graph create), entonces este comando utilizará estos datos para construir un gráfico en la memoria de cloudfox y le permitirá saber quién puede escalar privilegios a administrador.
Lista todos los recursos en esta cuenta que se comparten con otras cuentas, o recursos de otras cuentas que se comparten con esta cuenta. Útil para rutas de ataque entre cuentas.
Revisa múltiples servicios que soportan políticas de recursos y le ayuda a encontrar cualquier confianza de recursos excesivamente permisiva. KMS es compatible pero está deshabilitado por defecto. Para incluir políticas de recursos de KMS en la salida, agregue este indicador al comando: cloudfox aws resource-trusts --include-kms.
Enumera las políticas de confianza de roles de IAM para que pueda buscar confianzas de roles excesivamente permisivas o encontrar roles que confíen en un servicio específico.
Lista secretos de SecretsManager y SSM. Busque secretos interesantes en la lista y luego vea quién tiene acceso a ellos usando cloudfox iam-simulator y/o pmapper.
Este comando enumera todos los temas de sns y le proporciona los comandos para suscribirse a un tema o enviar mensajes a un tema (si tiene los permisos necesarios). Este comando solo trata con temas, no con la funcionalidad de SMS. Este comando también intenta resumir las políticas de recursos de los temas si existen.
Este comando enumera todas las colas de sqs y le proporciona los comandos para recibir mensajes de una cola y enviar mensajes a una cola (si tiene los permisos necesarios). Este comando también intenta resumir las políticas de recursos de las colas si existen.
Lista todos los recursos con etiquetas y todas las etiquetas. Esto se puede usar de manera similar al inventario como otro método para identificar qué tipos de recursos existen en una cuenta.
Lista todas las cargas de trabajo de cómputo y qué rol tienen. Indica si alguno de los roles es de administrador (malo) y si tiene datos de pmapper localmente, le indicará si alguno de los roles puede escalar privilegios a administrador (también malo)