GCP - KMS Enum
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
KMS
Cloud Key Management Service служить безпечним сховищем для криптографічних ключів, які є необхідними для операцій, таких як шифрування та розшифрування чутливих даних. Ці ключі організовані в ключові кільця, що дозволяє структуровано управляти ними. Крім того, контроль доступу може бути ретельно налаштований, як на рівні окремого ключа, так і для всього ключового кільця, що забезпечує точне відповідність дозволів вимогам безпеки.
Ключові кільця KMS за замовчуванням створюються як глобальні, що означає, що ключі всередині цього ключового кільця доступні з будь-якого регіону. Однак можливо створити специфічні ключові кільця в конкретних регіонах.
Рівень захисту ключів
- Програмні ключі: Програмні ключі створюються та управляються KMS повністю в програмному забезпеченні. Ці ключі не захищені жодним апаратним модулем безпеки (HSM) і можуть використовуватися для тестування та розробки. Програмні ключі не рекомендуються для виробництва через низький рівень безпеки та вразливість до атак.
- Ключі, що хостяться в хмарі: Ключі, що хостяться в хмарі, створюються та управляються KMS в хмарі, використовуючи високо доступну та надійну інфраструктуру. Ці ключі захищені HSM, але HSM не призначені для конкретного клієнта. Ключі, що хостяться в хмарі, підходять для більшості виробничих випадків використання.
- Зовнішні ключі: Зовнішні ключі створюються та управляються поза KMS і імпортуються в KMS для використання в криптографічних операціях. Зовнішні ключі можуть зберігатися в апаратному модулі безпеки (HSM) або в програмній бібліотеці, залежно від уподобань клієнта.
Цілі ключів
- Симетричне шифрування/розшифрування: Використовується для шифрування та розшифрування даних за допомогою одного ключа для обох операцій. Симетричні ключі швидкі та ефективні для шифрування та розшифрування великих обсягів даних.
- Підтримується: cryptoKeys.encrypt, cryptoKeys.decrypt
- Асиметричне підписування: Використовується для безпечного спілкування між двома сторонами без обміну ключем. Асиметричні ключі йдуть парами, складаючись з публічного ключа та приватного ключа. Публічний ключ ділиться з іншими, тоді як приватний ключ зберігається в таємниці.
- Підтримується: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- Асиметричне розшифрування: Використовується для перевірки автентичності повідомлення або даних. Цифровий підпис створюється за допомогою приватного ключа і може бути перевірений за допомогою відповідного публічного ключа.
- Підтримується: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC підписування: Використовується для забезпечення цілісності та автентичності даних шляхом створення коду автентифікації повідомлення (MAC) за допомогою секретного ключа. HMAC зазвичай використовується для автентифікації повідомлень у мережевих протоколах та програмному забезпеченні.
- Підтримується: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Період ротації та період програмування на знищення
За замовчуванням кожні 90 днів, але його можна легко та повністю налаштувати.
Період "Програмування на знищення" - це час з моменту, коли користувач запитує видалення ключа, до моменту, коли ключ видаляється. Його не можна змінити після створення ключа (за замовчуванням 1 день).
Основна версія
Кожен ключ KMS може мати кілька версій, одна з яких повинна бути за замовчуванням, вона буде використовуватися, коли версія не вказана під час взаємодії з ключем KMS.
Перерахування
Маючи дозволи на перегляд ключів, ось як ви можете отримати до них доступ:
# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>
# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>
# Encrypt a file using one of your keys
gcloud kms encrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global
# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global
Підвищення Привілеїв
Після Експлуатації
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.