mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
+28
-29
@@ -10,15 +10,15 @@
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Шифрування/Розшифрування інформації
|
||||
### Encrypt/Decrypt information
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
`fileb://` and `file://` — це URI-схеми, що використовуються в командах AWS CLI для вказання шляху до локальних файлів:
|
||||
|
||||
- `fileb://:` зчитує файл у двійковому режимі, зазвичай використовується для бінарних (не текстових) файлів.
|
||||
- `file://:` зчитує файл у текстовому режимі, зазвичай використовується для простих текстових файлів, скриптів або JSON без спеціальних вимог кодування.
|
||||
- `fileb://:` читає файл у бінарному режимі, зазвичай використовується для файлів, що не є текстовими.
|
||||
- `file://:` читає файл у текстовому режимі, зазвичай використовується для простих текстових файлів, скриптів або JSON, які не мають спеціальних вимог кодування.
|
||||
|
||||
> [!TIP]
|
||||
> Зверніть увагу, що якщо ви хочете розшифрувати дані, що знаходяться у файлі, файл має містити двійкові дані, а не base64-кодовані дані. (fileb://)
|
||||
> Зверніть увагу, що якщо ви хочете decrypt деякі дані всередині файлу, файл має містити бінарні дані, а не base64 закодовані дані. (fileb://)
|
||||
|
||||
- Використання **симетричного** ключа
|
||||
```bash
|
||||
@@ -60,15 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Атакуючий із привілеями доступу до KMS може змінити KMS policy ключів і **grant his account access over them**, видаливши доступ, наданий легітимному обліковому запису.
|
||||
Зловмисник, який має привілеї в KMS, може змінити політику KMS для ключів і **надати своєму обліковому запису доступ до них**, вилучивши доступ, наданий легітимному обліковому запису.
|
||||
|
||||
Тоді користувачі легітимного облікового запису не зможуть отримати доступ до жодної інформації жодного сервісу, яка була зашифрована цими ключами, створюючи простий, але ефективний ransomware проти облікового запису.
|
||||
Тоді користувачі цього легітимного облікового запису не зможуть отримати доступ до жодної інформації сервісів, зашифрованої цими ключами, що створює простий, але ефективний ransomware проти облікового запису.
|
||||
|
||||
> [!WARNING]
|
||||
> Зверніть увагу, що **AWS managed keys aren't affected** цим нападом, уразливі лише **Customer managed keys**.
|
||||
|
||||
> [!WARNING]
|
||||
> Також зауважте необхідність використовувати параметр **`--bypass-policy-lockout-safety-check`** (відсутність цієї опції у веб-консолі робить цю атаку можливою лише з CLI).
|
||||
> Зверніть увагу, що **AWS managed keys aren't affected** цією атакою, лише **Customer managed keys**.
|
||||
>
|
||||
> Також зверніть увагу на необхідність використання параметра **`--bypass-policy-lockout-safety-check`** (відсутність цієї опції у веб-консолі робить цю атаку можливою лише з CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -93,28 +92,28 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Зверніть увагу, якщо ви зміните ту політику й надасте доступ лише зовнішньому акаунту, а потім з цього зовнішнього акаунту спробуєте встановити нову політику, щоб **повернути доступ до початкового акаунту, у вас не вийде, бо дія Put Polocy не може бути виконана з крос-акаунта**.
|
||||
> Зверніть увагу: якщо ви зміните цю політику й надасте доступ лише зовнішньому акаунту, а потім з цього зовнішнього акаунту спробуєте встановити нову політику, щоб **повернути доступ оригінальному акаунту, ви не зможете, бо дію Put Polocy не можна виконати з cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generic KMS Ransomware
|
||||
|
||||
Існує ще один спосіб реалізації глобального KMS Ransomware, що включає такі кроки:
|
||||
Існує інший спосіб виконати глобальний KMS Ransomware, який включає такі кроки:
|
||||
|
||||
- Створити новий **key with a key material**, імпортований зловмисником
|
||||
- **Re-encrypt older data** жертви, зашифровані попередньою версією, новою версією
|
||||
- **Re-encrypt older data** жертви, зашифровані попередньою версією, за допомогою нової
|
||||
- **Delete the KMS key**
|
||||
- Тепер лише зловмисник, який має оригінальний ключовий матеріал, зможе розшифрувати дані
|
||||
- Тепер лише зловмисник, у якого є оригінальний key material, зможе розшифрувати зашифровані дані
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
З дозволом `kms:DeleteImportedKeyMaterial` суб'єкт може видалити імпортований ключовий матеріал з CMKs із `Origin=EXTERNAL` (CMKs, що імпортували свій ключовий матеріал), роблячи їх нездатними розшифрувати дані. Ця дія є руйнівною та незворотною, якщо не буде реімпортовано сумісного матеріалу, що дозволяє зловмиснику фактично спричинити втрату даних, схожу на ransomware, зробивши зашифровану інформацію назавжди недоступною.
|
||||
Маючи дозвіл `kms:DeleteImportedKeyMaterial`, актор може видалити імпортований key material з CMKs з `Origin=EXTERNAL` (CMKs, що імпортували свій key material), роблячи їх нездатними розшифрувати дані. Ця дія є руйнівною і незворотною, якщо сумісний матеріал не буде повторно імпортовано, що дозволяє зловмиснику фактично спричинити ransomware-like втрату даних, зробивши зашифровану інформацію назавжди недоступною.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Знищення keys
|
||||
### Destroy keys
|
||||
|
||||
Знищення keys може призвести до DoS.
|
||||
Destroying keys — можна виконати DoS.
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -124,8 +123,8 @@ aws kms schedule-key-deletion \
|
||||
> [!CAUTION]
|
||||
> Зауважте, що AWS тепер **перешкоджає виконанню попередніх дій з іншого облікового запису:**
|
||||
|
||||
### Change or delete Alias
|
||||
Ця атака видаляє або перенаправляє AWS KMS aliases, порушуючи key resolution і спричиняючи негайні збої в будь-яких сервісах, які покладаються на ці aliases, що призводить до denial-of-service. Маючи дозволи типу `kms:DeleteAlias` або `kms:UpdateAlias`, зловмисник може видалити або перенаправити aliases і порушити криптографічні операції (наприклад, encrypt, describe). Будь-який сервіс, що посилається на alias замість key ID, може не працювати доти, поки alias не буде відновлено або правильно перенаправлено.
|
||||
### Змінити або видалити Alias
|
||||
Ця атака видаляє або перенаправляє AWS KMS aliases, порушуючи розв'язування ключів і спричиняючи негайні збої в будь-яких сервісах, що покладаються на ці aliases, внаслідок чого виникає denial-of-service. Маючи дозволи на кшталт `kms:DeleteAlias` або `kms:UpdateAlias`, зловмисник може видалити або перенаправити aliases і порушити криптографічні операції (наприклад, encrypt, describe). Будь-який сервіс, що посилається на alias замість key ID, може не працювати, доки alias не буде відновлено або правильно перенаправлено.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -136,7 +135,7 @@ aws kms update-alias \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Скасування видалення ключа
|
||||
Маючи дозволи на зразок `kms:CancelKeyDeletion` та `kms:EnableKey`, зловмисник може скасувати заплановане видалення AWS KMS customer master key та згодом знову його активувати. Це відновлює ключ (спочатку в стані Disabled) і повертає його здатність розшифровувати раніше захищені дані, що дозволяє exfiltration.
|
||||
За наявності дозволів на кшталт `kms:CancelKeyDeletion` та `kms:EnableKey` зловмисник може скасувати заплановане видалення AWS KMS customer master key і пізніше знову його увімкнути. Це відновлює ключ (спочатку в стані Disabled) та повертає його здатність розшифровувати раніше захищені дані, що дозволяє exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,22 +145,22 @@ aws kms cancel-key-deletion \
|
||||
aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disable Key
|
||||
З дозволом `kms:DisableKey` зловмисник може відключити AWS KMS customer master key, що перешкоджає його використанню для шифрування або розшифрування. Це порушує доступ для будь-яких сервісів, які залежать від цього CMK, і може спричинити негайні перебої або denial-of-service, поки ключ не буде повторно увімкнено.
|
||||
### Вимкнення ключа
|
||||
Маючи дозвіл `kms:DisableKey`, зловмисник може відключити AWS KMS customer master key, перешкодивши його використанню для шифрування або розшифрування. Це порушить доступ для будь-яких сервісів, що залежать від цього CMK, і може спричинити негайні збої або denial-of-service, доки ключ не буде знову ввімкнено.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Отримання спільного секрету
|
||||
Маючи дозвіл `kms:DeriveSharedSecret`, суб'єкт може використати приватний ключ, що зберігається в KMS, разом із публічним ключем, наданим користувачем, щоб обчислити ECDH спільний секрет.
|
||||
### Derive Shared Secret
|
||||
Маючи дозвіл `kms:DeriveSharedSecret`, актор може використати KMS-held private key разом із user-supplied public key для обчислення ECDH shared secret.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
З дозволом `kms:Sign` зловмисник може використовувати KMS-stored CMK для криптографічного підписування даних без розкриття приватного ключа, створюючи дійсні підписи, які можуть дозволити impersonation або авторизувати шкідливі дії.
|
||||
### Імперсонація через `kms:Sign`
|
||||
Маючи дозвіл `kms:Sign`, актор може використовувати KMS-stored CMK для криптографічного підписання даних без розкриття приватного ключа, створюючи дійсні підписи, які можуть дозволити імперсонацію або авторизувати шкідливі дії.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,8 +168,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS з Custom Key Stores
|
||||
Маючи дозволи на кшталт `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` або `kms:UpdateCustomKeyStore`, зловмисник може змінити, відключити або видалити AWS KMS Custom Key Store (CKS), зробивши його master keys нефункціональними. Це порушує операції шифрування, дешифрування та підписування для будь-яких сервісів, що покладаються на ці ключі, і може спричинити негайний denial-of-service. Тому обмеження та моніторинг цих дозволів є критично важливими.
|
||||
### DoS with Custom Key Stores
|
||||
Маючи дозволи на кшталт `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` або `kms:UpdateCustomKeyStore`, зловмисник може змінити, відключити або видалити AWS KMS Custom Key Store (CKS), зробивши його майстер-ключі непридатними для роботи. Це порушує операції шифрування, дешифрування та підписування для будь-яких сервісів, які залежать від цих ключів, і може спричинити негайний denial-of-service. Тому обмеження та моніторинг цих дозволів є критично важливими.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user