GCP - Compute Enum

Wspieraj HackTricks

GCP VPC & Networking

Dowiedz się, jak to działa w:

GCP - VPC & Networking

Enumeracja

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

Łatwo znajdziesz compute instances z otwartymi regułami firewall za pomocą https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Compute instances

To jest sposób, w jaki możesz uruchamiać maszyny wirtualne w GCP. Sprawdź tę stronę, aby uzyskać więcej informacji:

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

Aby uzyskać więcej informacji na temat SSH lub modyfikacji metadanych instancji w celu eskalacji uprawnień, sprawdź tę stronę:

GCP - local privilege escalation ssh pivoting

Eskalacja Uprawnień

Na poniższej stronie możesz sprawdzić, jak wykorzystać uprawnienia compute do eskalacji uprawnień:

GCP - Compute Privesc

Niezautoryzowane Enum

GCP - Compute Unauthenticated Enum

Post Exploitation

GCP - Compute Post Exploitation

Trwałość

GCP - Compute Persistence

Logi Konsoli Szeregowej

Compute Engine Serial Console Logs to funkcja, która pozwala na przeglądanie i diagnozowanie logów rozruchu i systemu operacyjnego instancji wirtualnych maszyn.

Logi Konsoli Szeregowej zapewniają niskopoziomowy widok procesu rozruchu instancji, w tym komunikaty jądra, skrypty inicjalizacyjne i inne zdarzenia systemowe, które występują podczas rozruchu. Może to być przydatne do debugowania problemów z rozruchem, identyfikowania błędnych konfiguracji lub błędów oprogramowania, czy rozwiązywania problemów z łącznością sieciową.

Te logi mogą ujawniać wrażliwe informacje z logów systemowych, które użytkownik o niskich uprawnieniach zazwyczaj nie widzi, ale z odpowiednimi uprawnieniami IAM możesz je odczytać.

Możesz użyć następującego polecenia gcloud do zapytania logów portu szeregowego (wymagane uprawnienie to compute.instances.getSerialPortOutput):

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

Startup Scripts output

Możliwe jest zobaczenie wyniku skryptów startowych z VM, wykonując:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

Możesz użyć usługi zarządzania konfiguracją OS, aby wdrażać, zapytania i utrzymywać spójne konfiguracje (pożądany stan i oprogramowanie) dla swojej instancji VM (VM). Na Compute Engine musisz używać polityk gościa, aby utrzymywać spójne konfiguracje oprogramowania na VM.

Funkcja zarządzania konfiguracją OS pozwala definiować polityki konfiguracji, które określają, które pakiety oprogramowania powinny być zainstalowane, które usługi powinny być włączone i które pliki lub konfiguracje powinny być obecne na Twoich VM. Możesz używać podejścia deklaratywnego do zarządzania konfiguracją oprogramowania swoich VM, co umożliwia automatyzację i skalowanie procesu zarządzania konfiguracją w łatwiejszy sposób.

To również pozwala na logowanie się do instancji za pomocą uprawnień IAM, więc jest to bardzo użyteczne dla privesc i pivoting.

Aby włączyć os-config w całym projekcie lub w instancji, wystarczy ustawić klucz metadata enable-oslogin na true na pożądanym poziomie. Dodatkowo, możesz ustawić metadane enable-oslogin-2fa na true, aby włączyć 2fa.

Kiedy włączysz to podczas tworzenia instancji, klucze metadanych zostaną automatycznie ustawione.

Więcej o 2fa w OS-config, dotyczy to tylko, jeśli użytkownik jest użytkownikiem, jeśli jest to SA (jak compute SA), nie będzie wymagać niczego dodatkowego.

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>

Images

Custom Images

Niestandardowe obrazy compute mogą zawierać wrażliwe szczegóły lub inne podatne konfiguracje, które możesz wykorzystać.

Podczas tworzenia obrazu możesz wybrać 3 typy szyfrowania: używając klucza zarządzanego przez Google (domyślnie), klucza z KMS, lub surowego klucza podanego przez klienta.

Enumeration

Możesz zapytać o listę niestandardowych obrazów w projekcie za pomocą następującego polecenia:

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

Możesz następnie eksportować wirtualne dyski z dowolnego obrazu w wielu formatach. Następujące polecenie wyeksportuje obraz test-image w formacie qcow2, umożliwiając pobranie pliku i zbudowanie VM lokalnie do dalszego badania:

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

Sprawdź sekcję eskalacji uprawnień Compute Instances.

Custom Instance Templates

Instance template definiuje właściwości instancji w celu ułatwienia wdrażania spójnych konfiguracji. Mogą one zawierać te same typy wrażliwych danych, co niestandardowe metadane działającej instancji. Możesz użyć następujących poleceń do zbadania:

# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

Może być interesujące, aby wiedzieć, z jakiego dysku korzystają nowe obrazy, ale te szablony zazwyczaj nie zawierają wrażliwych informacji.

Snapshots

Snapshots to kopie zapasowe dysków. Zauważ, że to nie to samo co klonowanie dysku (inna dostępna funkcja). Snapshot będzie używać tego samego szyfrowania co dysk, z którego został wykonany.

Enumeration

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

Privilege Escalation

Sprawdź sekcję eskalacji uprawnień Compute Instances.

References

Wspieraj HackTricks

Last updated