GCP - Compute Enum

HackTricks का समर्थन करें

GCP VPC & Networking

इसका काम कैसे होता है, इसके बारे में जानें:

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

आप आसानी से खुले फ़ायरवॉल नियमों के साथ कंप्यूट इंस्टेंस ढूंढ सकते हैं https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

कंप्यूट इंस्टेंस

यह वह तरीका है जिससे आप GCP के अंदर वर्चुअल मशीनें चला सकते हैं। अधिक जानकारी के लिए इस पृष्ठ की जांच करें:

GCP - Compute Instances

एन्यूमरेशन

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

For more information about how to SSH or modify the metadata of an instance to escalate privileges, check this page:

GCP - local privilege escalation ssh pivoting

Privilege Escalation

In the following page, you can check how to abuse compute permissions to escalate privileges:

GCP - Compute Privesc

Unauthenticated Enum

GCP - Compute Unauthenticated Enum

Post Exploitation

GCP - Compute Post Exploitation

Persistence

GCP - Compute Persistence

Serial Console Logs

Compute Engine Serial Console Logs एक फीचर है जो आपको अपने वर्चुअल मशीन इंस्टेंस के बूट और ऑपरेटिंग सिस्टम लॉग्स को देखने और निदान करने की अनुमति देता है।

Serial Console Logs इंस्टेंस के बूट प्रक्रिया का एक निम्न-स्तरीय दृश्य प्रदान करते हैं, जिसमें कर्नेल संदेश, इनिट स्क्रिप्ट, और अन्य सिस्टम घटनाएँ शामिल हैं जो बूट-अप के दौरान होती हैं। यह बूट समस्याओं को डिबग करने, गलत कॉन्फ़िगरेशन या सॉफ़्टवेयर त्रुटियों की पहचान करने, या नेटवर्क कनेक्टिविटी समस्याओं को हल करने के लिए उपयोगी हो सकता है।

ये लॉग संवेदनशील जानकारी को उजागर कर सकते हैं जो सिस्टम लॉग से होती है जिसे निम्न स्तर के उपयोगकर्ता आमतौर पर नहीं देख सकते, लेकिन उचित IAM अनुमतियों के साथ आप उन्हें पढ़ने में सक्षम हो सकते हैं।

आप निम्नलिखित gcloud command का उपयोग करके सीरियल पोर्ट लॉग्स को क्वेरी कर सकते हैं (आवश्यक अनुमति compute.instances.getSerialPortOutput है):

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

Startup Scripts output

यह संभव है कि स्टार्टअप स्क्रिप्ट्स का आउटपुट VM से देखा जा सके जो निष्पादित हो रहा है:

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

आप OS कॉन्फ़िगरेशन प्रबंधन सेवा का उपयोग VM इंस्टेंस (VM) के लिए निरंतर कॉन्फ़िगरेशन (इच्छित स्थिति और सॉफ़्टवेयर) को तैनात, क्वेरी और बनाए रखने के लिए कर सकते हैं। Compute Engine पर, आपको VM पर निरंतर सॉफ़्टवेयर कॉन्फ़िगरेशन बनाए रखने के लिए guest policies का उपयोग करना होगा।

OS कॉन्फ़िगरेशन प्रबंधन सुविधा आपको कॉन्फ़िगरेशन नीतियों को परिभाषित करने की अनुमति देती है जो यह निर्दिष्ट करती हैं कि कौन से सॉफ़्टवेयर पैकेज स्थापित किए जाने चाहिए, कौन से सेवाएँ सक्षम की जानी चाहिए, और आपके VMs पर कौन से फ़ाइलें या कॉन्फ़िगरेशन मौजूद होने चाहिए। आप अपने VMs के सॉफ़्टवेयर कॉन्फ़िगरेशन को प्रबंधित करने के लिए एक घोषणात्मक दृष्टिकोण का उपयोग कर सकते हैं, जो आपको अपने कॉन्फ़िगरेशन प्रबंधन प्रक्रिया को स्वचालित और स्केल करने में अधिक आसानी प्रदान करता है।

यह IAM अनुमतियों के माध्यम से इंस्टेंस में लॉगिन करने की भी अनुमति देता है, इसलिए यह privesc और pivoting के लिए बहुत उपयोगी है

किसी पूरे प्रोजेक्ट या इंस्टेंस में os-config सक्षम करने के लिए आपको बस metadata कुंजी enable-oslogin को true पर सेट करने की आवश्यकता है। इसके अलावा, आप 2fa सक्षम करने के लिए मेटाडेटा enable-oslogin-2fa को true पर सेट कर सकते हैं।

जब आप इसे एक इंस्टेंस बनाते समय सक्षम करते हैं, तो मेटाडेटा कुंजियाँ स्वचालित रूप से सेट की जाएंगी।

OS-config में 2fa के बारे में अधिक, यह केवल तब लागू होता है जब उपयोगकर्ता एक उपयोगकर्ता हो, यदि यह एक SA (जैसे कि कंप्यूट SA) है तो इसे कुछ अतिरिक्त की आवश्यकता नहीं होगी।

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

कस्टम कंप्यूट इमेज में संवेदनशील विवरण या अन्य कमजोर कॉन्फ़िगरेशन हो सकते हैं जिन्हें आप भेद्यता के लिए उपयोग कर सकते हैं।

जब एक इमेज बनाई जाती है, तो आप 3 प्रकार की एन्क्रिप्शन चुन सकते हैं: गूगल प्रबंधित कुंजी (डिफ़ॉल्ट), KMS से कुंजी, या क्लाइंट द्वारा दी गई कच्ची कुंजी

Enumeration

आप निम्नलिखित कमांड के साथ एक प्रोजेक्ट में गैर-मानक इमेज की सूची को क्वेरी कर सकते हैं:

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

आप फिर निर्यात वर्चुअल डिस्क को किसी भी इमेज से कई प्रारूपों में कर सकते हैं। निम्नलिखित कमांड इमेज test-image को qcow2 प्रारूप में निर्यात करेगी, जिससे आप फ़ाइल डाउनलोड कर सकते हैं और आगे की जांच के लिए स्थानीय रूप से एक VM बना सकते हैं:

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

विशेषाधिकार वृद्धि

Compute Instances विशेषाधिकार वृद्धि अनुभाग की जांच करें।

कस्टम इंस्टेंस टेम्पलेट्स

एक इंस्टेंस टेम्पलेट इंस्टेंस गुणों को परिभाषित करता है ताकि सुसंगत कॉन्फ़िगरेशन को तैनात करने में मदद मिल सके। इनमें चल रहे इंस्टेंस के कस्टम मेटाडेटा के समान प्रकार के संवेदनशील डेटा हो सकते हैं। आप जांचने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं:

# List the available templates
gcloud compute instance-templates list

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

यह जानना दिलचस्प हो सकता है कि नए इमेज किस डिस्क का उपयोग कर रहे हैं, लेकिन ये टेम्पलेट आमतौर पर संवेदनशील जानकारी नहीं रखेंगे।

Snapshots

Snapshots डिस्क के बैकअप होते हैं। ध्यान दें कि यह डिस्क को क्लोन करने के समान नहीं है (एक और उपलब्ध विशेषता)। Snapshot उस डिस्क के समान एन्क्रिप्शन का उपयोग करेगा जिससे इसे लिया गया है।

Enumeration

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

विशेषाधिकार वृद्धि

Compute Instances विशेषाधिकार वृद्धि अनुभाग की जांच करें।

संदर्भ

HackTricks का समर्थन करें

Last updated