GCP - Enumerazione Compute
Reading time: 8 minutes
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.
GCP VPC e Networking
Scopri come funziona in:
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:
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 delle autorizzazioni di calcolo per escalare i privilegi:
Enum non autenticato
GCP - Compute Unauthenticated Enum
Post Exploitation
GCP - Compute Post Exploitation
Persistenza
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 le appropriate autorizzazioni IAM 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>
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.
warning
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 di 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).
Lo 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>
Escalation dei privilegi
Controlla la sezione sull'escalation dei privilegi delle Compute Instances.
Riferimenti
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.