AWS - KMS Enum

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

KMS - Key Management Service

AWS Key Management Service(AWS KMS)は、ユーザーが顧客マスターキー(CMKs)を作成および管理するプロセスを簡素化する管理されたサービスとして提示されています。これらのCMKはユーザーデータの暗号化に不可欠です。AWS KMSの注目すべき特徴の1つは、CMKが主にハードウェアセキュリティモジュール(HSMs)で保護されていることで、暗号化キーの保護が強化されています。

KMSは対称暗号を使用しています。これは、情報を休息中に暗号化するために使用されます(たとえば、S3内)。情報を転送中に暗号化する必要がある場合は、TLSなどを使用する必要があります。

KMSはリージョン固有のサービスです。

Amazonの管理者はキーにアクセスできません。彼らはキーを回復することはできず、キーの暗号化を手伝うことはできません。AWSは単にオペレーティングシステムとその基礎となるアプリケーションを管理しますが、暗号化キーの管理やそれらのキーの使用方法は私たちが管理する必要があります。

顧客マスターキー(CMK):4KBまでのデータを暗号化できます。通常、DEK(データ暗号化キー)を作成、暗号化、復号化するために使用されます。その後、DEKはデータを暗号化するために使用されます。

顧客マスターキー(CMK)は、AWS KMSのマスターキーの論理的な表現です。マスターキーの識別子や作成日、説明、キーステートなどのメタデータに加えて、CMKにはデータを暗号化および復号化するために使用されるキー素材が含まれています。CMKを作成すると、デフォルトでAWS KMSはそのCMKのキー素材を生成します。ただし、キー素材を生成せずにCMKを作成し、そのCMKに独自のキー素材をインポートすることもできます。

マスターキーには2種類あります:

  • AWS管理CMK:他のサービスがデータを暗号化するために使用されます。それはそのサービスで初めて暗号化を実装するときに作成されます。3年ごとにローテーションされ、変更することはできません。

  • 顧客管理CMK:柔軟性、ローテーション、構成可能なアクセスおよびキーポリシーを備えています。キーを有効化および無効化できます。

Key Management Service(KMS)のコンテキストでのEnvelope Encryption:データキーでデータを暗号化し、その後マスターキーでデータキーを暗号化する2段階の階層システム。

キーポリシー

これらはKMSでキーを使用およびアクセスできるユーザーを定義します。

デフォルトでは:

  • KMSキーを所有するAWSアカウントに対して完全なアクセス権限を与えます

他のAWSリソースポリシーとは異なり、AWS KMSキーポリシーはアカウントまたはそのユーザーに自動的に権限を与えません。アカウント管理者に権限を与えるには、この権限を提供する明示的なステートメントを含むキーポリシーが必要です。

  • アカウント("AWS": "arn:aws:iam::111122223333:root")を許可しないとIAM権限は機能しません。

  • IAMポリシーを使用してKMSキーへのアクセスを許可することができます。キーポリシーに加えて。

この権限がないと、キーへのアクセスを許可するIAMポリシーは無効ですが、キーへのアクセスを拒否するIAMポリシーは引き続き有効です。

  • アカウント管理者、アカウントルートユーザーなど、削除できないアカウント管理者にアクセス制御権限を与えることで、キーが管理不能になるリスクを軽減します。

デフォルトポリシーの例:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

アカウントが許可されている場合("arn:aws:iam::111122223333:root")、アカウントからのプリンシパルはKMSキーを使用するためにIAM権限が必要です。ただし、たとえばロールのARNがキーポリシーで明示的に許可されている場合、そのロールにはIAM権限が必要ありません。

ポリシーの詳細

ポリシーのプロパティ:

  • JSONベースのドキュメント

  • リソース --> 影響を受けるリソース("*"にすることも可能)

  • アクション --> kms:Encrypt、kms:Decrypt、kms:CreateGrant...(権限)

  • エフェクト --> 許可/拒否

  • プリンシパル --> 影響を受けるarn

  • 条件(オプション) --> 権限を与える条件

グラント:

  • 他のAWSプリンシパルに権限を委任する権限を与える。AWS KMS APIを使用して作成する必要があります。CMK識別子、受領者プリンシパル、必要な操作レベル(Decrypt、Encrypt、GenerateDataKey...)を指定できます。

  • グラントが作成されると、GrantTokenとGratIDが発行されます。

アクセス:

  • キーポリシー経由 -- これが存在する場合、これがIAMポリシーよりも優先されます

  • IAMポリシー経由

  • グラント経由

キー管理者

デフォルトでのキー管理者:

  • KMSを管理する権限がありますが、データの暗号化や復号化の権限はありません

  • キー管理者リストに追加できるのはIAMユーザーとロールのみです(グループは不可)

  • 外部CMKを使用する場合、キー管理者には鍵素材のインポート権限があります

CMKのローテーション

  • 同じ鍵をそのままにしておくと、その鍵で暗号化されるデータが増え、その鍵が侵害された場合、データの被爆範囲が広がります。さらに、鍵がアクティブな時間が長いほど、侵害される可能性が高くなります。

  • KMSは顧客鍵を365日ごとにローテーションします(または必要に応じて手動で実行できます)、AWSによって管理される鍵は3年ごとにローテーションされ、この時間は変更できません。

  • 古い鍵は保持され、ローテーション前に暗号化されたデータを復号化するために使用されます。

  • 侵害が発生した場合、鍵をローテーションしても脅威は取り除かれません。侵害された鍵で暗号化されたすべてのデータを復号化することが可能です。ただし、新しいデータは新しい鍵で暗号化されます。

  • CMK無効または削除保留の状態にある場合、KMSはCMKが再度有効になるか削除がキャンセルされるまで、鍵のローテーションを実行しません

手動ローテーション

  • 新しいCMKを作成する必要があります。その後、新しいCMK-IDが作成されるため、新しいCMK-IDを参照するようにアプリケーションを更新する必要があります

  • このプロセスを簡略化するために、エイリアスを使用してキーIDを参照し、エイリアスが参照しているキーを更新するだけで済ませることができます。

  • 古いファイルを復号化するために、古い鍵を保持する必要があります

オンプレミスの鍵インフラストラクチャから鍵をインポートできます。

その他の関連するKMS情報

KMSは、月間すべてのサービスから受信した暗号化/復号化リクエストの数に応じて価格が設定されています。

KMSには、CloudTrailとの完全な監査およびコンプライアンス統合があります。ここで、KMSで実行されたすべての変更を監査できます。

KMSポリシーでは、次のことができます:

  • データキーを作成できるユーザーを制限し、これらのキーを使用できるサービスを制限します

  • システムのアクセスを暗号化のみ、復号化のみ、または両方に制限します

  • キーへのシステムアクセスをリージョン間で許可するように定義します(KMSをホストするリージョンで障害が発生すると、他のリージョンのシステムの可用性に影響を与える可能性があるため、推奨されていません)。

リージョン間でキーを同期化したり移動/コピーしたりすることはできません。リージョン間でアクセスを許可するためのルールを定義することしかできません。

列挙

aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores

Privesc

pageAWS - KMS Privesc

Post Exploitation

pageAWS - KMS Post Exploitation

Persistence

pageAWS - KMS Persistence

References

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

最終更新