htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法:
HackTricksにあなたの会社を広告したい 、またはHackTricksをPDFでダウンロードしたい 場合は、サブスクリプションプラン をチェックしてください!
KMS
KMSについての情報:
page GCP - KMS Enum KMSでは、権限 が組織、フォルダ、プロジェクトから継承される だけでなく、Keyrings からも継承されることに注意してください。
cloudkms.cryptoKeyVersions.useToDecrypt
この権限を使用して、この権限を持っているキーで情報を復号化 することができます。
コピー gcloud kms decrypt \
--location=[LOCATION] \
--keyring = [KEYRING_NAME] \
--key = [KEY_NAME] \
--version = [KEY_VERSION] \
--ciphertext-file = [ENCRYPTED_FILE_PATH] \
--plaintext-file = [DECRYPTED_FILE_PATH]
cloudkms.cryptoKeys.setIamPolicy
この権限を持つ攻撃者は、情報を復号するために自分自身に権限を与えることができます 。
コピー gcloud kms keys add-iam-policy-binding [KEY_NAME] \
--location [LOCATION] \
--keyring [KEYRING_NAME] \
--member [MEMBER] \
--role roles/cloudkms.cryptoKeyDecrypter
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
この委任の仕組みについての概念的な説明は以下の通りです:
Service Account A はKMSの特定のキーを使って直接データを復号するアクセス権を持っています。
Service Account B には useToDecryptViaDelegation
権限が付与されます。これにより、Service Account Aを代表してKMSにデータの復号を要求することができます。
この権限の使用は、復号要求が行われたときにKMSサービスが権限をチェックする方法に暗黙的に含まれています 。
Google Cloud KMS APIを使用して(Pythonや他の言語で)標準的な復号要求を行うと、サービスは要求するサービスアカウントが必要な権限を持っているかどうかをチェックします 。もし**useToDecryptViaDelegation
** 権限を持つサービスアカウントによって要求が行われた場合、KMSはこのアカウントがキーの所有者を代表して復号を要求することを許可されているかどうかを検証します 。
委任の設定
カスタムロールの定義 : カスタムロールを定義するYAMLファイル(例:custom_role.yaml
)を作成します。このファイルには cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
権限を含める必要があります。以下はこのファイルがどのように見えるかの例です:
コピー title : "KMS Decryption via Delegation"
description : "Allows decryption via delegation"
stage : "GA"
includedPermissions :
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
gcloud CLIを使用してカスタムロールを作成する : 以下のコマンドを使用して、Google Cloudプロジェクトにカスタムロールを作成します:
コピー gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml
[YOUR_PROJECT_ID]
をあなたのGoogle CloudプロジェクトIDに置き換えてください。
サービスアカウントにカスタムロールを付与する : この権限を使用するサービスアカウントにカスタムロールを割り当てます。次のコマンドを使用します:
コピー # Give this permission to the service account to impersonate
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[SERVICE_ACCOUNT_B_EMAIL]" \
--role "projects/[PROJECT_ID]/roles/[CUSTOM_ROLE_ID]"
# Give this permission over the project to be able to impersonate any SA
gcloud projects add-iam-policy-binding [YOUR_PROJECT_ID] \
--member = "serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \
--role = "projects/[YOUR_PROJECT_ID]/roles/kms_decryptor_via_delegation"
コピー [YOUR_PROJECT_ID]と[SERVICE_ACCOUNT_EMAIL]をそれぞれあなたのプロジェクトIDとサービスアカウントのメールアドレスに置き換えてください。
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する。
</details>