GCP - Compute Post Exploitation
Compute
Para mais informações sobre Compute e VPC (Networking) confira:
GCP - Compute EnumExportar & Inspecionar Imagens localmente
Isso permitiria a um atacante acessar os dados contidos em imagens já existentes ou criar novas imagens de VMs em execução e acessar 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:
Para realizar esta ação, o atacante pode precisar de privilégios sobre o bucket de armazenamento e, com certeza, privilégios sobre cloudbuild, pois é o serviço que será solicitado para realizar a exportação.
Além disso, para que isso funcione, o codebuild SA e o compute SA precisam de permissões privilegiadas.
O cloudbuild SA <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
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 acesso a uma conta externa sobre a imagem:
e então crie uma nova VM a partir dele:
Se você não conseguir dar acesso à sua conta externa sobre a imagem, você pode lançar 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:
Inspecionar um Snapshot/Disco anexando-o a uma VM
Com o objetivo de acessar os dados armazenados em um disco ou snapshot, você pode transformar o snapshot em um disco, um disco em uma imagem e seguir os passos anteriores.
Ou você pode 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):
Anexar o disco a uma instância:
Monte o disco dentro da VM:
SSH na VM:
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:
Monte o disco:
Se você não puder dar 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.
Last updated