GCP - Compute Enum

Supporta HackTricks

GCP VPC & Networking

Scopri come funziona in:

GCP - VPC & Networking

Enumerazione

# List networks
gcloud compute networks list
gcloud compute networks describe <network>

# List subnetworks
gcloud compute networks subnets list
gcloud compute networks subnets get-iam-policy <name> --region <region>
gcloud compute networks subnets describe <name> --region <region>

# List FW rules in networks
gcloud compute firewall-rules list --format="table(
name,
network,
direction,
priority,
sourceRanges.list():label=SRC_RANGES,
destinationRanges.list():label=DEST_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
denied[].map().firewall_rule().list():label=DENY,
sourceTags.list():label=SRC_TAGS,
sourceServiceAccounts.list():label=SRC_SVC_ACCT,
targetTags.list():label=TARGET_TAGS,
targetServiceAccounts.list():label=TARGET_SVC_ACCT,
disabled
)"

# List Hierarchical Firewalls
gcloud compute firewall-policies list  (--folder <value>| --organization <value>)
gcloud compute firewall-policies describe <fw_policy>
gcloud compute firewall-policies list-rules <fw_policy>

# Get Firewalls of each region
gcloud compute network-firewall-policies list
## Get final FWs applied in a region
gcloud compute network-firewall-policies get-effective-firewalls --network=<vpc_name> --region <region>

Puoi facilmente trovare istanze di calcolo con regole del firewall aperte con https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Istanze di calcolo

Questo è il modo in cui puoi eseguire macchine virtuali all'interno di GCP. Controlla questa pagina per ulteriori informazioni:

GCP - Compute Instances

Enumerazione

# Get list of zones
# It's interesting to know which zones are being used
gcloud compute regions list | grep -E "NAME|[^0]/"

# List compute instances & get info
gcloud compute instances list
gcloud compute instances describe <instance name>
gcloud compute instances get-iam-policy <instance> --zone=ZONE
gcloud compute instances get-screenshot <instance name> # Instace must have "Display Device" enabled
gcloud compute instances os-inventory list-instances # Get OS info of instances (OS Config agent is running on instances)


# Enumerate disks
gcloud compute disks list
gcloud compute disks describe <disk>
gcloud compute disks get-iam-policy <disk>

Per ulteriori informazioni su come SSH o modificare i metadati di un'istanza per escalare i privilegi, controlla questa pagina:

GCP - local privilege escalation ssh pivoting

Escalation dei privilegi

Nella pagina seguente, puoi controllare come abusare dei permessi di calcolo per escalare i privilegi:

GCP - Compute Privesc

Enum non autenticato

GCP - Compute Unauthenticated Enum

Post Exploitation

GCP - Compute Post Exploitation

Persistenza

GCP - Compute Persistence

Log della Console Seriale

I log della Console Seriale di Compute Engine sono una funzionalità che consente di visualizzare e diagnosticare i log di avvio e del sistema operativo delle istanze della tua macchina virtuale.

I log della Console Seriale forniscono una visione a basso livello del processo di avvio dell'istanza, inclusi i messaggi del kernel, gli script di inizializzazione e altri eventi di sistema che si verificano durante l'avvio. Questo può essere utile per il debug dei problemi di avvio, l'identificazione di configurazioni errate o errori software, o la risoluzione di problemi di connettività di rete.

Questi log possono esporre informazioni sensibili dai log di sistema che un utente a basso privilegio potrebbe non vedere normalmente, ma con i permessi IAM appropriati potresti essere in grado di leggerli.

Puoi utilizzare il seguente comando gcloud per interrogare i log della porta seriale (il permesso richiesto è compute.instances.getSerialPortOutput):

gcloud compute instances get-serial-port-output <instance-name>

Startup Scripts output

È possibile vedere l'output degli script di avvio dalla VM eseguendo:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

Puoi utilizzare il servizio di gestione della configurazione del sistema operativo per distribuire, interrogare e mantenere configurazioni coerenti (stato desiderato e software) per la tua istanza VM (VM). Su Compute Engine, devi utilizzare guest policies per mantenere configurazioni software coerenti su una VM.

La funzionalità di gestione della configurazione del sistema operativo ti consente di definire politiche di configurazione che specificano quali pacchetti software devono essere installati, quali servizi devono essere abilitati e quali file o configurazioni devono essere presenti sulle tue VM. Puoi utilizzare un approccio dichiarativo per gestire la configurazione software delle tue VM, il che ti consente di automatizzare e scalare più facilmente il tuo processo di gestione della configurazione.

Questo consente anche di accedere alle istanze tramite permessi IAM, quindi è molto utile per privesc e pivoting.

Per abilitare os-config in un intero progetto o in un'istanza devi semplicemente impostare la chiave metadata enable-oslogin su true al livello desiderato. Inoltre, puoi impostare la metadata enable-oslogin-2fa su true per abilitare il 2fa.

Quando lo abiliti durante la creazione di un'istanza, le chiavi metadata verranno impostate automaticamente.

Ulteriori informazioni su 2fa in OS-config, si applica solo se l'utente è un utente, se è un SA (come il compute SA) non richiederà nulla di extra.

Enumeration

gcloud compute os-config patch-deployments list
gcloud compute os-config patch-deployments describe <patch-deployment>

gcloud compute os-config patch-jobs list
gcloud compute os-config patch-jobs describe <patch-job>

Immagini

Immagini personalizzate

Le immagini di calcolo personalizzate possono contenere dettagli sensibili o altre configurazioni vulnerabili che puoi sfruttare.

Quando viene creata un'immagine, puoi scegliere 3 tipi di crittografia: Utilizzando la chiave gestita da Google (predefinita), una chiave da KMS, o una chiave grezza fornita dal cliente.

Enumerazione

Puoi interrogare l'elenco delle immagini non standard in un progetto con il seguente comando:

gcloud compute machine-images list
gcloud compute machine-images describe <name>
gcloud compute machine-images get-iam-policy <name>

Puoi quindi esportare i dischi virtuali da qualsiasi immagine in più formati. Il seguente comando esporterebbe l'immagine test-image in formato qcow2, permettendoti di scaricare il file e costruire una VM localmente per ulteriori indagini:

gcloud compute images export --image test-image \
--export-format qcow2 --destination-uri [BUCKET]

# Execute container inside a docker
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

Escalation dei privilegi

Controlla la sezione sull'escalation dei privilegi delle Compute Instances.

Modelli di Istanza Personalizzati

Un modello di istanza definisce le proprietà dell'istanza per aiutare a distribuire configurazioni coerenti. Questi possono contenere gli stessi tipi di dati sensibili dei metadati personalizzati di un'istanza in esecuzione. Puoi utilizzare i seguenti comandi per indagare:

# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

Potrebbe essere interessante sapere quale disco stanno utilizzando le nuove immagini, ma questi modelli di solito non avranno informazioni sensibili.

Snapshots

I snapshot sono backup dei dischi. Nota che questo non è lo stesso che clonare un disco (un'altra funzionalità disponibile). Il snapshot utilizzerà la stessa crittografia del disco da cui è stato preso.

Enumeration

gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>

Privilege Escalation

Controlla la sezione sull'escalation dei privilegi delle Compute Instances.

References

Support HackTricks

Last updated