Pentesting KMS & Secret Manager
A diferencia de otros servicios, para usar una clave KMS no basta con tener permisos en IAM. Las claves tienen sus propias Key Policies.
Regla de oro: Si la política de la clave no te da permiso explícito, ni siquiera el usuario Administrator de la cuenta puede usarla o borrarla (a menos que la política permita específicamente la delegación a IAM).
- Listar identificadores de las claves
aws kms list-keys --endpoint-url http://127.0.0.1:4566
- Listar alias de las claves (nombre humano)
aws kms list-aliases --endpoint-url http://127.0.0.1:4566
- Describir claves
aws kms describe-key --key-id 0b539917-5eff-45b2-9fa1-e13f0d2c42ac --endpoint-url http://127.0.0.1:4566
- Desencriptar usando una key
En binario
aws kms decrypt --ciphertext-blob fileb://servers.enc --key-id $key --output text --query Plaintext --endpoint-url http://127.0.0.1:4566
Si no es un binario sería file://data.txt
A veces en necesario pasarle el algoritmo de desencriptación (que se puede ver describiendo la clave)
aws kms decrypt --key-id $key$ --ciphertext-blob fileb://servers.enc --encryption-algorithm RSAES_OAEP_SHA_256 --output text --endpoint-url http://127.0.0.1:4566 | /usr/bin/cat
Secrets Manager 🗝️
Para conceder acceso a secretos a un usuario de otra cuenta de AWS, es necesario:
- Autorizar al usuario para que acceda al secreto.
- Conceder permiso al usuario para descifrar el secreto mediante KMS.
- Modificar la política de claves para permitir que el usuario externo la utilice.
AWS Secrets Manager se integra con AWS KMS para cifrar sus secretos dentro de AWS Secrets Manager.
Listar secretos
aws secretsmanager list-secrets --endpoint-url http://127.0.0.1:4566
Ver el valor del secreto
aws secretsmanager get-secret-value --secret-id 'Jira Support' --endpoint-url http://127.0.0.1:4566