diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index a7d91d364..230c6dba5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -2,9 +2,9 @@ {{#include ../../../banners/hacktricks-training.md}} -## KMS - Служба управління ключами +## KMS - Key Management Service -AWS Служба управління ключами (AWS KMS) представлена як керована служба, що спрощує процес для користувачів **створювати та керувати основними ключами клієнта** (CMK). Ці CMK є невід'ємною частиною шифрування даних користувачів. Помітною особливістю AWS KMS є те, що CMK переважно **захищені апаратними модулями безпеки** (HSM), що підвищує захист шифрувальних ключів. +AWS Key Management Service (AWS KMS) представлений як керована служба, що спрощує процес для користувачів **створювати та керувати основними ключами клієнтів** (CMKs). Ці CMKs є невід'ємною частиною шифрування даних користувачів. Помітною особливістю AWS KMS є те, що CMKs переважно **захищені апаратними модулями безпеки** (HSMs), що підвищує захист шифрувальних ключів. KMS використовує **симетричну криптографію**. Це використовується для **шифрування інформації в спокої** (наприклад, всередині S3). Якщо вам потрібно **шифрувати інформацію в русі**, вам потрібно використовувати щось на зразок **TLS**. @@ -12,14 +12,14 @@ KMS є **сервісом, специфічним для регіону**. **Адміністратори Amazon не мають доступу до ваших ключів**. Вони не можуть відновити ваші ключі і не допомагають вам з шифруванням ваших ключів. AWS просто адмініструє операційну систему та основний додаток, нам потрібно адмініструвати наші шифрувальні ключі та контролювати, як ці ключі використовуються. -**Основні ключі клієнта** (CMK): Можуть шифрувати дані розміром до 4KB. Вони зазвичай використовуються для створення, шифрування та розшифрування DEK (Ключі шифрування даних). Потім DEK використовуються для шифрування даних. +**Основні ключі клієнтів** (CMK): Можуть шифрувати дані розміром до 4KB. Вони зазвичай використовуються для створення, шифрування та розшифрування DEKs (Ключів Шифрування Даних). Потім DEKs використовуються для шифрування даних. Основний ключ клієнта (CMK) є логічним представленням основного ключа в AWS KMS. На додаток до ідентифікаторів основного ключа та іншої метаданих, включаючи дату створення, опис та стан ключа, **CMK містить матеріал ключа, який використовується для шифрування та розшифрування даних**. Коли ви створюєте CMK, за замовчуванням AWS KMS генерує матеріал ключа для цього CMK. Однак ви можете вибрати створити CMK без матеріалу ключа, а потім імпортувати свій власний матеріал ключа в цей CMK. Існує 2 типи основних ключів: -- **CMK, керовані AWS: Використовуються іншими службами для шифрування даних**. Вони використовуються службою, яка їх створила в регіоні. Вони створюються перший раз, коли ви реалізуєте шифрування в цій службі. Обертаються кожні 3 роки, і змінити їх неможливо. -- **CMK, керовані клієнтом**: Гнучкість, ротація, налаштовуваний доступ і політика ключів. Увімкнення та вимкнення ключів. +- **AWS керовані CMKs: Використовуються іншими службами для шифрування даних**. Вони використовуються службою, яка їх створила в регіоні. Вони створюються перший раз, коли ви реалізуєте шифрування в цій службі. Обертаються кожні 3 роки, і змінити їх неможливо. +- **Клієнтські керовані CMKs**: Гнучкість, ротація, налаштовуваний доступ і політика ключів. Увімкнення та вимкнення ключів. **Шифрування конвертів** в контексті Служби управління ключами (KMS): Система з двох рівнів для **шифрування даних за допомогою ключа даних, а потім шифрування ключа даних за допомогою основного ключа**. @@ -35,11 +35,11 @@ KMS є **сервісом, специфічним для регіону**. - Без дозволу облікового запису (`"AWS": "arn:aws:iam::111122223333:root"`) дозволи IAM не працюватимуть. -- Вона **дозволяє обліковому запису використовувати політики IAM** для надання доступу до ключа KMS, на додаток до політики ключа. +- Це **дозволяє обліковому запису використовувати політики IAM** для надання доступу до ключа KMS, на додаток до політики ключа. **Без цього дозволу політики IAM, які дозволяють доступ до ключа, є неефективними**, хоча політики IAM, які забороняють доступ до ключа, все ще є ефективними. -- Вона **зменшує ризик того, що ключ стане некерованим**, надаючи дозвіл на контроль доступу адміністраторам облікового запису, включаючи кореневого користувача облікового запису, який не може бути видалений. +- Це **зменшує ризик того, що ключ стане некерованим**, надаючи дозвіл на контроль доступу адміністраторам облікового запису, включаючи кореневого користувача облікового запису, якого не можна видалити. **Приклад політики за замовчуванням**: ```json @@ -54,7 +54,7 @@ KMS є **сервісом, специфічним для регіону**. } ``` > [!WARNING] -> Якщо **обліковий запис дозволено** (`"arn:aws:iam::111122223333:root"`), **основний суб'єкт** з облікового запису **все ще потребуватиме IAM дозволів** для використання KMS ключа. Однак, якщо **ARN** ролі, наприклад, **спеціально дозволено** в **Політиці ключа**, ця роль **не потребує IAM дозволів**. +> Якщо **обліковий запис дозволено** (`"arn:aws:iam::111122223333:root"`), **суб'єкт** з облікового запису **все ще потребуватиме IAM дозволів** для використання KMS ключа. Однак, якщо **ARN** ролі, наприклад, **специфічно дозволено** в **Політиці ключа**, ця роль **не потребує IAM дозволів**.
@@ -66,12 +66,12 @@ KMS є **сервісом, специфічним для регіону**. - Ресурс --> Підлягаючі ресурси (може бути "\*") - Дія --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (дозволи) - Ефект --> Дозволити/Відмовити -- Основний суб'єкт --> arn, що підлягає +- Суб'єкт --> arn, що підлягає - Умови (необов'язково) --> Умова для надання дозволів Гранти: -- Дозволяє делегувати ваші дозволи іншому AWS основному суб'єкту у вашому обліковому записі AWS. Вам потрібно створити їх, використовуючи AWS KMS API. Можна вказати ідентифікатор CMK, основний суб'єкт гранту та необхідний рівень операції (Decrypt, Encrypt, GenerateDataKey...) +- Дозволяє делегувати ваші дозволи іншому AWS суб'єкту у вашому AWS обліковому записі. Вам потрібно створити їх, використовуючи AWS KMS API. Можна вказати ідентифікатор CMK, суб'єкта гранту та необхідний рівень операції (Decrypt, Encrypt, GenerateDataKey...) - Після створення гранту видається GrantToken та GrantID **Доступ**: @@ -87,13 +87,13 @@ KMS є **сервісом, специфічним для регіону**. Адміністратори ключів за замовчуванням: - Мають доступ для управління KMS, але не для шифрування або дешифрування даних -- Тільки користувачі та ролі IAM можуть бути додані до списку адміністраторів ключів (не групи) -- Якщо використовується зовнішній CMK, адміністратори ключів мають дозвіл на імпорт матеріалів ключа +- Тільки користувачі та ролі IAM можуть бути додані до списку Адміністраторів ключів (не групи) +- Якщо використовується зовнішній CMK, Адміністратори ключів мають дозвіл на імпорт матеріалів ключа ### Ротація CMK - Чим довше той самий ключ залишається на місці, тим більше даних шифрується цим ключем, і якщо цей ключ буде зламано, то ширша зона ризику даних. Крім того, чим довше ключ активний, тим більше ймовірність його зламу. -- **KMS ротує ключі клієнтів кожні 365 днів** (або ви можете виконати процес вручну, коли захочете) і **ключі, що управляються AWS, кожні 3 роки**, і цього разу змінити не можна. +- **KMS ротує ключі клієнтів кожні 365 днів** (або ви можете виконати процес вручну, коли захочете) і **ключі, що керуються AWS, кожні 3 роки**, і цей термін не може бути змінено. - **Старі ключі зберігаються** для дешифрування даних, які були зашифровані до ротації - У разі зламу, ротація ключа не усуне загрозу, оскільки буде можливість дешифрувати всі дані, зашифровані зламаним ключем. Однак, **нові дані будуть зашифровані новим ключем**. - Якщо **CMK** знаходиться в стані **вимкнено** або **в очікуванні** **видалення**, KMS **не виконає ротацію ключа**, поки CMK не буде повторно активовано або видалення не буде скасовано. @@ -108,13 +108,13 @@ KMS є **сервісом, специфічним для регіону**. ### Інша релевантна інформація KMS -KMS оцінюється за кількістю запитів на шифрування/дешифрування, отриманих від усіх служб за місяць. +KMS оцінюється за кількістю запитів на шифрування/дешифрування, отриманих від усіх сервісів за місяць. KMS має повну аудиторську та комплаєнс **інтеграцію з CloudTrail**; тут ви можете перевірити всі зміни, виконані в KMS. З політикою KMS ви можете зробити наступне: -- Обмежити, хто може створювати ключі даних і які служби мають доступ до використання цих ключів +- Обмежити, хто може створювати ключі даних і які сервіси мають доступ до використання цих ключів - Обмежити доступ систем до шифрування лише, дешифрування лише або обидва - Визначити, щоб системи могли отримувати доступ до ключів через регіони (хоча це не рекомендується, оскільки збій у регіоні, що хостить KMS, вплине на доступність систем в інших регіонах). @@ -128,6 +128,11 @@ aws kms list-grants --key-id aws kms describe-key --key-id aws kms get-key-policy --key-id --policy-name # Default policy name is "default" aws kms describe-custom-key-stores + +# This script enumerates AWS KMS keys across all available regions. +for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do +echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n'; +done ``` ### Privesc