AWS - KMS Enum

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

KMS - Serviço de Gerenciamento de Chaves

O AWS Key Management Service (AWS KMS) é apresentado como um serviço gerenciado, simplificando o processo para os usuários criarem e gerenciarem chaves mestras de clientes (CMKs). Essas CMKs são essenciais na criptografia dos dados do usuário. Uma característica notável do AWS KMS é que as CMKs são predominantemente protegidas por módulos de segurança de hardware (HSMs), aprimorando a proteção das chaves de criptografia.

O KMS usa criptografia simétrica. Isso é usado para criptografar informações em repouso (por exemplo, dentro de um S3). Se você precisa criptografar informações em trânsito, é necessário usar algo como TLS.

O KMS é um serviço específico da região.

Os administradores da Amazon não têm acesso às suas chaves. Eles não podem recuperar suas chaves e não ajudam na criptografia das suas chaves. A AWS simplesmente administra o sistema operacional e a aplicação subjacente, cabe a nós administrar nossas chaves de criptografia e administrar como essas chaves são usadas.

Chaves Mestras de Clientes (CMK): Podem criptografar dados de até 4KB de tamanho. Geralmente são usadas para criar, criptografar e descriptografar as DEKs (Chaves de Criptografia de Dados). Em seguida, as DEKs são usadas para criptografar os dados.

Uma chave mestra de cliente (CMK) é uma representação lógica de uma chave mestra no AWS KMS. Além dos identificadores da chave mestra e outros metadados, incluindo sua data de criação, descrição e estado da chave, uma CMK contém o material da chave que é usado para criptografar e descriptografar dados. Ao criar uma CMK, por padrão, o AWS KMS gera o material da chave para essa CMK. No entanto, você pode optar por criar uma CMK sem material da chave e, em seguida, importar seu próprio material da chave para essa CMK.

Existem 2 tipos de chaves mestras:

  • CMKs gerenciadas pela AWS: Usadas por outros serviços para criptografar dados. São usadas pelo serviço que as criou em uma região. São criadas na primeira vez que você implementa a criptografia nesse serviço. Rotacionam a cada 3 anos e não é possível alterá-las.

  • CMKs gerenciadas pelo cliente: Flexibilidade, rotação, acesso configurável e política de chave. Habilita e desabilita chaves.

Criptografia de Envelope no contexto do Serviço de Gerenciamento de Chaves (KMS): Sistema de hierarquia de dois níveis para criptografar dados com chave de dados e, em seguida, criptografar a chave de dados com a chave mestra.

Políticas de Chave

Estas definem quem pode usar e acessar uma chave no KMS.

Por padrão:

  • Dá à conta da AWS que possui a chave do KMS acesso total à chave do KMS.

Ao contrário de outras políticas de recursos da AWS, uma política de chave do KMS não dá automaticamente permissão à conta ou a qualquer um de seus usuários. Para conceder permissão aos administradores da conta, a política de chave deve incluir uma declaração explícita que forneça essa permissão, como esta.

  • Sem permitir a conta("AWS": "arn:aws:iam::111122223333:root") as permissões do IAM não funcionarão.

  • Isso permite que a conta use políticas do IAM para permitir o acesso à chave do KMS, além da política de chave.

Sem essa permissão, as políticas do IAM que permitem acesso à chave são ineficazes, embora as políticas do IAM que negam acesso à chave ainda sejam eficazes.

  • Isso reduz o risco de a chave se tornar incontrolável ao dar permissão de controle de acesso aos administradores da conta, incluindo o usuário raiz da conta, que não pode ser excluído.

Exemplo de política padrão:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

Se a conta for permitida ("arn:aws:iam::111122223333:root") um principal da conta ainda precisará de permissões IAM para usar a chave KMS. No entanto, se o ARN de uma função, por exemplo, for especificamente permitido na Política de Chave, essa função não precisará de permissões IAM.

Detalhes da Política

Propriedades de uma política:

  • Documento baseado em JSON

  • Recurso --> Recursos afetados (pode ser "*")

  • Ação --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (permissões)

  • Efeito --> Permitir/Negar

  • Principal --> arn afetado

  • Condições (opcional) --> Condição para conceder as permissões

Concessões:

  • Permitem delegar suas permissões para outro principal da AWS dentro da sua conta da AWS. Você precisa criá-las usando as APIs do AWS KMS. Pode ser indicado o identificador do CMK, o principal do beneficiário e o nível de operação necessário (Decrypt, Encrypt, GenerateDataKey...)

  • Após a concessão ser criada, um GrantToken e um GratID são emitidos

Acesso:

  • Via política de chave -- Se existir, esta tem precedência sobre a política IAM

  • Via política IAM

  • Via concessões

Administradores de Chave

Administrador de chave por padrão:

  • Tem acesso para gerenciar o KMS, mas não para criptografar ou descriptografar dados

  • Apenas usuários e funções IAM podem ser adicionados à lista de Administradores de Chave (não grupos)

  • Se um CMK externo for usado, os Administradores de Chave têm permissão para importar material de chave

Rotação de CMKs

  • Quanto mais tempo a mesma chave permanecer no lugar, mais dados serão criptografados com essa chave, e se essa chave for comprometida, maior será a área de risco dos dados. Além disso, quanto mais tempo a chave estiver ativa, maior a probabilidade de ela ser comprometida.

  • O KMS roda chaves de cliente a cada 365 dias (ou você pode realizar o processo manualmente quando desejar) e chaves gerenciadas pela AWS a cada 3 anos e esse tempo não pode ser alterado.

  • Chaves mais antigas são mantidas para descriptografar dados que foram criptografados antes da rotação

  • Em caso de comprometimento, a rotação da chave não removerá a ameaça, pois será possível descriptografar todos os dados criptografados com a chave comprometida. No entanto, os novos dados serão criptografados com a nova chave.

  • Se o CMK estiver no estado de desativado ou pendente de exclusão, o KMS não realizará uma rotação de chave até que o CMK seja reativado ou a exclusão seja cancelada.

Rotação manual

  • Um novo CMK precisa ser criado, então, um novo CMK-ID é criado, então você precisará atualizar qualquer aplicativo para referenciar o novo CMK-ID.

  • Para tornar esse processo mais fácil, você pode usar aliases para se referir a um ID de chave e depois apenas atualizar a chave para a qual o alias está se referindo.

  • Você precisa manter as chaves antigas para descriptografar arquivos antigos criptografados com elas.

Você pode importar chaves de sua infraestrutura de chave local.

Outras informações relevantes do KMS

O KMS é precificado por número de solicitações de criptografia/descriptografia recebidas de todos os serviços por mês.

O KMS possui integração completa de auditoria e conformidade com o CloudTrail; aqui é possível auditar todas as alterações realizadas no KMS.

Com a política do KMS, você pode fazer o seguinte:

  • Limitar quem pode criar chaves de dados e quais serviços têm acesso para usar essas chaves

  • Limitar o acesso dos sistemas para criptografar apenas, descriptografar apenas ou ambos

  • Definir para permitir que sistemas acessem chaves em diferentes regiões (embora não seja recomendado, pois uma falha na região que hospeda o KMS afetará a disponibilidade de sistemas em outras regiões).

Você não pode sincronizar ou mover/copiar chaves entre regiões; você só pode definir regras para permitir o acesso entre regiões.

Enumeração

aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores

Elevação de Privilégios

pageAWS - KMS Privesc

Pós-Exploração

pageAWS - KMS Post Exploitation

Persistência

pageAWS - KMS Persistence

Referências

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización