GCP - Compute Post Exploitation
Compute
ComputeおよびVPC(ネットワーキング)の詳細については、以下をチェックしてください:
pageGCP - Compute Enumイメージのエクスポートとローカルでの検査
これにより、攻撃者は既存のイメージ内に含まれるデータにアクセスしたり、実行中のVMの新しいイメージを作成してそのデータにアクセスしたりできますが、実行中のVMにアクセス権がなくても可能です。
VMイメージをバケットにエクスポートしてから、次のコマンドでローカルにダウンロードしてマウントすることができます:
このアクションを実行するために、攻撃者はストレージバケットに対する特権と、確実に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
スナップショットとディスクのローカルエクスポートと検査
スナップショットとディスクを直接エクスポートすることはできませんが、スナップショットをディスクに変換し、ディスクをイメージに変換し、前のセクションに従って、そのイメージをローカルで検査することは可能です
イメージを検査してVMを作成する
攻撃者がイメージを作成した場所からイメージに保存されているデータまたは実行中のVM内部にアクセスすることを目的として、イメージに外部アカウントへのアクセス権を付与することが可能です。
そして、それを元に新しいVMを作成します:
もしイメージに外部アカウントアクセス権限を与えられない場合は、被害者のプロジェクトでそのイメージを使用してVMを起動し、メタデータを実行して逆シェルを作成し、次のパラメータを追加してイメージにアクセスできます:
スナップショット/ディスクの検査とVMへのアタッチ
ディスクまたはスナップショットに保存されているデータにアクセスする目的で、スナップショットをディスクに変換し、ディスクをイメージに変換して前の手順に従うことができます。
または、外部アカウントにディスクへのアクセス権限を付与することもできます(スナップショットが始点の場合は、スナップショットにアクセス権限を付与するか、それからディスクを作成します)。
インスタンスにディスクをアタッチします:
VM内のディスクをマウントします:
VMにSSH接続します:
ディスクを特定します:VM内に入ったら、ディスクデバイスをリストアップして新しいディスクを特定します。通常、
/dev/sdb
、/dev/sdc
などとして見つけることができます。ディスクをフォーマットしてマウントします(新しいまたは生ディスクの場合):
マウントポイントを作成します:
ディスクをマウントします:
スナップショットまたはディスクに外部プロジェクトへのアクセス権を与えることができない場合は、これらのアクションをスナップショット/ディスクと同じプロジェクト内のインスタンスで実行する必要があります。
最終更新