# GCP - Compute Instances

{{#include ../../../../banners/hacktricks-training.md}}

## Basic Information

Google Cloud Compute Instances is **pasgemaakte virtuele masjiene op Google se wolkinfrastruktuur**, wat skaalbare en op aanvraag rekenkrag bied vir 'n wye verskeidenheid toepassings. Hulle bied funksies soos globale ontplooiing, volhoubare berging, buigsame OS-keuses, en sterk netwerk- en sekuriteitsintegrasies, wat hulle 'n veelsydige keuse maak vir die gasheer van webwerwe, verwerking van data, en doeltreffende uitvoering van toepassings in die wolk.

### Confidential VM

Confidential VMs gebruik **hardeware-gebaseerde sekuriteitskenmerke** wat aangebied word deur die nuutste generasie van AMD EPYC verwerkers, wat geheue-enkripsie en veilige geënkripteerde virtualisering insluit. Hierdie kenmerke stel die VM in staat om die data wat verwerk en gestoor word binne-in dit te beskerm teen selfs die gasheerbedryfstelsel en hypervisor.

Om 'n Confidential VM te laat loop, mag dit nodig wees om **dinge** soos die **tipe** van die **masjien**, netwerk **koppelvlak**, **opstartskyfbeeld** te **verander**.

### Disk & Disk Encryption

Dit is moontlik om die **skyf** te **kies** om te gebruik of **'n nuwe een te skep**. As jy 'n nuwe een kies, kan jy:

- Die **grootte** van die skyf kies
- Die **OS** kies
- Aangee of jy die **skyf wil verwyder wanneer die instansie verwyder word**
- **Enkripsie**: Deur **verstek** sal 'n **Google bestuurde sleutel** gebruik word, maar jy kan ook 'n sleutel van KMS **kies** of 'n **rauwe sleutel om te gebruik** aandui.

### Deploy Container

Dit is moontlik om 'n **houer** binne die virtuele masjien te ontplooi.\
Dit is moontlik om die **beeld** te konfigureer om te gebruik, die **opdrag** in te stel om binne-in te loop, **argumente**, 'n **volume** te monteer, en **omgewingsveranderlikes** (sensitiewe inligting?) en verskeie opsies vir hierdie houer te konfigureer soos om as **privilegied** uit te voer, stdin en pseudo TTY.

### Service Account

Deur verstek sal die **Compute Engine standaard diensrekening** gebruik word. Die e-pos van hierdie SA is soos: `<proj-num>-compute@developer.gserviceaccount.com`\
Hierdie diensrekening het **Redigeerder rol oor die hele projek (hoë voorregte).**

En die **standaard toegangskope** is die volgende:

- **https://www.googleapis.com/auth/devstorage.read\_only** -- Lees toegang tot emmers :)
- [https://www.googleapis.com/auth/logging.write](https://www.googleapis.com/auth/logging.write)
- [https://www.googleapis.com/auth/monitoring.write](https://www.googleapis.com/auth/monitoring.write)
- [https://www.googleapis.com/auth/servicecontrol](https://www.googleapis.com/auth/servicecontrol)
- [https://www.googleapis.com/auth/service.management.readonly](https://www.googleapis.com/auth/service.management.readonly)
- [https://www.googleapis.com/auth/trace.append](https://www.googleapis.com/auth/trace.append)

Dit is egter moontlik om **dit `cloud-platform` met 'n klik toe te ken** of **aangepaste** te spesifiseer.

<figure><img src="../../../../images/image (327).png" alt=""><figcaption></figcaption></figure>

### Firewall

Dit is moontlik om HTTP en HTTPS verkeer toe te laat.

<figure><img src="../../../../images/image (326).png" alt=""><figcaption></figcaption></figure>

### Networking

- **IP Forwarding**: Dit is moontlik om **IP forwarding in te skakel** vanaf die skepping van die instansie.
- **Hostname**: Dit is moontlik om die instansie 'n permanente hostname te gee.
- **Interface**: Dit is moontlik om 'n netwerk koppelvlak by te voeg.

### Extra Security

Hierdie opsies sal **die sekuriteit** van die VM **verhoog** en word aanbeveel:

- **Secure boot:** Secure boot help om jou VM instansies teen opstart- en kernvlak malware en rootkits te beskerm.
- **Enable vTPM:** Virtual Trusted Platform Module (vTPM) valideer jou gas VM se pre-boot en boot integriteit, en bied sleutelgenerasie en beskerming.
- **Integrity supervision:** Integriteitsmonitering laat jou toe om die tydelike opstartintegriteit van jou beskermde VM instansies te monitor en te verifieer met behulp van Stackdriver-verslae. Vereis dat vTPM geaktiveer moet wees.

### VM Access

Die algemene manier om toegang tot die VM te verkry, is deur **sekere SSH publieke sleutels** toe te laat om toegang tot die VM te verkry.\
Dit is egter ook moontlik om **die toegang tot die VM via `os-config` diens met IAM in te skakel**. Boonop is dit moontlik om 2FA in te skakel om toegang tot die VM te verkry met behulp van hierdie diens.\
Wanneer hierdie **diens** geaktiveer is, is die toegang via **SSH sleutels gedeaktiveer.**

<figure><img src="../../../../images/image (328).png" alt=""><figcaption></figcaption></figure>

### Metadata

Dit is moontlik om **outomatisering** (userdata in AWS) te definieer wat **shell-opdragte** is wat elke keer uitgevoer sal word wanneer die masjien aanskakel of herbegin.

Dit is ook moontlik om **bykomende metadata sleutel-waarde waardes** toe te voeg wat vanaf die metadata eindpunt toeganklik gaan wees. Hierdie inligting word algemeen gebruik vir omgewingsveranderlikes en opstart/afskakel skripte. Dit kan verkry word met behulp van die **`describe` metode** van 'n opdrag in die enumerasie afdeling, maar dit kan ook van binne die instansie verkry word deur die metadata eindpunt te benader.
```bash
# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"
```
Boonop is die **auth token vir die aangehegte diensrekening** en **algemene inligting** oor die instansie, netwerk en projek ook beskikbaar vanaf die **metadata-eindpunt**. Vir meer inligting, kyk:

{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#gcp
{{#endref}}

### Enkripsie

'n Google-beheerde enkripsiesleutel word standaard gebruik, maar 'n Klant-beheerde enkripsiesleutel (CMEK) kan gekonfigureer word. Jy kan ook konfigureer wat om te doen wanneer die gebruikte CMEK herroep word: Noting of die VM afsluit.

<figure><img src="../../../../images/image (329).png" alt=""><figcaption></figcaption></figure>

{{#include ../../../../banners/hacktricks-training.md}}
