GCP - KMS Enum

Support HackTricks

KMS

El Cloud Key Management Service sirve como un almacenamiento seguro para claves criptográficas, que son esenciales para operaciones como encriptar y desencriptar datos sensibles. Estas claves están organizadas dentro de anillos de claves, lo que permite una gestión estructurada. Además, el control de acceso puede configurarse meticulosamente, ya sea a nivel de clave individual o para todo el anillo de claves, asegurando que los permisos estén alineados con los requisitos de seguridad.

Los anillos de claves de KMS se crean por defecto como globales, lo que significa que las claves dentro de ese anillo son accesibles desde cualquier región. Sin embargo, es posible crear anillos de claves específicos en regiones específicas.

Nivel de Protección de Claves

  • Claves de software: Las claves de software son creadas y gestionadas por KMS completamente en software. Estas claves no están protegidas por ningún módulo de seguridad de hardware (HSM) y pueden ser utilizadas para pruebas y desarrollo. Las claves de software no se recomiendan para uso en producción porque proporcionan baja seguridad y son susceptibles a ataques.

  • Claves alojadas en la nube: Las claves alojadas en la nube son creadas y gestionadas por KMS en la nube utilizando una infraestructura altamente disponible y confiable. Estas claves están protegidas por HSMs, pero los HSMs no están dedicados a un cliente específico. Las claves alojadas en la nube son adecuadas para la mayoría de los casos de uso en producción.

  • Claves externas: Las claves externas son creadas y gestionadas fuera de KMS, y se importan a KMS para su uso en operaciones criptográficas. Las claves externas pueden almacenarse en un módulo de seguridad de hardware (HSM) o en una biblioteca de software, dependiendo de la preferencia del cliente.

Propósitos de las Claves

  • Encriptación/desencriptación simétrica: Se utiliza para encriptar y desencriptar datos utilizando una única clave para ambas operaciones. Las claves simétricas son rápidas y eficientes para encriptar y desencriptar grandes volúmenes de datos.

  • Firma asimétrica: Se utiliza para la comunicación segura entre dos partes sin compartir la clave. Las claves asimétricas vienen en un par, consistiendo en una clave pública y una clave privada. La clave pública se comparte con otros, mientras que la clave privada se mantiene en secreto.

  • Desencriptación asimétrica: Se utiliza para verificar la autenticidad de un mensaje o dato. Se crea una firma digital utilizando una clave privada y se puede verificar utilizando la clave pública correspondiente.

  • Firma MAC: Se utiliza para asegurar la integridad y autenticidad de los datos creando un código de autenticación de mensaje (MAC) utilizando una clave secreta. HMAC se utiliza comúnmente para la autenticación de mensajes en protocolos de red y aplicaciones de software.

Período de Rotación y Período Programado para Destrucción

Por defecto, cada 90 días pero puede ser fácilmente y completamente personalizado.

El período "Programado para destrucción" es el tiempo desde que el usuario solicita eliminar la clave hasta que la clave es eliminada. No se puede cambiar después de que la clave es creada (por defecto 1 día).

Versión Primaria

Cada clave de KMS puede tener varias versiones, una de ellas debe ser la predeterminada, esta será la que se utilice cuando no se especifique una versión al interactuar con la clave de KMS.

Enumeración

Teniendo permisos para listar las claves, así es como puedes acceder a ellas:

# 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

Escalamiento de Privilegios

GCP - KMS Privesc

Post Explotación

GCP - KMS Post Exploitation

Referencias

Apoya a HackTricks

Last updated