GCP - KMS Enum
Reading time: 8 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を提出してハッキングトリックを共有してください。
KMS
Cloud Key Management Serviceは、暗号鍵の安全なストレージとして機能し、機密データの暗号化および復号化などの操作に不可欠です。これらの鍵はキーリング内に整理され、構造的な管理が可能です。さらに、アクセス制御は個々の鍵レベルまたは全体のキーリングに対して詳細に設定でき、権限がセキュリティ要件に正確に一致するようにします。
KMSキーリングはデフォルトでグローバルに作成されるため、そのキーリング内の鍵は任意のリージョンからアクセス可能です。ただし、特定のリージョンに特定のキーリングを作成することも可能です。
Key Protection Level
- Software keys: ソフトウェアキーはKMSによって完全にソフトウェアで作成および管理されます。これらの鍵はハードウェアセキュリティモジュール(HSM)によって保護されておらず、テストおよび開発目的で使用できます。ソフトウェアキーは本番環境での使用は推奨されません。なぜなら、セキュリティが低く、攻撃に対して脆弱だからです。
- Cloud-hosted keys: クラウドホストされた鍵は、KMSによってクラウド内で作成および管理され、高可用性で信頼性の高いインフラストラクチャを使用します。これらの鍵はHSMによって保護されていますが、HSMは特定の顧客に専用ではありません。クラウドホストされた鍵は、ほとんどの本番使用ケースに適しています。
- External keys: 外部鍵はKMSの外部で作成および管理され、暗号操作に使用するためにKMSにインポートされます。外部鍵は顧客の好みに応じてハードウェアセキュリティモジュール(HSM)またはソフトウェアライブラリに保存できます。
Key Purposes
- Symmetric encryption/decryption: 単一の鍵を使用してデータを暗号化および復号化するために使用されます。対称鍵は、大量のデータを暗号化および復号化するのに高速で効率的です。
- Supported: cryptoKeys.encrypt, cryptoKeys.decrypt
- Asymmetric Signing: 鍵を共有せずに二者間の安全な通信に使用されます。非対称鍵は、公開鍵と秘密鍵のペアで構成されます。公開鍵は他者と共有され、秘密鍵は秘密に保たれます。
- Supported: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- Asymmetric Decryption: メッセージまたはデータの真正性を確認するために使用されます。デジタル署名は秘密鍵を使用して作成され、対応する公開鍵を使用して検証できます。
- Supported: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC Signing: 秘密鍵を使用してメッセージ認証コード(MAC)を作成することにより、データの整合性と真正性を確保するために使用されます。HMACは、ネットワークプロトコルやソフトウェアアプリケーションでメッセージ認証に一般的に使用されます。
- Supported: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Rotation Period & Programmed for destruction period
デフォルトでは、90日ごとですが、簡単にかつ完全にカスタマイズ可能です。
「プログラムされた破壊」期間は、ユーザーが鍵の削除を要求してからの時間であり、鍵が削除されるまでの期間です。鍵が作成された後は変更できません(デフォルトは1日)。
Primary Version
各KMS鍵は複数のバージョンを持つことができ、そのうちの1つはデフォルトのものでなければなりません。これは、KMS鍵と対話する際にバージョンが指定されていない場合に使用されるものです。
Enumeration
鍵をリストする権限がある場合、これがそれらにアクセスする方法です:
# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>
# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>
# Encrypt a file using one of your keys
gcloud kms encrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global
# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global
権限昇格
ポストエクスプロイト
参考文献
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を提出してハッキングトリックを共有してください。