# GCP - IAM Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

## IAM <a href="#service-account-impersonation" id="service-account-impersonation"></a>

You can find further information about IAM in:

{{#ref}}
../gcp-services/gcp-iam-and-org-policies-enum.md
{{#endref}}

### 管理コンソールへのアクセス付与 <a href="#granting-access-to-management-console" id="granting-access-to-management-console"></a>

Access to the [GCP management console](https://console.cloud.google.com) is **provided to user accounts, not service accounts**。Web インターフェースにログインするには、自分が管理する **Google account** にアクセス権を付与できます。これは一般的な "**@gmail.com**" アカウントで構いません。**対象組織のメンバーである必要はありません**。

ただし、一般的な "@gmail.com" アカウントにプリミティブロールの **Owner** を**付与**するには、**web console** を使用する必要があります。`gcloud` は Editor を超える権限を付与しようとするとエラーになります。

既存プロジェクトに対してユーザーにプリミティブロール **Editor** を付与するには、次のコマンドを使用できます：
```bash
gcloud projects add-iam-policy-binding [PROJECT] --member user:[EMAIL] --role roles/editor
```
If you succeeded here, try **Web インターフェースにアクセス**して、そこから探索してみてください。

This is the **gcloud tool を使用して割り当てられる最高レベルです**。

### IAM コンポーネントを削除 `iam.*.delete`
`iam.*.delete` 権限（例: `iam.roles.delete`, `iam.serviceAccountApiKeyBindings.delete`, `iam.serviceAccountKeys.delete` など）は、カスタムロール、API キーバインディング、サービスアカウントキー、およびサービスアカウント自体など、重要な IAM コンポーネントを削除することをアイデンティティに許可します。攻撃者の手に渡ると、正当なアクセス手段を削除してサービス拒否（DoS）を引き起こすことが可能になります。

そのような攻撃を行うには、例えばロールを削除することが可能です:
```bash
gcloud iam roles delete <ROLE_ID> --project=<PROJECT_ID>
```
### `iam.serviceAccountKeys.disable` || `iam.serviceAccounts.disable`

`iam.serviceAccountKeys.disable` と `iam.serviceAccounts.disable` の権限があれば、アクティブな service account keys や service accounts を無効化できます。攻撃者の手に渡ると、運用の妨害、denial of service の発生、または正当な認証情報の使用を阻止して incident response を妨げるために利用される可能性があります。

Service Account を無効化するには、次のコマンドを使用します：
```bash
gcloud iam service-accounts disable <SA_EMAIL> --project=<PROJECT_ID>
```
Service Account のキーを無効にするには、次のコマンドを使用します:
```bash
gcloud iam service-accounts keys disable <KEY_ID> --iam-account=<SA_EMAIL>
```
### `iam.*.undelete`
`iam.*.undelete` 権限は、API key bindings、custom roles、service accounts のような以前に削除された要素を復元することを可能にします。攻撃者の手に渡ると、対策を元に戻して（削除されたアクセスの回復）、永続化のために削除された侵害ベクトルを再構築したり、修復措置を回避してインシデントの封じ込めを困難にするために利用される可能性があります。
```bash
gcloud iam service-accounts undelete "${SA_ID}" --project="${PROJECT}"
```
{{#include ../../../banners/hacktricks-training.md}}
