GCP - Compute Post Exploitation
Compute
Para más información sobre Compute y VPC (Redes) consulta:
GCP - Compute EnumExportar e Inspeccionar Imágenes localmente
Esto permitiría a un atacante acceder a los datos contenidos dentro de imágenes ya existentes o crear nuevas imágenes de VMs en ejecución y acceder a sus datos sin tener acceso a la VM en ejecución.
Es posible exportar una imagen de VM a un bucket y luego descargarla y montarla localmente con el comando:
Para realizar esta acción, el atacante podría necesitar privilegios sobre el bucket de almacenamiento y, por supuesto, privilegios sobre cloudbuild, ya que es el servicio que se va a solicitar para realizar la exportación.
Además, para que esto funcione, el SA de codebuild y el SA de compute necesitan permisos privilegiados.
El SA de cloudbuild <project-id>@cloudbuild.gserviceaccount.com
necesita:
roles/iam.serviceAccountTokenCreator
roles/compute.admin
roles/iam.serviceAccountUser
Y el SA <project-id>-compute@developer.gserviceaccount.com
necesita:
roles/compute.storageAdmin
roles/storage.objectAdmin
Exportar e Inspeccionar Instantáneas y Discos localmente
No es posible exportar instantáneas y discos directamente, pero es posible transformar una instantánea en un disco, un disco en una imagen y, siguiendo la sección anterior, exportar esa imagen para inspeccionarla localmente.
Inspeccionar una imagen creando una VM
Con el objetivo de acceder a los datos almacenados en una imagen o dentro de una VM en ejecución desde donde un atacante ha creado una imagen, es posible otorgar acceso a una cuenta externa sobre la imagen:
y luego crear una nueva VM a partir de ella:
Si no pudiste dar acceso a tu cuenta externa a través de la imagen, podrías lanzar una VM usando esa imagen en el proyecto de la víctima y hacer que los metadatos ejecuten un shell inverso para acceder a la imagen añadiendo el parámetro:
Inspeccionar un Snapshot/Disk adjuntándolo a una VM
Con el objetivo de acceder a los datos almacenados en un disco o un snapshot, podrías transformar el snapshot en un disco, un disco en una imagen y seguir los pasos anteriores.
O podrías otorgar acceso a una cuenta externa sobre el disco (si el punto de partida es un snapshot, otorgar acceso sobre el snapshot o crear un disco a partir de él):
Adjuntar el disco a una instancia:
Montar el disco dentro de la VM:
SSH en la VM:
Identificar el Disco: Una vez dentro de la VM, identifica el nuevo disco listando los dispositivos de disco. Típicamente, puedes encontrarlo como
/dev/sdb
,/dev/sdc
, etc.Formatear y Montar el Disco (si es un disco nuevo o en bruto):
Crear un punto de montaje:
Montar el disco:
Si no puedes dar acceso a un proyecto externo a la instantánea o disco, es posible que necesites realizar estas acciones dentro de una instancia en el mismo proyecto que la instantánea/disco.
Last updated