GCP - Compute Enum

Reading time: 8 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

GCP VPC & Networking

Saznajte kako ovo funkcioniše u:

GCP - VPC & Networking

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>

Lako možete pronaći instance računara sa otvorenim pravilima vatrozida na https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Instance računara

Ovo je način na koji možete pokrenuti virtuelne mašine unutar GCP. Pogledajte ovu stranicu za više informacija:

GCP - Compute Instances

Enumeracija

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>

Za više informacija o tome kako da SSH ili izmenite metapodatke instance da povećate privilegije, proverite ovu stranicu:

GCP - local privilege escalation ssh pivoting

Povećanje privilegija

Na sledećoj stranici možete proveriti kako da zloupotrebite dozvole za računanje da biste povećali privilegije:

GCP - Compute Privesc

Neautentifikovana enumeracija

GCP - Compute Unauthenticated Enum

Post eksploatacija

GCP - Compute Post Exploitation

Persistencija

GCP - Compute Persistence

Serijski konzolni logovi

Serijski konzolni logovi Compute Engine su funkcija koja vam omogućava da prikazujete i dijagnostikujete logove pokretanja i operativnog sistema vaših virtuelnih mašina.

Serijski konzolni logovi pružaju nizak nivo pregleda procesa pokretanja instance, uključujući poruke jezgra, init skripte i druge sistemske događaje koji se dešavaju tokom pokretanja. Ovo može biti korisno za otklanjanje grešaka u problemima sa pokretanjem, identifikaciju pogrešnih konfiguracija ili softverskih grešaka, ili rešavanje problema sa mrežnom povezanošću.

Ovi logovi mogu otkriti osetljive informacije iz sistemskih logova koje korisnik sa niskim privilegijama obično ne može da vidi, ali uz odgovarajuće IAM dozvole možda ćete moći da ih pročitate.

Možete koristiti sledeću gcloud komandu da upitite serijske port logove (dozvola koja je potrebna je compute.instances.getSerialPortOutput):

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

Startup Scripts output

Moguće je videti izlaz startup skripti iz VM-a koji se izvršava:

bash
sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

Možete koristiti uslugu upravljanja konfiguracijom operativnog sistema da implementirate, pretražujete i održavate dosledne konfiguracije (željeno stanje i softver) za vašu VM instancu (VM). Na Compute Engine-u, morate koristiti guest policies da održavate dosledne softverske konfiguracije na VM-u.

Funkcija upravljanja konfiguracijom operativnog sistema vam omogućava da definišete politike konfiguracije koje specificiraju koji softverski paketi treba da budu instalirani, koje usluge treba da budu omogućene i koji fajlovi ili konfiguracije treba da budu prisutni na vašim VM-ovima. Možete koristiti deklarativni pristup za upravljanje softverskom konfiguracijom vaših VM-ova, što vam omogućava da automatizujete i skalirate vaš proces upravljanja konfiguracijom lakše.

Ovo takođe omogućava prijavljivanje u instance putem IAM dozvola, tako da je veoma korisno za privesc i pivoting.

warning

Da biste omogućili os-config u celom projektu ili u instanci potrebno je samo da postavite metadata ključ enable-oslogin na true na željenom nivou.
Pored toga, možete postaviti metadata enable-oslogin-2fa na true da omogućite 2fa.

Kada to omogućite prilikom kreiranja instance, metadata ključevi će biti automatski postavljeni.

Više o 2fa u OS-config, primenjuje se samo ako je korisnik korisnik, ako je to SA (kao što je compute SA) neće zahtevati ništa dodatno.

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>

Slike

Prilagođene slike

Prilagođene slike za računare mogu sadržati osetljive detalje ili druge ranjive konfiguracije koje možete iskoristiti.

Kada se slika kreira, možete odabrati 3 tipa enkripcije: Korišćenje Google upravljanog ključa (podrazumevano), ključa iz KMS-a, ili sirovog ključa koji daje klijent.

Enumeracija

Možete upitati listu nestandardnih slika u projektu sa sledećom komandom:

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

Možete zatim izvesti virtuelne diskove iz bilo koje slike u više formata. Sledeća komanda bi izvezla sliku test-image u qcow2 formatu, omogućavajući vam da preuzmete datoteku i izgradite VM lokalno za dalju istragu:

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

Eskalacija privilegija

Proverite odeljak o eskalaciji privilegija za Compute Instances.

Prilagođene instance šabloni

An instance template definiše svojstva instance kako bi pomogao u implementaciji doslednih konfiguracija. Ovi mogu sadržati iste vrste osetljivih podataka kao i prilagođeni metapodaci aktivne instance. Možete koristiti sledeće komande za istraživanje:

bash
# 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 biti zanimljivo znati koji disk koriste nove slike, ali ovi šabloni obično neće imati osetljive informacije.

Snapshots

Snapshots su rezervne kopije diskova. Imajte na umu da to nije isto što i kloniranje diska (druga dostupna funkcija).
Snapshot će koristiti istu enkripciju kao disk sa kojeg je uzet.

Enumeration

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

Eskalacija privilegija

Proverite odeljak o eskalaciji privilegija za Compute Instances.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks