Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
aws-key-disabler — Un pequeño script lambda que deshabilitará las claves de acceso con más de una cantidad determinada de días. | Kitploit
Herramientas/GitHubGitHub/te-papa/aws-key-disabler
Auditoría de ConfiguraciónSeguridad en la NubeGestión de Identidad y Acceso (IAM)
GitHubte-papa/aws-key-disabler

aws-key-disabler

Un pequeño script lambda que deshabilitará las claves de acceso con más de una cantidad determinada de días.

Ver Repositorio
1533612hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

AWS Lambda - Desactivador de Claves de Acceso IAM

Icono de Llave

El desactivador de claves de AWS es una función Lambda que desactiva las claves de acceso de usuarios IAM de AWS después de un tiempo determinado para reducir el riesgo asociado a claves de acceso antiguas.

Arquitectura de AWS Lambda

Diagrama de Arquitectura

Salida de SysOps para el Usuario Final

Correo Electrónico en iPhone

Cadena de Herramientas del Desarrollador

Cadena de Herramientas

Limitaciones Actuales

  • Un informe que contiene la salida (json) del escaneo se enviará a una única cuenta de sysadmin definida; consulte el atributo report_to en el archivo de configuración de compilación /grunt/package.json.
  • Las claves solo se desactivan, no se eliminan ni reemplazan.

Requisitos Previos

Este script requiere los siguientes componentes para ejecutarse.

  • Node.js con NPM instalado https://nodejs.org/en/
  • Gruntjs instalado http://gruntjs.com/
  • Herramienta de línea de comandos AWSCLI instalada https://aws.amazon.com/cli/

También asume que tiene una cuenta de AWS con SES habilitado, es decir, dominio verificado y modo sandbox eliminado.

Instrucciones de Instalación

Estas instrucciones son para OSX. Puede variar en Windows y otros *nix.

  1. Obtenga una copia de este script.
  2. Navegue dentro de la carpeta /grunt.
  3. Configure el ejecutor de tareas Grunt, por ejemplo, instale sus dependencias: npm install.
  4. Complete la siguiente información en /grunt/package.json:
    1. Establezca el valor de aws_account_number con el ID de su cuenta de AWS que se encuentra en https://portal.aws.amazon.com/gp/aws/manageYourAccount.
    2. Establezca first_warning y last_warning con la antigüedad en días que debe tener la clave para activar una advertencia. Estos límites activan el envío de un correo electrónico a report_to.
    3. Establezca expiry con la antigüedad en días en que la clave expira. A esta antigüedad, la clave se desactiva y se envía un correo electrónico a report_to notificando el cambio.
    4. Establezca serviceaccount con el nombre de usuario de la cuenta que desea que el script ignore.
    5. Establezca exclusiongroup con el nombre de un grupo asignado a usuarios que desea que el script ignore.
    6. Establezca el valor de send_completion_report en True para habilitar la entrega de correo electrónico a través de SES.
    7. Establezca el valor de report_to con la dirección de correo electrónico a la que desea recibir los informes de eliminación.
    8. Establezca el valor de report_from con la dirección de correo electrónico que desea utilizar como dirección del remitente para los informes de eliminación. Tenga en cuenta que el dominio de esta dirección debe estar verificado en AWS SES.
    9. Establezca deployment_region en una región que admita Lambda.
    10. Establezca email_region en la región que admita SES. También asegúrese de que la región tenga el modo sandbox de SES deshabilitado.
      • Consulte la tabla de regiones de AWS para conocer la compatibilidad: https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
  5. Asegúrese de poder conectarse exitosamente a AWS desde la CLI, por ejemplo, ejecute aws iam get-user para verificar la conexión.
  6. Desde el directorio /grunt, ejecute grunt bumpup && grunt deployLambda para aumentar el número de versión y realizar una compilación/implementación de la función Lambda en la región seleccionada.

Invocar la Función Lambda Manualmente desde la Línea de Comandos usando AWSCLI

Ejecute la función Lambda por nombre, AccessKeyRotation, guardando la salida del escaneo en un archivo llamado scan.report.log:

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

{
    "StatusCode": 200
}

Use jq para mostrar el contenido de scan.report.log en la consola:

jq '.' scan.report.log

{
  "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"
        }
      ]
    }
  ]
}

Opción de Configuración Adicional

  • Puede elegir configurar el mensaje utilizado para cada advertencia y la desactivación final cambiando los valores bajo key_disabler.keystates.<state>.message.
  • Puede cambiar la longitud del enmascaramiento bajo key_disabler.mask_accesskey_length. Las claves de acceso tienen 20 caracteres de longitud.

Solución de Problemas

Descargar herramienta