GCP - Compute Enum

Impara l'hacking di AWS da zero a esperto con htARTE (Esperto Red Team di HackTricks su AWS)!

Altri modi per supportare HackTricks:

GCP VPC & Networking

Scopri come funziona questo in:

pageGCP - 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>

Trovi facilmente le 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:

pageGCP - 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:

pageGCP - local privilege escalation ssh pivoting

Escalation dei Privilegi

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

pageGCP - Compute Privesc

Enumerazione non autenticata

pageGCP - Compute Unauthenticated Enum

Post Esploitation

pageGCP - Compute Post Exploitation

Persistenza

pageGCP - Compute Persistence

Log della Console Seriale

I log della console seriale di Compute Engine sono una funzionalità che ti consente di visualizzare e diagnosticare i log di avvio e del sistema operativo delle tue istanze di macchine virtuali.

I log della console seriale forniscono una visualizzazione a basso livello del processo di avvio dell'istanza, inclusi messaggi del kernel, script di inizializzazione e altri eventi di sistema che si verificano durante l'avvio. Questo può essere utile per risolvere problemi di avvio, identificare errori di configurazione o software o risolvere problemi di connettività di rete.

Questi log potrebbero esporre informazioni sensibili dai log di sistema che un utente con privilegi bassi potrebbe non vedere di solito, ma con le autorizzazioni IAM appropriate potresti essere in grado di leggerli.

Puoi utilizzare il seguente comando gcloud per interrogare i log della porta seriale (l'autorizzazione richiesta è compute.instances.getSerialPortOutput):

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

Gestore della configurazione del sistema operativo

Puoi utilizzare il servizio di gestione della configurazione del sistema operativo per implementare, interrogare e mantenere configurazioni coerenti (stato desiderato e software) per la tua istanza VM. Su Compute Engine, è necessario utilizzare le politiche degli ospiti 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 processo di gestione della configurazione.

Ciò consente anche di accedere alle istanze tramite autorizzazioni IAM, quindi è molto utile per l'elevazione dei privilegi e il pivoting.

Per abilitare os-config in un intero progetto o in un'istanza, è sufficiente impostare la chiave enable-oslogin dei metadati su true al livello desiderato. Inoltre, è possibile impostare i metadati enable-oslogin-2fa su true per abilitare il 2fa.

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

Per saperne di più su 2fa in OS-config, si applica solo se l'utente è un utente, se è un SA (come il SA di calcolo) non richiederà nulla di extra.

Enumerazione

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 personalizzate di calcolo possono contenere dettagli sensibili o altre configurazioni vulnerabili che è possibile sfruttare.

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

Enumerazione

È possibile 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>

È possibile quindi esportare i dischi virtuali da qualsiasi immagine in formati multipli. Il comando seguente esporterebbe l'immagine test-image in formato qcow2, consentendoti di scaricare il file e creare localmente una VM 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

Escalazione dei privilegi

Controlla la sezione sull'escalazione dei privilegi delle istanze di calcolo.

Modelli di Istanze 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 presenti nei metadati personalizzati di un'istanza in esecuzione. Puoi utilizzare i seguenti comandi per investigare:

# 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 di solito questi modelli non contengono informazioni sensibili.

Snapshot

Gli snapshot sono copie di backup dei dischi. Si noti che questo non è la stessa cosa che clonare un disco (un'altra funzionalità disponibile). Lo snapshot utilizzerà la stessa crittografia del disco da cui è stato preso.

Enumerazione

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

Escalazione dei privilegi

Controlla la sezione sull'escalation dei privilegi delle istanze di calcolo.

Riferimenti

Impara l'hacking su AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Last updated