mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
+28
-28
@@ -4,21 +4,21 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Para mais informações, veja:
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Encrypt/Decrypt information
|
||||
### Criptografar/Descriptografar informações
|
||||
|
||||
`fileb://` e `file://` são esquemas URI usados em comandos AWS CLI para especificar o caminho para arquivos locais:
|
||||
`fileb://` and `file://` são esquemas de URI usados em comandos AWS CLI para especificar o caminho para arquivos locais:
|
||||
|
||||
- `fileb://:` Lê o arquivo em modo binário, comumente usado para arquivos não textuais.
|
||||
- `file://:` Lê o arquivo em modo texto, tipicamente usado para arquivos de texto simples, scripts ou JSON que não tenham requisitos de codificação especiais.
|
||||
- `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 tenham requisitos especiais de codificação.
|
||||
|
||||
> [!TIP]
|
||||
> Observe que, se você quiser decrypt alguns dados dentro de um arquivo, o arquivo deve conter os dados binários, não dados codificados em base64. (fileb://)
|
||||
> 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
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Um atacante com acesso privilegiado ao KMS poderia modificar a política do KMS das chaves e **conceder à sua conta acesso sobre elas**, removendo o acesso concedido à conta legítima.
|
||||
Um atacante com acesso privilegiado ao KMS pode modificar a política KMS das chaves e **conceder acesso às mesmas à sua própria conta**, removendo o acesso concedido à conta legítima.
|
||||
|
||||
Então, 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 simples mas eficaz na conta.
|
||||
Então, 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 simples porém eficaz na conta.
|
||||
|
||||
> [!WARNING]
|
||||
> Observe que **AWS managed keys aren't affected** por este ataque, apenas **Customer managed keys**.
|
||||
>
|
||||
> Também observe a necessidade de usar o parâmetro **`--bypass-policy-lockout-safety-check`** (a ausência dessa opção no web console torna este ataque possível apenas a partir do CLI).
|
||||
> Note que **AWS managed keys aren't affected** por este ataque; somente **Customer managed keys**.
|
||||
|
||||
> Observe também a necessidade de usar o parâmetro **`--bypass-policy-lockout-safety-check`** (a ausência dessa opção na console da web torna esse ataque possível apenas a partir do CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,28 +92,28 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Observe que se você alterar essa policy e apenas conceder acesso a uma conta externa, e então a partir dessa conta externa tentar definir uma nova policy para **dar o acesso de volta à conta original, você não conseguirá porque a ação Put Polocy não pode ser performada a partir de um cross account**.
|
||||
> Observe que se você alterar essa policy e apenas conceder acesso a uma conta externa, e então a partir dessa conta externa tentar definir uma nova policy para **restituir o acesso à conta original, você não conseguirá, pois a ação Put Polocy não pode ser executada a partir de uma cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generic KMS Ransomware
|
||||
|
||||
Existe outra maneira de executar um KMS Ransomware global, que envolveria os seguintes passos:
|
||||
Existe outra maneira de realizar um KMS Ransomware global, que envolveria os seguintes passos:
|
||||
|
||||
- Criar uma nova **key with a key material** importada pelo atacante
|
||||
- **Re-encrypt older data** da vítima que foi criptografada com a versão anterior, usando a nova
|
||||
- Criar uma nova **key with a key material** importada pelo attacker
|
||||
- **Re-encrypt older data** da victim que foi encrypted com a versão anterior, usando a nova
|
||||
- **Delete the KMS key**
|
||||
- Agora somente o atacante, que possui o original key material, poderia ser capaz de descriptografar os dados criptografados
|
||||
- Agora somente o attacker, que possui o original key material, poderia decrypt the encrypted data
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
Com a permissão `kms:DeleteImportedKeyMaterial`, um ator pode deletar o key material importado de CMKs com `Origin=EXTERNAL` (CMKs que tenham importado seu key material), tornando-os incapazes de descriptografar dados. Esta ação é destrutiva e irreversível, a menos que material compatível seja reimportado, permitindo que um atacante cause efetivamente perda de dados semelhante a ransomware ao tornar a informação criptografada permanentemente inacessível.
|
||||
Com a permissão `kms:DeleteImportedKeyMaterial`, um actor pode deletar o imported key material de CMKs com `Origin=EXTERNAL` (CMKs que importaram seu key material), tornando-as incapazes de decrypt data. Esta ação é destrutiva e irreversível a menos que material compatível seja re-importado, permitindo que um attacker cause efetivamente perda de dados do tipo ransomware ao tornar a informação encrypted permanentemente inacessível.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Destruir chaves
|
||||
|
||||
Destruir chaves pode causar um DoS.
|
||||
Ao destruir chaves, é possível causar um DoS.
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Note que AWS agora **impede que as ações anteriores sejam realizadas a partir de uma conta cross-account:**
|
||||
> Observe que a AWS agora **impede que as ações anteriores sejam executadas a partir de uma conta cruzada:**
|
||||
|
||||
### Alterar ou deletar Alias
|
||||
Esse ataque exclui ou redireciona aliases do AWS KMS, quebrando a resolução de chaves e causando falhas imediatas em quaisquer serviços que dependam desses aliases, resultando em um denial-of-service. Com permissões como `kms:DeleteAlias` ou `kms:UpdateAlias` um atacante pode remover ou repoint aliases e interromper operações criptográficas (por exemplo, encrypt, describe). Qualquer serviço que referencie o alias em vez do key ID pode falhar até que o alias seja restaurado ou remapeado corretamente.
|
||||
### Alterar ou excluir Alias
|
||||
Este ataque exclui ou redireciona AWS KMS aliases, quebrando a resolução de chaves e causando falhas imediatas em quaisquer serviços que dependam desses aliases, resultando em uma negação de serviço. Com permissões como `kms:DeleteAlias` ou `kms:UpdateAlias` um atacante pode remover ou reapontar aliases e interromper operações criptográficas (e.g., encrypt, describe). Qualquer serviço que referencie o alias em vez do key ID pode falhar até que o alias seja restaurado ou remapeado corretamente.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -135,7 +135,7 @@ aws kms update-alias \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Cancelar exclusão de chave
|
||||
Com permissões como `kms:CancelKeyDeletion` e `kms:EnableKey`, um ator pode cancelar uma exclusão agendada de uma AWS KMS customer master key e, posteriormente, reativá-la. Ao fazer isso, a chave é recuperada (inicialmente no estado Disabled) e sua capacidade de descriptografar dados previamente protegidos é restaurada, permitindo exfiltração.
|
||||
Com permissões como `kms:CancelKeyDeletion` e `kms:EnableKey`, um ator pode cancelar a exclusão agendada de uma customer master key do AWS KMS e, posteriormente, reativá-la. Isso recupera a chave (inicialmente no estado Disabled) e restaura sua capacidade de descriptografar dados anteriormente protegidos, permitindo exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -145,22 +145,22 @@ aws kms cancel-key-deletion \
|
||||
aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Desativar chave
|
||||
Com a permissão `kms:DisableKey`, um ator pode desativar uma customer master key (CMK) do AWS KMS, impedindo que ela seja usada para criptografia ou descriptografia. Isso interrompe o acesso para quaisquer serviços que dependam dessa CMK e pode causar interrupções imediatas ou uma denial-of-service até que a chave seja reativada.
|
||||
### Disable Key
|
||||
Com a permissão `kms:DisableKey`, um ator pode desabilitar uma chave mestra do cliente (CMK) do AWS KMS, impedindo que ela seja usada para criptografia ou descriptografia. Isso interrompe o acesso de quaisquer serviços que dependam dessa CMK e pode causar interrupções imediatas ou um denial-of-service até que a chave seja reativada.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derivar Segredo Compartilhado
|
||||
Com a permissão `kms:DeriveSharedSecret`, um ator pode usar uma chave privada armazenada no KMS junto com uma chave pública fornecida pelo usuário para calcular um segredo compartilhado ECDH.
|
||||
Com a permissão `kms:DeriveSharedSecret`, um ator pode usar uma chave privada mantida pelo KMS mais uma chave pública fornecida pelo usuário para calcular um segredo compartilhado ECDH.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Falsificação de identidade via `kms:Sign`
|
||||
Com a permissão `kms:Sign`, um ator pode usar uma CMK armazenada no KMS para assinar criptograficamente dados sem expor a chave privada, produzindo assinaturas válidas que podem permitir falsificação de identidade ou autorizar ações maliciosas.
|
||||
### Impersonation via kms:Sign
|
||||
Com a permissão `kms:Sign`, um ator pode usar uma CMK armazenada no KMS para assinar criptograficamente dados sem expor a chave privada, produzindo assinaturas válidas que podem permitir impersonation ou autorizar ações maliciosas.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,7 +169,7 @@ aws kms sign \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS with Custom Key Stores
|
||||
Com permissões como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` ou `kms:UpdateCustomKeyStore`, um atacante pode modificar, desconectar ou excluir um AWS KMS Custom Key Store (CKS), tornando suas chaves mestras inoperantes. Isso interrompe as operações de criptografia, descriptografia e assinatura para quaisquer serviços que dependam dessas chaves e pode causar um denial-of-service imediato. Por isso, restringir e monitorar essas permissões é essencial.
|
||||
Com permissões como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` ou `kms:UpdateCustomKeyStore`, um ator pode modificar, desconectar ou excluir um AWS KMS Custom Key Store (CKS), tornando suas chaves mestres inoperantes. Isso interrompe operações de criptografia, descriptografia e assinatura para quaisquer serviços que dependam dessas chaves e pode causar um denial-of-service imediato. Portanto, restringir e monitorar essas permissões é crítico.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user