mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-13 13:26:31 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-kms-enum
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## KMS - Servicio de Gestión de Claves
|
||||
|
||||
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 los datos del 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.
|
||||
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**.
|
||||
|
||||
@@ -29,11 +29,11 @@ Estas definen **quién puede usar y acceder a una clave en KMS**.
|
||||
|
||||
Por **defecto:**
|
||||
|
||||
- Da acceso al **IAM de la** **cuenta de AWS que posee la clave KMS** para gestionar el acceso a la clave KMS a través de IAM.
|
||||
- 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 permiso a ninguno de los principales de la cuenta**. 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.
|
||||
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 la cuenta(`"AWS": "arn:aws:iam::111122223333:root"`) los permisos de IAM no funcionarán.
|
||||
- Sin permitir 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.
|
||||
|
||||
@@ -71,7 +71,7 @@ Propiedades de una política:
|
||||
|
||||
Concesiones:
|
||||
|
||||
- Permite delegar tus permisos a otro principal de AWS dentro de tu cuenta de AWS. Necesitas crearlos utilizando las API de AWS KMS. Se puede indicar el identificador de CMK, el principal beneficiario y el nivel requerido de operación (Decrypt, Encrypt, GenerateDataKey...)
|
||||
- Permite delegar tus permisos a otro principal de AWS dentro de tu cuenta de AWS. Necesitas crearlos usando las APIs de AWS KMS. Se puede indicar el identificador de CMK, el principal beneficiario y el nivel de operación requerido (Decrypt, Encrypt, GenerateDataKey...)
|
||||
- Después de que se crea la concesión, se emiten un GrantToken y un GrantID.
|
||||
|
||||
**Acceso**:
|
||||
@@ -87,7 +87,7 @@ Concesiones:
|
||||
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).
|
||||
- Solo los usuarios y roles de IAM pueden ser añadidos 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.
|
||||
|
||||
### Rotación de CMKs
|
||||
@@ -95,22 +95,22 @@ Administrador de clave por defecto:
|
||||
- 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.
|
||||
- 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 serán cifrados 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 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.
|
||||
- Para facilitar este proceso, puedes **usar alias para referirte a 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.
|
||||
Puedes importar claves desde tu infraestructura de claves local.
|
||||
|
||||
### Otra información relevante de KMS
|
||||
|
||||
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 y **integración de cumplimiento con CloudTrail**; aquí es donde puedes auditar todos los cambios realizados en KMS.
|
||||
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:
|
||||
|
||||
@@ -128,6 +128,11 @@ 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
|
||||
|
||||
# This script enumerates AWS KMS keys across all available regions.
|
||||
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
|
||||
echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n';
|
||||
done
|
||||
```
|
||||
### Privesc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user