mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-16 23:01:43 -08:00
214 lines
9.3 KiB
Markdown
214 lines
9.3 KiB
Markdown
# GCP - Compute Enum
|
|
|
|
{{#include ../../../../banners/hacktricks-training.md}}
|
|
|
|
## GCP VPC & Networking
|
|
|
|
Erfahren Sie, wie das funktioniert in:
|
|
|
|
{{#ref}}
|
|
gcp-vpc-and-networking.md
|
|
{{#endref}}
|
|
|
|
### Enumeration
|
|
```bash
|
|
# 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>
|
|
```
|
|
Sie finden leicht Compute-Instanzen mit offenen Firewall-Regeln unter [https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum](https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum)
|
|
|
|
## Compute-Instanzen
|
|
|
|
So können Sie **virtuelle Maschinen innerhalb von GCP ausführen.** Weitere Informationen finden Sie auf dieser Seite:
|
|
|
|
{{#ref}}
|
|
gcp-compute-instance.md
|
|
{{#endref}}
|
|
|
|
### Enumeration
|
|
```bash
|
|
# 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>
|
|
```
|
|
Für weitere Informationen darüber, wie man **SSH** oder **die Metadaten** einer Instanz **modifizieren** kann, um **Privilegien zu eskalieren**, siehe diese Seite:
|
|
|
|
{{#ref}}
|
|
../../gcp-privilege-escalation/gcp-local-privilege-escalation-ssh-pivoting.md
|
|
{{#endref}}
|
|
|
|
### Privilegieneskalation
|
|
|
|
Auf der folgenden Seite kannst du nachlesen, wie man **Compute-Berechtigungen missbraucht, um Privilegien zu eskalieren**:
|
|
|
|
{{#ref}}
|
|
../../gcp-privilege-escalation/gcp-compute-privesc/
|
|
{{#endref}}
|
|
|
|
### Unauthentifizierte Enum
|
|
|
|
{{#ref}}
|
|
../../gcp-unauthenticated-enum-and-access/gcp-compute-unauthenticated-enum.md
|
|
{{#endref}}
|
|
|
|
### Post-Exploitation
|
|
|
|
{{#ref}}
|
|
../../gcp-post-exploitation/gcp-compute-post-exploitation.md
|
|
{{#endref}}
|
|
|
|
### Persistenz
|
|
|
|
{{#ref}}
|
|
../../gcp-persistence/gcp-compute-persistence.md
|
|
{{#endref}}
|
|
|
|
## Serielle Konsolenprotokolle
|
|
|
|
Die Protokolle der Compute Engine Serial Console sind ein Feature, das es dir ermöglicht, die **Boot- und Betriebssystemprotokolle** deiner virtuellen Maschineninstanzen **anzusehen und zu diagnostizieren**.
|
|
|
|
Die Serial Console Logs bieten einen **niedrigstufigen Überblick über den Bootprozess der Instanz**, einschließlich Kernelmeldungen, Init-Skripten und anderen Systemereignissen, die während des Bootvorgangs auftreten. Dies kann nützlich sein, um Bootprobleme zu debuggen, Fehlkonfigurationen oder Softwarefehler zu identifizieren oder Netzwerkverbindungsprobleme zu beheben.
|
|
|
|
Diese Protokolle **könnten sensible Informationen** aus den Systemprotokollen offenbaren, die ein Benutzer mit niedrigen Berechtigungen normalerweise nicht sieht, aber mit den entsprechenden IAM-Berechtigungen kannst du sie möglicherweise lesen.
|
|
|
|
Du kannst den folgenden [gcloud-Befehl](https://cloud.google.com/sdk/gcloud/reference/compute/instances/get-serial-port-output) verwenden, um die Protokolle des seriellen Ports abzufragen (die erforderliche Berechtigung ist `compute.instances.getSerialPortOutput`):
|
|
```bash
|
|
gcloud compute instances get-serial-port-output <instance-name>
|
|
```
|
|
## Startup Scripts output
|
|
|
|
Es ist möglich, die **Ausgabe der Startskripte** von der VM auszuführen:
|
|
```bash
|
|
sudo journalctl -u google-startup-scripts.service
|
|
```
|
|
## OS Configuration Manager
|
|
|
|
Sie können den OS-Konfigurationsverwaltungsdienst verwenden, um **konstante Konfigurationen** (gewünschter Zustand und Software) für Ihre VM-Instanz (VM) **bereitstellen, abfragen und aufrechterhalten**. In Compute Engine müssen Sie [Gastrichtlinien](https://cloud.google.com/compute/docs/os-config-management#guest-policy) verwenden, um konsistente Softwarekonfigurationen auf einer VM aufrechtzuerhalten.
|
|
|
|
Die Funktion zur OS-Konfigurationsverwaltung ermöglicht es Ihnen, Konfigurationsrichtlinien zu definieren, die festlegen, welche Softwarepakete installiert werden sollen, welche Dienste aktiviert werden sollen und welche Dateien oder Konfigurationen auf Ihren VMs vorhanden sein sollen. Sie können einen deklarativen Ansatz zur Verwaltung der Softwarekonfiguration Ihrer VMs verwenden, der es Ihnen ermöglicht, Ihren Konfigurationsverwaltungsprozess einfacher zu automatisieren und zu skalieren.
|
|
|
|
Dies ermöglicht auch das Einloggen in Instanzen über IAM-Berechtigungen, was sehr **nützlich für privesc und pivoting** ist.
|
|
|
|
> [!WARNING]
|
|
> Um **os-config in einem gesamten Projekt oder in einer Instanz zu aktivieren**, müssen Sie nur den **Metadaten**-Schlüssel **`enable-oslogin`** auf **`true`** auf der gewünschten Ebene setzen.\
|
|
> Darüber hinaus können Sie die Metadaten **`enable-oslogin-2fa`** auf **`true`** setzen, um die 2fa zu aktivieren.
|
|
>
|
|
> Wenn Sie es beim Erstellen einer Instanz aktivieren, werden die Metadatenschlüssel automatisch gesetzt.
|
|
|
|
Mehr über **2fa in OS-config**, **es gilt nur, wenn der Benutzer ein Benutzer ist**, wenn es sich um einen SA (wie den Compute SA) handelt, sind keine zusätzlichen Anforderungen erforderlich.
|
|
|
|
### Enumeration
|
|
```bash
|
|
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>
|
|
```
|
|
## Bilder
|
|
|
|
### Benutzerdefinierte Bilder
|
|
|
|
**Benutzerdefinierte Compute-Bilder können sensible Details** oder andere anfällige Konfigurationen enthalten, die Sie ausnutzen können.
|
|
|
|
Wenn ein Bild erstellt wird, können Sie **3 Arten von Verschlüsselung** wählen: Verwendung eines **von Google verwalteten Schlüssels** (Standard), eines **Schlüssels von KMS** oder eines **rohen Schlüssels**, der vom Kunden bereitgestellt wird.
|
|
|
|
#### Aufzählung
|
|
|
|
Sie können die Liste der nicht standardmäßigen Bilder in einem Projekt mit dem folgenden Befehl abfragen:
|
|
```bash
|
|
gcloud compute machine-images list
|
|
gcloud compute machine-images describe <name>
|
|
gcloud compute machine-images get-iam-policy <name>
|
|
```
|
|
Sie können dann [**exportieren**](https://cloud.google.com/sdk/gcloud/reference/compute/images/export) **die virtuellen Festplatten** aus jedem Image in mehreren Formaten. Der folgende Befehl würde das Image `test-image` im qcow2-Format exportieren, sodass Sie die Datei herunterladen und eine VM lokal für weitere Untersuchungen erstellen können:
|
|
```bash
|
|
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
|
|
```
|
|
#### Privilegienerhöhung
|
|
|
|
Überprüfen Sie den Abschnitt zur Privilegienerhöhung von Compute Instances.
|
|
|
|
### Benutzerdefinierte Instanzvorlagen
|
|
|
|
Eine [**Instanzvorlage**](https://cloud.google.com/compute/docs/instance-templates/) **definiert Instanzeigenschaften**, um konsistente Konfigurationen bereitzustellen. Diese können die gleichen Arten von sensiblen Daten wie die benutzerdefinierten Metadaten einer laufenden Instanz enthalten. Sie können die folgenden Befehle verwenden, um zu untersuchen:
|
|
```bash
|
|
# List the available templates
|
|
gcloud compute instance-templates list
|
|
|
|
# Get the details of a specific template
|
|
gcloud compute instance-templates describe [TEMPLATE NAME]
|
|
```
|
|
Es könnte interessant sein zu wissen, welche Festplatte neue Images verwenden, aber diese Vorlagen werden normalerweise keine sensiblen Informationen enthalten.
|
|
|
|
## Snapshots
|
|
|
|
Die **Snapshots sind Sicherungen von Festplatten**. Beachten Sie, dass dies nicht dasselbe ist wie das Klonen einer Festplatte (eine andere verfügbare Funktion).\
|
|
Der **Snapshot** verwendet die **gleiche Verschlüsselung wie die Festplatte**, von der er erstellt wurde.
|
|
|
|
### Enumeration
|
|
```bash
|
|
gcloud compute snapshots list
|
|
gcloud compute snapshots describe <snapshot>
|
|
gcloud compute snapshots get-iam-policy <snapshot>
|
|
```
|
|
### Privilegienerhöhung
|
|
|
|
Überprüfen Sie den Abschnitt zur Privilegienerhöhung der Compute Instances.
|
|
|
|
## Referenzen
|
|
|
|
- [https://blog.raphael.karger.is/articles/2022-08/GCP-OS-Patching](https://blog.raphael.karger.is/articles/2022-08/GCP-OS-Patching)
|
|
|
|
{{#include ../../../../banners/hacktricks-training.md}}
|