O CloudFox ajuda você a obter consciência situacional em ambientes de nuvem desconhecidos. É uma ferramenta de linha de comando de código aberto criada para ajudar testadores de penetração e outros profissionais de segurança ofensiva a encontrar caminhos de ataque exploráveis na infraestrutura de nuvem.
O CloudFox é modular (você pode executar um comando por vez), mas existe um comando aws all-checks que executará os outros comandos aws para você com padrões sensatos:
cloudfox aws --profile [profile-name] all-checks
Enumeração em Caixa Branca
O CloudFox foi projetado para ser executado por um principal com permissões limitadas de somente leitura, mas seu propósito é ajudar você a encontrar caminhos de ataque que podem ser explorados em cenários de comprometimento simulados (também conhecido como teste de penetração baseado em objetivos).
Enumeração em Caixa Preta
O CloudFox pode ser usado com credenciais "encontradas", semelhante a como você usaria weirdAAL ou enumerate-iam. As verificações que falham, falham silenciosamente, portanto, qualquer dado retornado significa que suas credenciais "encontradas" têm o acesso necessário para recuperá-lo.
Documentação
Para a documentação completa, consulte nosso wiki.
**Opção 5:** Testando uma correção de bug ```
git clone [email protected]:BishopFox/cloudfox.git
git checkout seth-dev
go build .
./cloudfox [rest of the command options]
Pré-requisitos
AWS
AWS CLI instalado
Suporta perfis AWS, variáveis de ambiente AWS ou recuperação de metadados (em uma instância ec2)
Para executar comandos em múltiplos perfis de uma vez, você pode especificar o caminho para um arquivo com uma lista de nomes de perfis separados por uma nova linha usando a flag -l ou passar todos os perfis armazenados com a flag -a.
Um principal com uma das políticas recomendadas anexadas (descritas abaixo)
Tem uma lista completa de todas as permissões que o cloudfox usa e nada mais
arn:aws:iam::aws:policy/SecurityAudit
Cobre a maioria das verificações do cloudfox, mas está faltando serviços ou permissões mais recentes como apprunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices
Cobre a maioria das verificações do cloudfox, mas está faltando serviços ou permissões mais recentes como AppRunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices - e também está faltando iam:SimulatePrincipalPolicy.
arn:aws:iam::aws:policy/ReadOnlyAccess
Apenas falta AppRunner, mas também concede coisas como "s3:Get*" que pode ser excessivamente permissivo.
arn:aws:iam::aws:policy/AdministratorAccess
Isso funcionará perfeitamente com o CloudFox, mas se você recebeu esse nível de acesso como testador de penetração, isso provavelmente deveria ser um achado em si :)
Azure
Permissões de Viewer ou similares aplicadas.
GCP
Google Cloud SDK instalado e autenticado
Credenciais Padrão do Aplicativo configuradas (gcloud auth application-default login)
Permissões recomendadas em níveis de hierarquia apropriados (veja abaixo)
Permissões GCP: Mínimas vs Abrangentes
Permissões Mínimas (Projeto Único):
Para enumeração básica de um único projeto, a função roles/viewer fornece acesso de leitura à maioria dos recursos (inclui logging, monitoring e visualização de compute/rede).
Permissões Abrangentes (Organização Inteira):
Para avaliações de segurança completas em toda uma organização:
Escopo
Função
Propósito
Organização
roles/resourcemanager.organizationViewer
Visualizar estrutura e metadados da organização
Organização
roles/iam.securityReviewer
Revisar políticas IAM em toda a organização
Organização
roles/cloudasset.viewer
Consultar o Inventário de Ativos da Nuvem para todos os recursos
Organização
roles/cloudidentity.groupsViewer
Enumerar Grupos do Google e associações
Pasta
roles/resourcemanager.folderViewer
Visualizar hierarquia e metadados da pasta
Projeto
roles/viewer
Acesso de leitura à maioria dos recursos do projeto (inclui logging.viewer, monitoring.viewer, compute.viewer)
Projeto de Ferramentas
roles/serviceusage.serviceUsageAdmin
(Opcional) Gerenciar cotas de API para operações do CloudFox
Nota: A função básica roles/viewer inclui permissões de roles/logging.viewer, roles/monitoring.viewer e roles/compute.networkViewer, portanto não precisam ser concedidas separadamente.
Requisitos de API GCP
As APIs devem estar ativadas em cada projeto que você deseja avaliar. As APIs do GCP são específicas do projeto.
API
Nome do Serviço
Propósito
Cloud Identity API
cloudidentity.googleapis.com
Enumeração de grupos, análise de funções herdadas
Cloud Asset API
cloudasset.googleapis.com
Descoberta de recursos entre projetos
Cloud Resource Manager API
cloudresourcemanager.googleapis.com
Mapeamento da organização, enumeração IAM
IAM API
iam.googleapis.com
Análise IAM, detecção de escalonamento de privilégios
Executa todos os outros comandos usando padrões razoáveis. Você ainda vai querer conferir as opções não padrão de cada comando, mas este é um ótimo lugar para começar.
Lista chaves de acesso ativas para todos os usuários. Útil para referência cruzada de uma chave que você encontrou com a conta no escopo a que pertence.
Lista as stacks do CloudFormation na conta. Gera arquivo de espólio com detalhes da stack, parâmetros da stack e saída da stack - procure por segredos.
Lista o URI da imagem mais recentemente enviada de todos os repositórios. Use o arquivo de espólio para baixar imagens selecionadas com docker/nerdctl para inspeção.
Lista todas as tarefas ECS. Isso retorna uma lista de tarefas ECS e cluster associado, definição de tarefa, instância de contêiner, tipo de lançamento e principal IAM associado.
Exibe informações sobre o tenant, assinaturas e grupos de recursos disponíveis para sua sessão atual da Azure CLI. Isso é útil para fornecer consciência situacional sobre quais IDs de tenant e assinatura usar com os outros subcomandos.
Enumera informações úteis para instâncias de Computação em todos os grupos de recursos e assinaturas disponíveis
Comandos GCP
Para documentação detalhada sobre cada comando GCP, consulte a Wiki de Comandos GCP.| Provedor | Nome do Comando | Descrição
| - | - | - |
| GCP | whoami | Exibir contexto de identidade para o usuário/conta de serviço GCP autenticado |
| GCP | iam | Enumerar entidades IAM do GCP em organizações, pastas e projetos |
| GCP | permissions | Enumerar TODAS as permissões para cada entidade IAM com explosão completa de herança |
| GCP | serviceaccounts | Enumerar contas de serviço do GCP com análise de segurança |
| GCP | service-agents | Enumerar agentes de serviço gerenciados pelo Google |
| GCP | keys | Enumerar todas as chaves GCP (chaves de SA, chaves HMAC, chaves de API) |
| GCP | resource-iam | Enumerar políticas IAM em recursos GCP (buckets, conjuntos de dados, segredos, etc.) |
| GCP | domain-wide-delegation | Encontrar contas de serviço com Delegação em Todo o Domínio para Google Workspace |
| GCP | privesc | Identificar caminhos de escalonamento de privilégios em projetos GCP |
| GCP | hidden-admins | Identificar entidades que podem modificar políticas IAM (administradores ocultos) |
| GCP | identity-federation | Enumerar Federação de Identidade de Carga de Trabalho (identidades externas) |
| GCP | instances | Enumerar instâncias do Compute Engine GCP com configuração de segurança |
| GCP | gke | Enumerar clusters GKE com análise de segurança |
| GCP | cloudrun | Enumerar serviços e jobs do Cloud Run com análise de segurança |
| GCP | functions | Enumerar Cloud Functions do GCP com análise de segurança |
| GCP | app-engine | Enumerar aplicativos App Engine e configurações de segurança |
| GCP | composer | Enumerar ambientes Cloud Composer |
| GCP | dataproc | Enumerar clusters Dataproc |
| GCP | dataflow | Enumerar jobs e pipelines do Dataflow |
| GCP | notebooks | Enumerar notebooks do Vertex AI Workbench |
| GCP | workload-identity | Enumerar Workload Identity do GKE e Federação de Identidade de Carga de Trabalho |
| GCP | inventory | Inventário rápido de recursos - funciona sem a API Cloud Asset |
| GCP | storage | Enumerar buckets do Cloud Storage GCP com configuração de segurança |
| GCP | storage-enum | Enumerar buckets GCS em busca de arquivos sensíveis (credenciais, segredos, configurações) |
| GCP | bigquery | Enumerar conjuntos de dados e tabelas do BigQuery GCP com análise de segurança |
| GCP | cloudsql | Enumerar instâncias do Cloud SQL com análise de segurança |
| GCP | spanner | Enumerar instâncias e bancos de dados do Cloud Spanner |
| GCP | bigtable | Enumerar instâncias e tabelas do Cloud Bigtable |
| GCP | filestore | Enumerar instâncias NFS do Filestore |
| GCP | memorystore | Enumerar instâncias do Memorystore (Redis) |
| GCP | vpc-networks | Enumerar Redes VPC |
| GCP | firewall | Enumerar redes VPC e regras de firewall com análise de segurança |
| GCP | loadbalancers | Enumerar Balanceadores de Carga |
| GCP | dns | Enumerar zonas e registros do Cloud DNS com análise de segurança |
| GCP | endpoints | Enumerar todos os endpoints de rede (externos e internos) com IPs, portas e nomes de host |
| GCP | private-service-connect | Enumerar endpoints Private Service Connect e anexos de serviço |
| GCP | network-topology | Visualizar topologia de rede VPC, relações de peering e limites de confiança |
| GCP | vpc-sc | Enumerar Controles de Serviço VPC |
| GCP | access-levels | Enumerar níveis de acesso do Access Context Manager |
| GCP | cloud-armor | Enumerar políticas de segurança do Cloud Armor e encontrar fragilidades |
| GCP | iap | Enumerar configurações do Identity-Aware Proxy |
| GCP | beyondcorp | Enumerar configurações do BeyondCorp Enterprise |
| GCP | kms | Enumerar anéis de chave e chaves criptográficas do Cloud KMS com análise de segurança |
| GCP | secrets | Enumerar segredos do GCP Secret Manager com configuração de segurança |
| GCP | cert-manager | Enumerar certificados SSL/TLS e encontrar certificados expirando ou mal configurados |
| GCP | org-policies | Enumerar políticas de organização e identificar fragilidades de segurança |
| GCP | artifact-registry | Enumerar GCP Artifact Registry e Container Registry com configuração de segurança |
| GCP | cloudbuild | Enumerar triggers e builds do Cloud Build |
| GCP | source-repos | Enumerar Repositórios de Código Fonte do Cloud |
| GCP | scheduler | Enumerar jobs do Cloud Scheduler com análise de segurança |
| GCP | pubsub | Enumerar tópicos e assinaturas do Pub/Sub com análise de segurança |
| GCP | logging | Enumerar sumidouros e métricas do Cloud Logging com análise de segurança |
| GCP | organizations | Enumerar hierarquia de organização do GCP |
| GCP | asset-inventory | Enumerar Cloud Asset Inventory com análise de dependência opcional |
| GCP | backup-inventory | Enumerar políticas de backup, recursos protegidos e identificar lacunas de backup |
| GCP | lateral-movement | Mapear caminhos de movimento lateral, vetores de roubo de credenciais e oportunidades de pivô |
| GCP | data-exfiltration | Identificar caminhos de exfiltração de dados, vetores potenciais e falta de hardening de segurança |
| GCP | public-access | Encontrar recursos com acesso allUsers/allAuthenticatedUsers em 16 serviços GCP |
| GCP | cross-project | Analisar vínculos IAM entre projetos, sumidouros de logging e exportações Pub/Sub para movimento lateral |
| GCP | foxmapper | Executar FoxMapper (análise IAM baseada em grafo) para descoberta de caminhos de escalonamento de privilégios |
| GCP | logging-enum | Escanear entradas do Cloud Logging em busca de dados sensíveis (credenciais, tokens, PII) |
| GCP | bigquery-enum | Escanear conjuntos de dados, tabelas e colunas do BigQuery em busca de indicadores de dados sensíveis |
| GCP | bigtable-enum | Escanear instâncias, tabelas e famílias de colunas do Bigtable em busca de indicadores de dados sensíveis |
| GCP | spanner-enum | Escanear esquemas de banco de dados do Spanner em busca de nomes de tabelas e colunas sensíveis |
Como o CloudFox se compara com ScoutSuite, Prowler, Módulo de Conformidade AWS do Steampipe, AWS Security Hub, etc.?
O CloudFox não cria alertas ou descobertas, e não verifica seu ambiente quanto à conformidade com uma linha de base ou benchmark. Em vez disso, ele simplesmente permite que você seja mais eficiente durante suas atividades manuais de teste de penetração. Ele fornece as informações que você provavelmente precisará para validar se um caminho de ataque é possível ou não.
Por que vejo erros em alguns comandos do CloudFox?
Serviços que não existem em todas as regiões - O CloudFox tenta algumas maneiras de descobrir quais serviços são suportados em cada região. No entanto, alguns serviços não suportam os métodos que o CloudFox usa, então o CloudFox padroniza perguntar a cada região sobre o serviço. Regiões que não suportam o serviço retornarão erros.
Você não tem permissão - Outra razão pela qual você pode ver erros é se você não tiver permissões para fazer chamadas que o CloudFox está fazendo. Seja porque a política não permite (por exemplo, SecurityAudit não permite todas as permissões que o CloudFox precisa). Ou, pode ser um SCP que está bloqueando você.
Você sempre pode olhar no arquivo ~/.cloudfox/cloudfox-error.log para obter mais informações sobre erros.
Trabalhos anteriores e outros projetos relacionados
Steampipe - Usamos o steampipe para prototipar muitos comandos do cloudfox. Enquanto o CloudFox é focado em ajudar testadores de penetração em nuvem, o steampipe é uma maneira fácil de consultar qualquer um e todos os seus recursos em nuvem.
Principal Mapper - Inspiração e um parceiro fortemente recomendado para o comando iam-simulator
ScoutSuite - Excelente ferramenta de benchmark de segurança em nuvem. Forneceu inspiração para a funcionalidade --userdata no comando instances, o comando permissions e muitos outros.
Prowler - Outra excelente ferramenta de benchmark de segurança em nuvem.
Pacu - Excelente ferramenta de teste de penetração em nuvem. O PACU tem vários comandos de enumeração semelhantes ao CloudFox e muitos outros comandos que automatizam tarefas de exploração (algo que o CloudFox evita por design).
CloudMapper - Inspiração para o comando inventory e, de forma geral, para o próprio CloudFox.
Lista todos os clusters EKS, verifica se eles expõem seu endpoint publicamente e verifica as funções IAM associadas anexadas para alcançar o cluster ou grupo de nós. Gera um arquivo de espólio com o comando aws eks udpate-kubeconfig necessário para se conectar a cada cluster.
Enumera endpoints de vários serviços. Escaneie esses endpoints de uma posição interna e externa para procurar coisas que não exigem autenticação, estão mal configuradas, etc.
Obtém as variáveis de ambiente de serviços que as possuem (App Runner, ECS, Lambda, contêineres Lightsail, Sagemaker são suportados). Se você encontrar um segredo sensível, use cloudfox iam-simulator E pmapper para ver quem tem acesso a eles.
Enumera os sistemas de arquivos EFS e FSx que você pode montar sem credenciais (se você tiver o acesso de rede correto). Por exemplo, isso é útil quando você tem ec:RunInstance mas não iam:PassRole.
Como o pmapper, mas usa o simulador de política IAM. Ele usa a lógica de avaliação da AWS, mas notavelmente, não considera acesso transitivo via privesc, razão pela qual você também deve sempre usar pmapper.
Enumera informações úteis para instâncias EC2 em todas as regiões, como nome, IPs públicos/privados e perfis de instância. Gera arquivos de espólio que você pode alimentar para nmap e outras ferramentas para enumeração de serviços.
Enumera serviços AWS que estão potencialmente expondo um serviço de rede. Os grupos de segurança e as ACLs de rede são analisados para cada recurso para determinar quais portas estão potencialmente expostas.
Lista as funções que foram assumidas por principais nesta conta. Esta é uma excelente maneira de encontrar caminhos de ataque de saída que levam a outras contas.
Enumera permissões IAM associadas a todos os usuários e funções. Use grep nesta saída para descobrir quais permissões um determinado principal possui, em vez de fazer login no console AWS e expandir meticulosamente cada política anexada ao principal que você está investigando.
Procura por dados do pmapper armazenados no sistema de arquivos local, nos locais definidos aqui. Se os dados do pmapper foram encontrados (você já executou pmapper graph create), então este comando usará esses dados para construir um gráfico na memória do cloudfox e informar quem pode fazer privesc para admin.
Lista todos os recursos nesta conta que são compartilhados com outras contas, ou recursos de outras contas que são compartilhados com esta conta. Útil para caminhos de ataque entre contas.
Examina vários serviços que suportam políticas de recursos e ajuda você a encontrar quaisquer confianças de recursos excessivamente permissivas. O KMS é suportado, mas desabilitado por padrão. Para incluir políticas de recursos KMS na saída, adicione esta flag ao comando: cloudfox aws resource-trusts --include-kms.
Enumera políticas de confiança de funções IAM para que você possa procurar por confianças de funções excessivamente permissivas ou encontrar funções que confiam em um serviço específico.
Lista segredos do SecretsManager e SSM. Procure por segredos interessantes na lista e veja quem tem acesso a eles usando cloudfox iam-simulator e/ou pmapper.
Este comando enumera todos os tópicos SNS e fornece os comandos para se inscrever em um tópico ou enviar mensagens para um tópico (se você tiver as permissões necessárias). Este comando lida apenas com tópicos, e não com a funcionalidade SMS. Este comando também tenta resumir políticas de recursos de tópicos, se existirem.
Este comando enumera todas as filas SQS e fornece os comandos para receber mensagens de uma fila e enviar mensagens para uma fila (se você tiver as permissões necessárias). Este comando também tenta resumir políticas de recursos de filas, se existirem.
Lista todos os recursos com tags e todas as tags. Isso pode ser usado de forma semelhante ao inventory como outro método para identificar quais tipos de recursos existem em uma conta.
Lista todas as cargas de trabalho de computação e qual função elas têm. Informa se alguma das funções é admin (ruim) e se você tiver dados do pmapper localmente, informará se alguma das funções pode fazer privesc para admin (também ruim)