gcpwn foi uma ferramenta criada por mim enquanto tentava aprender o GCP e aproveita as bibliotecas de cliente GRPC mais recentes. Ele consiste em vários módulos de enumeração que escrevi, além de módulos de exploração que aproveitam pesquisas feitas por outros no espaço (ex. Rhino Security), juntamente com algumas ferramentas autônomas conhecidas existentes, como GCPBucketBrute, em um esforço para tornar a ferramenta um balcão único para testes de GCP . Embora outros scripts de exploração geralmente sejam de uso único, o GCPwn armazena dados e permissões enquanto você executa módulos que organizam os dados para você e os reutilizam para tornar sua vida mais fácil em termos de pentesting/rastreamento de permissões.
Autor: Scott Weston (@webbinroot), NetSPI
Dependências necessárias: Consulte o arquivo Requirements.txt + Guia de instalação do Wiki
Nota de Dependências: Testado principalmente em Kali Linux; Instalação do Docker disponível via Dockerfile
Esta ferramenta é principalmente para pentesters, aqueles que estão apenas aprendendo a segurança do GCP e pesquisadores de segurança em geral.
Para pentesters, conforme ilustrado acima, a ferramenta automatiza muitos scripts que você normalmente executaria e armazena dados para tornar a execução dos módulos de exploração trivial.
Para aqueles que estão aprendendo a segurança do GCP, a ferramenta é configurada de forma que seja fácil adicionar seu próprio módulo por meio de uma solicitação Pull conforme você mergulha no serviço individual.
Para pesquisadores de segurança, a ferramenta permite executar um grande número de chamadas de API do GCP e documento como fazer proxy da ferramenta em segundo plano por meio de uma ferramenta local como o Burp Suite. Portanto, executar enum_all
com burp suite registrando todas as solicitações lhe dará visibilidade de todos os diferentes endpoints da API em todas as diferentes bibliotecas python com um comando. Essa é a esperança, pelo menos, consegui trabalhar parcialmente com variáveis env, se alguém conseguir terminar de decifrar o código :)
Revise o wiki em https://github.com/NetSPI/gcpwn/wiki para:
Instruções de instalação e configuração de pasta : como configurar a ferramenta para uso pela primeira vez e pastas padrão usadas
Gerenciamento de autenticação e informações de token : carregue credenciais de usuário e/ou serviço para obter configuração de credenciais
Gerenciando projetos e recuperando dados de recursos : como gerenciar IDs de projetos e como recuperar dados enumerados de tabelas SQLite.
Guia de módulos : como chamar um módulo + aprofundamento em cada módulo
Criação de módulo : como adicionar seu próprio módulo por meio de solicitação pull (em andamento - data prevista 15/09/2024)
Research Head Scratchers : Tópicos de pesquisa/perguntas abertas (em andamento - data prevista 22/09/2024)
A ferramenta será padronizada automaticamente para "tabela" stdout. A ferramenta suporta tabela, txt e csv. Se você estiver tendo problemas com tabelas, pode alterar as configurações globais com o seguinte:
# See global configs global_configs # Set global configs for preferred output global_configs set std-output txt
Ou você pode passar --txt
, --table
e/ou --csv
com cada comando modules run
para alterar o stdoutput
modules run enum_buckets --txt
Os dados enumerados são armazenados em tabelas locais no GCPwn. Para ver a saída da tabela, execute
# See all tables data tables # See all table columns data tables--columns # Get all data back and export to CSV file data --columns column1,column2 --csv [OUTPUT_FILE]
Execute o módulo enum_all
seguido de creds info
para visualizar as permissões recentemente enumeradas. O módulo process_iam_bindings
fornecerá um resumo TXT/CSV das ligações de políticas, se elas puderem ser enumeradas, e analyze_vulns
tentará sinalizar funções/permissões incorretas. Veja os sinalizadores comuns abaixo.
Enumere tudo (escolha o que melhor se adapta)
# Quickest: Run all enumeration modules + testIAM Permissions modules run enum_all --iam # Longer: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org modules run enum_all --iam --all-permissions # Longer + Downloads: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org + download everyting modules run enum_all --iam --all-permissions --download
Pegue todas as ligações de política IAM de enum_all ou outros módulos acima e retorne um resumo/análise de vulnerabilidade
# Review Permissions User Has Thus Far creds info # Return Policy Summary from IAM Bindings if Applicable modules run process_iam_bindings [--txt] [--csv] # Analyze IAM Bindings + Other Items (like allUsers) if Applicable modules run analyze_vulns [--txt] [--csv]
fwd:cloudsec 2024: https://www.youtube.com/watch?v=opvv9h3Qe0s ("GCPwn: uma ferramenta de pentesting para GCP - Scott Weston")
Defcon 32 Cloud Village: https://www.youtube.com/watch?v=rxXyYo1n9cw
https://www.netspi.com/blog/technical-blog/cloud-pentesting/introduction-to-gcpwn-part-1/
Estarei observando problemas/puxões para qualquer coisa nova legal, dito isso, tenho um trabalho diurno, então me dê pelo menos 24 horas ou algo assim :)
Se for um problema pequeno, prefira uma guia Problema via Problemas para uma solução rápida.
Construído sobre ombros de gigantes, o crédito por alguns códigos e ideias/pesquisas foi inspirado em:
Segurança Rhino (https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/)
GCPBucketBrute (https://github.com/RhinoSecurityLabs/GCPBucketBrute)
MUITA documentação do Google (https://cloud.google.com/python/docs/reference)