GCP - Compute Enum

Erfahren Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

GCP VPC & Networking

Erfahren Sie, wie dies funktioniert in:

pageGCP - VPC & Networking

Enumeration

# 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 können Compute-Instanzen mit offenen Firewall-Regeln leicht finden mit https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Compute-Instanzen

So können Sie virtuelle Maschinen in GCP ausführen. Überprüfen Sie diese Seite für weitere Informationen:

pageGCP - Compute Instances

Enumeration

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

Berechtigungserweiterung

Auf der folgenden Seite können Sie nachlesen, wie Sie Compute-Berechtigungen missbrauchen, um Berechtigungen zu eskalieren:

pageGCP - Compute Privesc

Nicht authentifizierte Enumeration

pageGCP - Compute Unauthenticated Enum

Post-Exploitation

pageGCP - Compute Post Exploitation

Persistenz

pageGCP - Compute Persistence

Serielle Konsolenprotokolle

Compute Engine Serial Console Logs sind eine Funktion, die es Ihnen ermöglicht, die Start- und Betriebssystemprotokolle Ihrer virtuellen Maschineninstanzen anzuzeigen und zu diagnostizieren.

Die Seriellen Konsolenprotokolle bieten eine niedrigstufige Ansicht des Startvorgangs der Instanz, einschließlich Kernelmeldungen, Init-Skripte und anderer Systemereignisse, die während des Bootvorgangs auftreten. Dies kann nützlich sein, um Startprobleme zu debuggen, Fehlkonfigurationen oder Softwarefehler zu identifizieren oder Netzwerkverbindungsprobleme zu beheben.

Diese Protokolle können sensible Informationen preisgeben, die ein Benutzer mit niedrigen Berechtigungen normalerweise nicht sehen würde, aber mit den entsprechenden IAM-Berechtigungen können Sie sie möglicherweise lesen.

Sie können den folgenden gcloud-Befehl verwenden, um die Seriellen-Port-Protokolle abzufragen (die erforderliche Berechtigung ist compute.instances.getSerialPortOutput):

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

OS-Konfigurations-Manager

Sie können den OS-Konfigurations-Manager verwenden, um konsistente Konfigurationen bereitzustellen, abzufragen und aufrechtzuerhalten (gewünschter Zustand und Software) für Ihre VM-Instanz (VM). Auf Compute Engine müssen Sie Gastrichtlinien verwenden, um konsistente Softwarekonfigurationen auf einer VM aufrechtzuerhalten.

Das Feature OS-Konfigurations-Management ermöglicht es Ihnen, Konfigurationsrichtlinien zu definieren, die angeben, 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, daher ist es sehr nützlich für Privilege Escalation und Pivoting.

Um os-config in einem gesamten Projekt oder in einer Instanz zu aktivieren, müssen Sie einfach 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 aktivieren, wenn Sie eine Instanz erstellen, werden die Metadaten automatisch gesetzt.

Mehr über 2FA in OS-Konfiguration, es gilt nur, wenn der Benutzer ein Benutzer ist, wenn es sich um einen SA handelt (wie den Compute SA), wird nichts zusätzliches benötigt.

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>

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 der Verschlüsselung wählen: Verwendung des von Google verwalteten Schlüssels (Standard), eines Schlüssels von KMS oder eines rohen Schlüssels, der vom Client bereitgestellt wird.

Aufzählung

Sie können die Liste der nicht standardmäßigen Bilder in einem Projekt mit dem folgenden Befehl abfragen:

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

Sie können dann die virtuellen Festplatten aus einem beliebigen Image in mehreren Formaten exportieren. Der folgende Befehl würde das Image test-image im qcow2-Format exportieren, sodass Sie die Datei herunterladen und lokal eine VM für weitere Untersuchungen erstellen können:

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

Privilege Escalation

Überprüfen Sie den Abschnitt zur Privilegieneskalation von Compute-Instanzen.

Benutzerdefinierte Instanzvorlagen

Eine Instanzvorlage definiert Instanzeigenschaften, um bei der Bereitstellung konsistente Konfigurationen zu unterstützen. Diese können dieselben Arten von sensiblen Daten enthalten wie die benutzerdefinierten Metadaten einer laufenden Instanz. Sie können die folgenden Befehle verwenden, um zu untersuchen:

# 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 enthalten normalerweise keine sensiblen Informationen.

Snapshots

Die Snapshots sind Sicherungskopien von Festplatten. Beachten Sie, dass dies nicht dasselbe ist wie das Klonen einer Festplatte (eine weitere verfügbare Funktion). Der Snapshot verwendet die gleiche Verschlüsselung wie die Festplatte, von der er erstellt wurde.

Enumeration

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

Privilege Escalation

Überprüfen Sie den Abschnitt zur Privilegieneskalation von Compute-Instanzen.

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated