GCP - Compute Enum

Reading time: 8 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

GCP VPC & Networking

Jifunze jinsi hii inavyofanya kazi katika:

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>

Unaweza kwa urahisi kupata mifano ya kompyuta zenye sheria za moto wazi na https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Mifano ya kompyuta

Hii ndiyo njia unaweza kukimbia mashine za virtual ndani ya GCP. Angalia ukurasa huu kwa maelezo zaidi:

GCP - Compute Instances

Uhesabu

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>

Kwa maelezo zaidi kuhusu jinsi ya SSH au kubadilisha metadata ya mfano ili kuinua mamlaka, angalia ukurasa huu:

GCP - local privilege escalation ssh pivoting

Kuinua Mamlaka

Katika ukurasa ufuatao, unaweza kuangalia jinsi ya kutumia ruhusa za kompyuta ili kuinua mamlaka:

GCP - Compute Privesc

Enum Isiyo na Utambulisho

GCP - Compute Unauthenticated Enum

Baada ya Kutekeleza

GCP - Compute Post Exploitation

Kudumu

GCP - Compute Persistence

Kumbukumbu za Mkononi wa Serial

Kumbukumbu za Mkononi wa Serial za Compute Engine ni kipengele kinachokuruhusu kuangalia na kuchanganua kumbukumbu za kuanzisha na mfumo wa uendeshaji wa mifano yako ya mashine ya virtual.

Kumbukumbu za Mkononi wa Serial zinatoa mtazamo wa kiwango cha chini wa mchakato wa kuanzisha wa mfano, ikiwa ni pamoja na ujumbe wa kernel, skripti za kuanzisha, na matukio mengine ya mfumo yanayotokea wakati wa kuanzisha. Hii inaweza kuwa muhimu kwa kutatua matatizo ya kuanzisha, kubaini makosa ya usanidi au makosa ya programu, au kutatua matatizo ya muunganisho wa mtandao.

Kumbukumbu hizi zinaweza kufichua taarifa nyeti kutoka kwa kumbukumbu za mfumo ambazo mtumiaji mwenye mamlaka ya chini huenda asione kawaida, lakini kwa ruhusa sahihi za IAM unaweza kuwa na uwezo wa kuzisoma.

Unaweza kutumia amri ifuatayo ya gcloud kuuliza kumbukumbu za mkononi wa serial (ruhusa inayohitajika ni compute.instances.getSerialPortOutput):

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

Startup Scripts output

Inawezekana kuona matokeo ya scripts za kuanzisha kutoka kwa VM inayotekeleza:

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

OS Configuration Manager

Unaweza kutumia huduma ya usimamizi wa usanidi wa OS ili kupeleka, kuuliza, na kudumisha usanidi thabiti (hali inayotakiwa na programu) kwa ajili ya mfano wako wa VM (VM). Kwenye Compute Engine, lazima utumie sera za wageni kudumisha usanidi thabiti wa programu kwenye VM.

Kipengele cha usimamizi wa usanidi wa OS kinakuruhusu kufafanua sera za usanidi ambazo zinaeleza ni pakiti zipi za programu zinapaswa kufungwa, ni huduma zipi zinapaswa kuwezeshwa, na ni faili au usanidi gani unapaswa kuwepo kwenye VMs zako. Unaweza kutumia njia ya kutangaza katika usimamizi wa usanidi wa programu za VMs zako, ambayo inakuwezesha kujiandaa na kupanua mchakato wako wa usimamizi wa usanidi kwa urahisi zaidi.

Hii pia inaruhusu kuingia kwenye mifano kupitia ruhusa za IAM, hivyo ni faida kubwa kwa privesc na pivoting.

warning

Ili kuwezesha os-config katika mradi mzima au katika mfano unahitaji tu kuweka ufunguo wa metadata enable-oslogin kuwa true kwenye kiwango kinachotakiwa.
Zaidi ya hayo, unaweza kuweka metadata enable-oslogin-2fa kuwa true ili kuwezesha 2fa.

Unapoiwezesha unapounda mfano, ufunguo wa metadata utawekwa kiotomatiki.

Zaidi kuhusu 2fa katika OS-config, inatumika tu ikiwa mtumiaji ni mtumiaji, ikiwa ni SA (kama SA ya compute) haitahitaji chochote cha ziada.

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>

Picha

Picha za Kijadi

Picha za kompyuta za kijadi zinaweza kuwa na maelezo nyeti au mipangilio mingine hatarishi ambayo unaweza kutumia.

Wakati picha inaundwa unaweza kuchagua aina 3 za usimbuaji: Kutumia funguo zinazodhibitiwa na Google (kawaida), funguo kutoka KMS, au funguo mbichi iliyotolewa na mteja.

Uhesabu

Unaweza kuuliza orodha ya picha zisizo za kawaida katika mradi kwa amri ifuatayo:

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

Unaweza kisha kuhamasisha diski za virtual kutoka kwa picha yoyote katika muundo mbalimbali. Amri ifuatayo itahamisha picha test-image katika muundo wa qcow2, ikikuruhusu kupakua faili na kujenga VM kwa ndani kwa uchunguzi zaidi:

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

Kuinua Haki

Angalia sehemu ya kuinua haki za Compute Instances.

Mifano ya Kijalala Maalum

Mifano ya kijalala inafafanua mali za kijalala kusaidia kupeleka usanidi sawa. Hizi zinaweza kuwa na aina sawa za data nyeti kama metadata maalum ya kijalala kinachofanya kazi. Unaweza kutumia amri zifuatazo kuchunguza:

bash
# List the available templates
gcloud compute instance-templates list

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

Inaweza kuwa ya kuvutia kujua ni diski gani picha mpya zinatumia, lakini hizi mifano kwa kawaida hazitakuwa na taarifa nyeti.

Snapshots

Snapshots ni nakala za diski. Kumbuka kwamba hii si sawa na kunakili diski (kipengele kingine kinachopatikana).
Snapshot itatumia sifuri sawa na diski ambayo imetolewa kutoka.

Enumeration

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

Kuinua Haki

Angalia sehemu ya kuinua haki za Compute Instances.

Marejeleo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks