Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
aws-key-disabler — Um pequeno script lambda que desativará chaves de acesso mais antigas que um determinado número de dias. | Kitploit
Ferramentas/GitHubGitHub/te-papa/aws-key-disabler
Auditoria de ConfiguraçãoSegurança na NuvemGerenciamento de Identidade e Acesso (IAM)
GitHubte-papa/aws-key-disabler

aws-key-disabler

Um pequeno script lambda que desativará chaves de acesso mais antigas que um determinado número de dias.

Ver Repositório
15336há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

AWS Lambda - Desativador de Chaves de Acesso IAM

Imagem do Ícone de Chave

O desativador de chaves AWS é uma função Lambda que desativa as chaves de acesso do usuário IAM da AWS após um período definido para reduzir o risco associado a chaves de acesso antigas.

Arquitetura AWS Lambda

Imagem da Arquitetura

Saída do SysOps para o Usuário Final

Imagem do E-mail no iPhone

Cadeia de Ferramentas do Desenvolvedor

Imagem da Cadeia de Ferramentas

Limitações Atuais

  • Um relatório contendo a saída (json) da varredura será enviado para uma única conta de sysadmin definida; consulte o atributo report_to no arquivo de configuração de compilação /grunt/package.json.
  • As chaves são apenas desativadas, não excluídas nem substituídas.

Pré-requisitos

Este script requer os seguintes componentes para funcionar.

  • Node.js com NPM instalado https://nodejs.org/en/
  • Gruntjs instalado http://gruntjs.com/
  • Ferramenta de linha de comando AWSCLI instalada https://aws.amazon.com/cli/

Também pressupõe que você tenha uma conta AWS com SES habilitado, ou seja, domínio verificado e modo sandbox removido.

Instruções de Instalação

Estas instruções são para OSX. Os resultados podem variar no Windows e outros *nix.

  1. Obtenha uma cópia deste script
  2. Navegue até a pasta /grunt
  3. Configure o executor de tarefas Grunt, por exemplo, instale suas dependências: npm install
  4. Preencha as seguintes informações em /grunt/package.json
    1. Defina o valor aws_account_number com o ID da sua conta AWS encontrado em https://portal.aws.amazon.com/gp/aws/manageYourAccount
    2. Defina first_warning e last_warning para a idade em dias que a chave deve ter para acionar um aviso. Esses limites disparam um envio de e-mail para report_to
    3. Defina expiry para a idade em dias em que a chave expira. Nessa idade, a chave é desativada e um e-mail é disparado para report_to notificando essa alteração
    4. Defina serviceaccount para o nome de usuário da conta que você deseja que o script ignore
    5. Defina exclusiongroup para o nome de um grupo atribuído a usuários que você deseja que o script ignore.

Invocar a Função Lambda Manualmente a partir da Linha de Comando usando o AWSCLI

Execute a função lambda pelo nome, AccessKeyRotation, registrando a saída da varredura em um arquivo chamado scan.report.log:

aws lambda invoke --function-name AccessKeyRotation scan.report.log --region us-east-1

root@kitploit:~
{
    "StatusCode": 200
}

Use jq para renderizar o conteúdo do scan.report.log no console:

jq '.' scan.report.log

root@kitploit:~
{
  "reportdate": "2016-06-26 10:37:24.071091",
  "users": [
    {
      "username": "TestS3User",
      "userid": "1",
      "keys": [
        {
          "age": 72,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************Q3GA1"
        },
        {
          "age": 12,
          "changed": false,
          "state": "key is still young",
          "accesskeyid": "**************F3AA2"
        }
      ]
    },
    {
      "username": "BlahUser22",
      "userid": "2",
      "keys": []
    },
    {
      "username": "LambdaFake1",
      "userid": "3",
       "keys": [
        {
          "age": 23,
          "changed": false,
          "state": "key is due to expire in 1 week (7 days)",
          "accesskeyid": "**************DFG12"
        },
        {
          "age": 296,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************4ZASD"
        }
      ]
    },
    {
      "username": "apiuser49",
      "userid": "4",
       "keys": [
        {
          "age": 30,
          "changed": true,
          "state": "key is now EXPIRED! Changing key to INACTIVE state",
          "accesskeyid": "**************ER2E2"
        },
        {
          "age": 107,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************AWQ4K"
        }
      ]
    },
    {
      "username": "UserEMRKinesis",
      "userid": "5",
       "keys": [
        {
          "age": 30,
          "changed": false,
          "state": "key is now EXPIRED! Changing key to INACTIVE state",
          "accesskeyid": "**************MGB41A"
        }
      ]
    },
    {
      "username": "CDN-Drupal",
      "userid": "6",
       "keys": [
        {
          "age": 10,
          "changed": false,
          "state": "key is still young",
          "accesskeyid": "**************ZDSQ5A"
        },
        {
          "age": 5,
          "changed": false,
          "state": "key is still young",
          "accesskeyid": "**************E3ODA"
        }
      ]
    },
    {
      "username": "ChocDonutUser1",
      "userid": "7",
       "keys": [
        {
          "age": 59,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************CSA123"
        }
      ]
    },
    {
      "username": "ChocDonut2",
      "userid": "8",
       "keys": [
        {
          "age": 60,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************FDGD2"
        }
      ]
    },
    {
      "username": "[email protected]",
      "userid": "9",
       "keys": [
        {
          "age": 45,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************BLQ5GJ"
        },
        {
          "age": 71,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************GJFF53"
        }
      ]
    }
  ]
}

Opção de Configuração Adicional

  • Você pode escolher definir a mensagem usada para cada aviso e a desativação final alterando os valores sob key_disabler.keystates.<state>.message
  • Você pode alterar o comprimento do mascaramento em key_disabler.mask_accesskey_length. As chaves de acesso têm 20 caracteres de comprimento.

Solução de Problemas

Este script é fornecido como está. Ficamos felizes em responder perguntas conforme o tempo permitir, mas não podemos dar garantias.

Se as coisas não funcionarem, certifique-se de que:

  • Você pode autenticar com sucesso na AWS usando a ferramenta de linha de comando AWSCLI
  • O SES não está no modo sandbox e o domínio do remetente foi verificado
  • A região selecionada fornece tanto Lambda quanto SES https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

Pontos Extras

Uma vez que a Função Lambda tenha sido implantada com sucesso - os seguintes comandos podem ser executados:

  1. aws lambda list-functions
  2. openssl dgst -binary -sha256 ..\Releases\AccessKeyRotationPackage.1.0.18.zip | openssl base64
  3. aws lambda invoke --function-name AccessKeyRotation report.log --region us-east-1
  4. jq '.' report.log
  5. jq '.users[] | select(.username=="johndoe")' report.log
  6. jq '.' report.log | grep age | cut -d':' -f2 | sort -n

Pontos Extras Extras

  1. jq 'def maximal_by(f): (map(f) | max) as $mx | .[] | select(f == $mx); .users | maximal_by(.keys[].age)' report.log
  2. jq 'def minimal_by(f): (map(f) | min) as $mn | .[] | select(f == $mn); .users | minimal_by(.keys[].age)' report.log
Baixar ferramenta
  • Defina o valor send_completion_report como True para habilitar a entrega de e-mail via SES
  • Defina o valor report_to para o endereço de e-mail para o qual você gostaria de receber relatórios de exclusão
  • Defina o valor report_from para o endereço de e-mail que você gostaria de usar como endereço do remetente para relatórios de exclusão. Observe que o domínio para isso precisa ser verificado no AWS SES.
  • Defina deployment_region para uma região que suporte Lambda.
  • Defina email_region para a região que suporta SES. Certifique-se também de que a região tenha o modo sandbox do SES desabilitado.
    • Consulte a tabela de regiões da AWS para suporte https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
  • Certifique-se de que você pode se conectar com sucesso à AWS a partir da CLI, por exemplo, execute aws iam get-user para verificar a conexão bem-sucedida
  • a partir do diretório /grunt execute grunt bumpup && grunt deployLambda para incrementar o número da versão e realizar uma compilação/implantação da função Lambda na região selecionada