GCP Pentesting
Informações Básicas
Antes de começar a fazer pentesting em um ambiente GCP, há algumas coisas básicas que você precisa saber sobre como ele funciona para ajudá-lo a entender o que precisa fazer, como encontrar configurações incorretas e como explorá-las.
Conceitos como hierarquia de organização, permissões e outros conceitos básicos são explicados em:
pageGCP - Basic InformationLaboratórios para aprender
Metodologia de Teste de Penetração no GCP/Red Team
Para auditar um ambiente GCP, é muito importante saber: quais serviços estão sendo usados, o que está sendo exposto, quem tem acesso a quê e como os serviços internos do GCP estão conectados a serviços externos.
Do ponto de vista de um Red Team, o primeiro passo para comprometer um ambiente GCP é conseguir obter algumas credenciais. Aqui estão algumas ideias de como fazer isso:
Vazamentos no github (ou similar) - OSINT
Engenharia Social (Confira a página Workspace Security)
Reutilização de senha (vazamentos de senha)
Vulnerabilidades em Aplicações Hospedadas no GCP
Server Side Request Forgery com acesso ao endpoint de metadados
Leitura de Arquivo Local
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3ºs comprometidos
Funcionário Interno
Ou comprometendo um serviço não autenticado exposto:
pageGCP - Unauthenticated Enum & AccessOu se você estiver fazendo uma revisão, você poderia simplesmente solicitar credenciais com essas funções:
pageGCP - Permissions for a PentestDepois de conseguir obter credenciais, você precisa saber a quem essas credenciais pertencem e o que elas têm acesso, então você precisa realizar alguma enumeração básica:
Enumeração Básica
SSRF
Para mais informações sobre como enumerar metadados do GCP, confira a página hacktricks a seguir:
Whoami
No GCP, você pode tentar várias opções para tentar adivinhar quem você é:
Enumeração da Organização
Enumeração de Princípios e IAM
Se você tiver permissões suficientes, verificar os privilégios de cada entidade dentro da conta GCP ajudará a entender o que você e outras identidades podem fazer e como escalar privilégios.
Se você não tiver permissões suficientes para enumerar o IAM, você pode forçar a enumeração para descobrir. Confira como fazer a enumeração e forçar a entrada em:
pageGCP - IAM, Principals & Org Policies EnumAgora que você tem algumas informações sobre suas credenciais (e se você é uma equipe vermelha, espero que você não tenha sido detectado). É hora de descobrir quais serviços estão sendo usados no ambiente. Na seção a seguir, você pode conferir algumas maneiras de enumerar alguns serviços comuns.
Enumeração de Serviços
O GCP possui uma quantidade impressionante de serviços, na página a seguir você encontrará informações básicas, cheatsheets de enumeração, como evitar detecção, obter persistência e outros truques pós-exploração sobre alguns deles:
pageGCP - ServicesObserve que você não precisa realizar todo o trabalho manualmente, abaixo neste post você pode encontrar uma seção sobre ferramentas automáticas.
Além disso, nesta etapa, você pode ter descoberto mais serviços expostos a usuários não autenticados, você pode ser capaz de explorá-los:
pageGCP - Unauthenticated Enum & AccessEscalação de Privilégios, Pós-Exploração e Persistência
A maneira mais comum, uma vez que você obteve algumas credenciais de nuvem ou comprometeu algum serviço em execução dentro de uma nuvem, é abusar de privilégios mal configurados que a conta comprometida pode ter. Portanto, a primeira coisa que você deve fazer é enumerar seus privilégios.
Além disso, durante essa enumeração, lembre-se de que permissões podem ser definidas no mais alto nível de "Organização" também.
pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - PersistenceServiços Expostos Publicamente
Ao enumerar os serviços do GCP, você pode ter encontrado alguns deles expondo elementos para a Internet (portas de VM/Containers, bancos de dados ou serviços de fila, snapshots ou buckets...). Como pentester/equipe vermelha, você sempre deve verificar se pode encontrar informações sensíveis/vulnerabilidades neles, pois podem fornecer a você acesso adicional à conta do GCP.
Neste livro, você deve encontrar informações sobre como encontrar serviços do GCP expostos e como verificá-los. Sobre como encontrar vulnerabilidades em serviços de rede expostos, eu recomendaria que você pesquisasse pelo serviço específico em:
Pivotamento GCP <--> Workspace
Comprometer princípios em uma plataforma pode permitir que um invasor comprometa a outra, verifique em:
pageGCP <--> Workspace PivotingFerramentas Automáticas
No console GCloud, em https://console.cloud.google.com/iam-admin/asset-inventory/dashboard você pode ver os recursos e IAMs sendo usados pelo projeto.
Aqui você pode ver os ativos suportados por esta API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
Confira ferramentas que podem ser usadas em várias nuvens aqui.
gcp_scanner: Este é um scanner de recursos do GCP que pode ajudar a determinar em que nível de acesso certas credenciais possuem no GCP.
gcp_enum: Script Bash para enumerar um ambiente GCP usando gcloud cli e salvar os resultados em um arquivo.
GCP-IAM-Privilege-Escalation: Scripts para enumerar altos privilégios IAM e para escalar privilégios no GCP abusando deles (não consegui fazer o script de enumeração funcionar).
Configuração e depuração do gcloud
Capturar rede do gcloud, gsutil...
Lembre-se de que você pode usar o parâmetro --log-http
com o gcloud
cli para imprimir as solicitações que a ferramenta está realizando. Se você não deseja que os logs redatam o valor do token, use gcloud config set log_http_redact_token false
Além disso, para interceptar a comunicação:
Configurar token OAuth no gcloud
Para usar um token OAuth da conta de serviço exfiltrado do endpoint de metadados, você pode simplesmente fazer:
Referências
Última actualización