# AWS - KMS Persistence {{#include ../../../banners/hacktricks-training.md}} ## KMS Para más información, consulta: {{#ref}} ../aws-services/aws-kms-enum.md {{#endref}} ### Conceder acceso a través de políticas de KMS Un atacante podría usar el permiso **`kms:PutKeyPolicy`** para **dar acceso** a una clave a un usuario bajo su control o incluso a una cuenta externa. Consulta la [**página de KMS Privesc**](../aws-privilege-escalation/aws-kms-privesc.md) para más información. ### Grant eterno Los grants son otra forma de otorgar a un principal algunos permisos sobre una clave específica. Es posible dar un grant que permita a un usuario crear grants. Además, un usuario puede tener varios grants (incluso idénticos) sobre la misma clave. Por lo tanto, es posible que un usuario tenga 10 grants con todos los permisos. El atacante debería monitorear esto constantemente. Y si en algún momento se elimina 1 grant, se deberían generar otros 10. (Estamos usando 10 y no 2 para poder detectar que se eliminó un grant mientras el usuario aún tiene algún grant) ```bash # To generate grants, generate 10 like this one aws kms create-grant \ --key-id \ --grantee-principal \ --operations "CreateGrant" "Decrypt" # To monitor grants aws kms list-grants --key-id ``` > [!NOTE] > Un grant puede otorgar permisos solo desde esto: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations) {{#include ../../../banners/hacktricks-training.md}}