AWS - KMS Enum

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

KMS - Servicio de Administración de Claves

El Servicio de Administración de Claves de AWS (AWS KMS) se presenta como un servicio gestionado, simplificando el proceso para que los usuarios crean y gestionan claves maestras de clientes (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 protegidas 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 necesitas utilizar 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 administrar cómo se utilizan esas claves.

Claves Maestras de Clientes (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, incluida su fecha de creación, descripción y estado de la clave, una CMK contiene el material de la clave que se utiliza para encriptar y desencriptar datos. Cuando creas una CMK, por defecto, AWS KMS genera el material de la 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.

Existen 2 tipos de claves maestras:

  • CMKs administradas por AWS: Utilizadas por otros servicios para encriptar datos. Son utilizadas por el servicio que las creó en una región. Se crean la primera vez que se implementa la encriptación en ese servicio. Se rotan cada 3 años y no es posible cambiarlas.

  • CMKs de administrador de clientes: Flexibilidad, rotación, acceso configurable y política de claves. Habilita y deshabilita claves.

Encriptación de Sobre en el contexto del Servicio de Administración de Claves (KMS): Sistema jerárquico de dos niveles para encriptar datos con clave de datos y luego encriptar la clave de datos con la clave maestra.

Políticas de Clave

Estas definen quién puede usar y acceder a una clave en KMS.

Por defecto:

  • Da al cuenta de AWS que posee la clave KMS acceso completo a la clave KMS.

A diferencia de otras políticas de recursos de AWS, una política de clave de KMS de AWS no otorga automáticamente permiso a la cuenta o a ninguno de sus usuarios. Para otorgar permiso 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 la cuenta("AWS": "arn:aws:iam::111122223333:root") los permisos IAM no funcionarán.

  • Permite a la cuenta usar políticas IAM para permitir el acceso a la clave KMS, además de la política de clave.

Sin este permiso, las políticas IAM que permiten el acceso a la clave son ineficaces, aunque las políticas IAM que niegan el acceso a la clave siguen siendo efectivas.

  • Reduce el riesgo de que la clave se vuelva inmanejable al dar permiso de control de acceso a los administradores de la cuenta, incluido el usuario raíz de la cuenta, que no se puede eliminar.

Ejemplo de política por defecto:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

Si la cuenta está permitida ("arn:aws:iam::111122223333:root") un principal de la cuenta todavía necesitará permisos 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 necesitará permisos IAM.

Detalles de la Política

Propiedades de una política:

  • Documento basado en JSON

  • Recurso --> Recursos afectados (puede ser "*")

  • Acción --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (permisos)

  • Efecto --> Permitir/Denegar

  • Principal --> arn afectado

  • Condiciones (opcional) --> Condición para otorgar los permisos

Concesiones:

  • Permiten delegar tus permisos a otro principal de AWS dentro de tu cuenta de AWS. Debes crearlas utilizando las APIs de AWS KMS. Se puede indicar el identificador de CMK, el principal del concesionario y el nivel de operación requerido (Decrypt, Encrypt, GenerateDataKey...)

  • Después de crear la concesión, se emiten un GrantToken y un GratID

Acceso:

  • A través de la política de clave -- Si existe, esta tiene precedencia sobre la política IAM

  • A través de la política IAM

  • A través de las concesiones

Administradores de Claves

Administrador de claves por defecto:

  • Tienen acceso para administrar KMS pero no para cifrar o descifrar datos

  • Solo usuarios y roles IAM pueden agregarse a la lista de Administradores de Claves (no grupos)

  • Si se utiliza un CMK externo, los Administradores de Claves tienen permiso para importar material clave

Rotación de CMKs

  • 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 riesgo de datos. Además, 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 lo desees) y las claves gestionadas por AWS cada 3 años y este tiempo no se puede cambiar.

  • Las claves antiguas se conservan para descifrar datos que fueron cifrados antes de la rotación

  • En caso de una brecha, 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.

Rotación manual

  • Se necesita crear un nuevo CMK, luego, se crea un nuevo ID de CMK, por lo que deberás actualizar cualquier aplicación para referenciar el nuevo ID de CMK.

  • Para hacer este proceso más fácil, puedes usar alias para referenciar un ID de clave y luego simplemente actualizar la clave a la que se refiere el alias.

  • Debes mantener las claves antiguas para descifrar archivos antiguos cifrados con ella.

Puedes importar claves desde tu infraestructura de clave local.

Otra información relevante de KMS

KMS tiene un precio por número de solicitudes de cifrado/descifrado recibidas de todos los servicios por mes.

KMS tiene una integración completa de auditoría y 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 sistemas para cifrar solamente, descifrar solamente o ambos

  • Definir para habilitar a los sistemas para acceder a claves entre regiones (aunque no se recomienda ya que una falla en la región que aloja KMS afectará la disponibilidad de sistemas en otras regiones).

No puedes sincronizar o mover/copiar claves entre regiones; solo puedes definir reglas para permitir el acceso entre regiones.

Enumeración

aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores

Escalada de privilegios

pageAWS - KMS Privesc

Post Explotación

pageAWS - KMS Post Exploitation

Persistencia

pageAWS - KMS Persistence

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización