GCP - Compute Enum

Reading time: 9 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

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

GCP VPC & Networking

इस बारे में जानें कि यह कैसे काम करता है:

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>

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

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

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

GCP - Compute Instances

enumeration

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>

अधिक जानकारी के लिए कि कैसे SSH या मेटाडेटा को अधिकार बढ़ाने के लिए एक उदाहरण को संशोधित करें, इस पृष्ठ को देखें:

GCP - local privilege escalation ssh pivoting

अधिकार बढ़ाना

अगले पृष्ठ में, आप देख सकते हैं कि कैसे अधिकार बढ़ाने के लिए कंप्यूट अनुमतियों का दुरुपयोग करें:

GCP - Compute Privesc

बिना प्रमाणीकरण वाला Enum

GCP - Compute Unauthenticated Enum

पोस्ट एक्सप्लोइटेशन

GCP - Compute Post Exploitation

स्थिरता

GCP - Compute Persistence

सीरियल कंसोल लॉग

कंप्यूट इंजन सीरियल कंसोल लॉग एक विशेषता है जो आपको आपके वर्चुअल मशीन उदाहरणों के बूट और ऑपरेटिंग सिस्टम लॉग को देखने और निदान करने की अनुमति देती है।

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

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

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

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

Startup Scripts output

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

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

OS Configuration Manager

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

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

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

warning

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

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

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

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>

Images

Custom Images

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

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

Enumeration

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

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

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

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

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

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

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

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

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

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

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

स्नैपशॉट

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

एन्यूमरेशन

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

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

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

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

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