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

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.

Перерахування

Маючи дозволи на перегляд ключів, ось як ви можете отримати до них доступ:

bash
# 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

Підвищення Привілеїв

GCP - KMS Privesc

Після Експлуатації

GCP - KMS Post Exploitation

Посилання

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