AWS - KMS Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS Key Management Service (AWS KMS) se presenta como un servicio gestionado, simplificando el proceso para que los usuarios crean y gestionen claves maestras de cliente (CMKs). Estas CMKs son fundamentales en la encriptación de datos de usuario. Una característica notable de AWS KMS es que las CMKs están predominantemente aseguradas por módulos de seguridad de hardware (HSMs), mejorando la protección de las claves de encriptación.
KMS utiliza criptografía simétrica. Esto se utiliza para encriptar información en reposo (por ejemplo, dentro de un S3). Si necesitas encriptar información en tránsito, debes usar algo como TLS.
KMS es un servicio específico de región.
Los administradores de Amazon no tienen acceso a tus claves. No pueden recuperar tus claves y no te ayudan con la encriptación de tus claves. AWS simplemente administra el sistema operativo y la aplicación subyacente; depende de nosotros administrar nuestras claves de encriptación y cómo se utilizan esas claves.
Claves Maestras de Cliente (CMK): Pueden encriptar datos de hasta 4KB de tamaño. Se utilizan típicamente para crear, encriptar y desencriptar las DEKs (Claves de Encriptación de Datos). Luego, las DEKs se utilizan para encriptar los datos.
Una clave maestra de cliente (CMK) es una representación lógica de una clave maestra en AWS KMS. Además de los identificadores de la clave maestra y otros metadatos, incluyendo su fecha de creación, descripción y estado de la clave, una CMK contiene el material de clave que se utiliza para encriptar y desencriptar datos. Cuando creas una CMK, por defecto, AWS KMS genera el material de clave para esa CMK. Sin embargo, puedes optar por crear una CMK sin material de clave y luego importar tu propio material de clave en esa CMK.
Hay 2 tipos de claves maestras:
CMKs gestionadas por AWS: Utilizadas por otros servicios para encriptar datos. Se utilizan por el servicio que las creó en una región. Se crean la primera vez que implementas la encriptación en ese servicio. Rotan cada 3 años y no es posible cambiarlas.
CMKs gestionadas por el cliente: Flexibilidad, rotación, acceso configurable y política de clave. Habilitar y deshabilitar claves.
Encriptación de Sobre en el contexto del Servicio de Gestión de Claves (KMS): Sistema de jerarquía de dos niveles para encriptar datos con la clave de datos y luego encriptar la clave de datos con la clave maestra.
Estas definen quién puede usar y acceder a una clave en KMS.
Por defecto:
Da acceso a la IAM de la cuenta de AWS que posee la clave KMS para gestionar el acceso a la clave KMS a través de IAM.
A diferencia de otras políticas de recursos de AWS, una política de clave KMS de AWS no otorga automáticamente permisos a ninguno de los principales de la cuenta. Para otorgar permisos a los administradores de la cuenta, la política de clave debe incluir una declaración explícita que proporcione este permiso, como esta.
Sin permitir el acceso a la cuenta("AWS": "arn:aws:iam::111122223333:root"
), los permisos de IAM no funcionarán.
Permite que la cuenta use políticas de IAM para permitir el acceso a la clave KMS, además de la política de clave.
Sin este permiso, las políticas de IAM que permiten el acceso a la clave son ineficaces, aunque las políticas de IAM que niegan el acceso a la clave siguen siendo efectivas.
Reduce el riesgo de que la clave se vuelva inmanejable al dar permisos de control de acceso a los administradores de la cuenta, incluyendo al usuario root de la cuenta, que no puede ser eliminado.
Ejemplo de política por defecto:
Si la cuenta está permitida ("arn:aws:iam::111122223333:root"
), un principal de la cuenta todavía necesitará permisos de IAM para usar la clave KMS. Sin embargo, si el ARN de un rol, por ejemplo, está específicamente permitido en la Política de Clave, ese rol no necesita permisos de IAM.
Administrador de clave por defecto:
Tienen acceso para gestionar KMS pero no para cifrar o descifrar datos.
Solo se pueden agregar usuarios y roles de IAM a la lista de Administradores de Clave (no grupos).
Si se utiliza un CMK externo, los Administradores de Clave tienen el permiso para importar material de clave.
Cuanto más tiempo se deja la misma clave en su lugar, más datos se cifran con esa clave, y si esa clave es comprometida, entonces mayor será el área de impacto de los datos en riesgo. Además de esto, cuanto más tiempo esté activa la clave, aumenta la probabilidad de que sea comprometida.
KMS rota las claves de cliente cada 365 días (o puedes realizar el proceso manualmente cuando quieras) y las claves gestionadas por AWS cada 3 años y este tiempo no se puede cambiar.
Las claves más antiguas se retienen para descifrar datos que fueron cifrados antes de la rotación.
En un compromiso, rotar la clave no eliminará la amenaza, ya que será posible descifrar todos los datos cifrados con la clave comprometida. Sin embargo, los nuevos datos se cifrarán con la nueva clave.
Si el CMK está en estado de deshabilitado o pendiente de eliminación, KMS no realizará una rotación de clave hasta que el CMK sea reactivado o se cancele la eliminación.
Se necesita crear un nuevo CMK, luego, se crea un nuevo CMK-ID, por lo que necesitarás actualizar cualquier aplicación para referenciar el nuevo CMK-ID.
Para facilitar este proceso, puedes usar alias para referenciar un key-id y luego solo actualizar la clave a la que se refiere el alias.
Necesitas mantener claves antiguas para descifrar archivos antiguos cifrados con ellas.
Puedes importar claves de tu infraestructura de claves local.
KMS se cobra por el número de solicitudes de cifrado/descifrado recibidas de todos los servicios por mes.
KMS tiene una completa auditoría e integración de cumplimiento con CloudTrail; aquí es donde puedes auditar todos los cambios realizados en KMS.
Con la política de KMS puedes hacer lo siguiente:
Limitar quién puede crear claves de datos y qué servicios tienen acceso para usar estas claves.
Limitar el acceso de los sistemas a cifrar solo, descifrar solo o ambos.
Definir para habilitar a los sistemas a acceder a claves a través de regiones (aunque no se recomienda, ya que una falla en la región que aloja KMS afectará la disponibilidad de los sistemas en otras regiones).
No puedes sincronizar o mover/copiar claves entre regiones; solo puedes definir reglas para permitir el acceso entre regiones.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)