GCP - Enumeração de Computação

Reading time: 8 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

GCP VPC & Rede

Saiba como isso funciona em:

GCP - VPC & Networking

Enumeração

bash
# List networks
gcloud compute networks list
gcloud compute networks describe <network>

# List subnetworks
gcloud compute networks subnets list
gcloud compute networks subnets get-iam-policy <name> --region <region>
gcloud compute networks subnets describe <name> --region <region>

# List FW rules in networks
gcloud compute firewall-rules list --format="table(
name,
network,
direction,
priority,
sourceRanges.list():label=SRC_RANGES,
destinationRanges.list():label=DEST_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
denied[].map().firewall_rule().list():label=DENY,
sourceTags.list():label=SRC_TAGS,
sourceServiceAccounts.list():label=SRC_SVC_ACCT,
targetTags.list():label=TARGET_TAGS,
targetServiceAccounts.list():label=TARGET_SVC_ACCT,
disabled
)"

# List Hierarchical Firewalls
gcloud compute firewall-policies list  (--folder <value>| --organization <value>)
gcloud compute firewall-policies describe <fw_policy>
gcloud compute firewall-policies list-rules <fw_policy>

# Get Firewalls of each region
gcloud compute network-firewall-policies list
## Get final FWs applied in a region
gcloud compute network-firewall-policies get-effective-firewalls --network=<vpc_name> --region <region>

Você pode facilmente encontrar instâncias de computação com regras de firewall abertas em https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Instâncias de computação

Esta é a maneira de você executar máquinas virtuais dentro do GCP. Confira esta página para mais informações:

GCP - Compute Instances

Enumeração

bash
# Get list of zones
# It's interesting to know which zones are being used
gcloud compute regions list | grep -E "NAME|[^0]/"

# List compute instances & get info
gcloud compute instances list
gcloud compute instances describe <instance name>
gcloud compute instances get-iam-policy <instance> --zone=ZONE
gcloud compute instances get-screenshot <instance name> # Instace must have "Display Device" enabled
gcloud compute instances os-inventory list-instances # Get OS info of instances (OS Config agent is running on instances)


# Enumerate disks
gcloud compute disks list
gcloud compute disks describe <disk>
gcloud compute disks get-iam-policy <disk>

Para mais informações sobre como SSH ou modificar os metadados de uma instância para escalar privilégios, consulte esta página:

GCP - local privilege escalation ssh pivoting

Escalação de Privilégios

Na página a seguir, você pode verificar como abusar das permissões de computação para escalar privilégios:

GCP - Compute Privesc

Enumeração Não Autenticada

GCP - Compute Unauthenticated Enum

Pós Exploração

GCP - Compute Post Exploitation

Persistência

GCP - Compute Persistence

Logs do Console Serial

Os Logs do Console Serial do Compute Engine são um recurso que permite visualizar e diagnosticar os logs de inicialização e do sistema operacional de suas instâncias de máquina virtual.

Os Logs do Console Serial fornecem uma visão de baixo nível do processo de inicialização da instância, incluindo mensagens do kernel, scripts de inicialização e outros eventos do sistema que ocorrem durante a inicialização. Isso pode ser útil para depurar problemas de inicialização, identificar configurações incorretas ou erros de software, ou solucionar problemas de conectividade de rede.

Esses logs podem expor informações sensíveis dos logs do sistema que usuários com baixo privilégio normalmente não veriam, mas com as permissões IAM apropriadas, você pode ser capaz de lê-los.

Você pode usar o seguinte comando gcloud para consultar os logs da porta serial (a permissão necessária é compute.instances.getSerialPortOutput):

bash
gcloud compute instances get-serial-port-output <instance-name>

Saída dos Scripts de Inicialização

É possível ver a saída dos scripts de inicialização da VM executando:

bash
sudo journalctl -u google-startup-scripts.service

Gerenciador de Configuração do SO

Você pode usar o serviço de gerenciamento de configuração do SO para implantar, consultar e manter configurações consistentes (estado desejado e software) para sua instância de VM (VM). No Compute Engine, você deve usar guest policies para manter configurações de software consistentes em uma VM.

O recurso de gerenciamento de configuração do SO permite que você defina políticas de configuração que especificam quais pacotes de software devem ser instalados, quais serviços devem ser ativados e quais arquivos ou configurações devem estar presentes em suas VMs. Você pode usar uma abordagem declarativa para gerenciar a configuração de software de suas VMs, o que permite automatizar e escalar seu processo de gerenciamento de configuração com mais facilidade.

Isso também permite fazer login em instâncias via permissões IAM, então é muito útil para privesc e pivoting.

warning

Para habilitar os-config em todo um projeto ou em uma instância, você só precisa definir a chave de metadata enable-oslogin como true no nível desejado.
Além disso, você pode definir a metadata enable-oslogin-2fa como true para habilitar o 2fa.

Quando você habilita isso ao criar uma instância, as chaves de metadata serão definidas automaticamente.

Mais sobre 2fa no OS-config, apenas se aplica se o usuário for um usuário, se for um SA (como o SA de computação) não exigirá nada extra.

Enumeração

bash
gcloud compute os-config patch-deployments list
gcloud compute os-config patch-deployments describe <patch-deployment>

gcloud compute os-config patch-jobs list
gcloud compute os-config patch-jobs describe <patch-job>

Imagens

Imagens Personalizadas

Imagens de computação personalizadas podem conter detalhes sensíveis ou outras configurações vulneráveis que você pode explorar.

Quando uma imagem é criada, você pode escolher 3 tipos de criptografia: Usando chave gerenciada pelo Google (padrão), uma chave do KMS, ou uma chave bruta fornecida pelo cliente.

Enumeração

Você pode consultar a lista de imagens não padrão em um projeto com o seguinte comando:

bash
gcloud compute machine-images list
gcloud compute machine-images describe <name>
gcloud compute machine-images get-iam-policy <name>

Você pode então exportar os discos virtuais de qualquer imagem em vários formatos. O seguinte comando exportaria a imagem test-image no formato qcow2, permitindo que você baixe o arquivo e construa uma VM localmente para investigação adicional:

bash
gcloud compute images export --image test-image \
--export-format qcow2 --destination-uri [BUCKET]

# Execute container inside a docker
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

Escalação de Privilégios

Verifique a seção de escalonamento de privilégios das Instâncias de Computação.

Modelos de Instância Personalizados

Um modelo de instância define propriedades da instância para ajudar a implantar configurações consistentes. Estes podem conter os mesmos tipos de dados sensíveis que os metadados personalizados de uma instância em execução. Você pode usar os seguintes comandos para investigar:

bash
# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

Pode ser interessante saber qual disco as novas imagens estão usando, mas esses templates geralmente não terão informações sensíveis.

Snapshots

Os snapshots são backups de discos. Note que isso não é o mesmo que clonar um disco (outra funcionalidade disponível).
O snapshot usará a mesma criptografia que o disco de onde foi tirado.

Enumeration

bash
gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>

Escalação de Privilégios

Verifique a seção de escalonamento de privilégios das Instâncias de Computação.

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks