Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
aws-key-disabler — Un piccolo script lambda che disabilita le chiavi di accesso più vecchie di un determinato numero di giorni. | Kitploit
Strumenti/GitHubGitHub/te-papa/aws-key-disabler
Audit di ConfigurazioneSicurezza CloudGestione Identità e Accessi (IAM)
GitHubte-papa/aws-key-disabler

aws-key-disabler

Un piccolo script lambda che disabilita le chiavi di accesso più vecchie di un determinato numero di giorni.

Vedi Repository
153365 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

AWS Lambda - Disabilitatore di Chiavi di Accesso IAM

Image of KeyIcon

Il Disabilitatore di Chiavi AWS è una funzione Lambda che disabilita le chiavi di accesso degli utenti IAM AWS dopo un periodo di tempo prestabilito per ridurre il rischio associato alle chiavi di accesso obsolete.

Architettura AWS Lambda

Image of Arch

Output SysOps per l'utente finale

Image of iPhoneEmail

Toolchain per sviluppatori

Image of Toolchain

Limitazioni attuali

  • Un report contenente l'output (json) della scansione verrà inviato a un singolo account sysadmin definito, fare riferimento all'attributo report_to nel file di configurazione della build /grunt/package.json.
  • Le chiavi vengono solo disabilitate, non eliminate né sostituite

Prerequisiti

Questo script richiede i seguenti componenti per funzionare.

  • Node.js con NPM installato https://nodejs.org/en/
  • Gruntjs installato http://gruntjs.com/
  • Strumento a riga di comando AWSCLI installato https://aws.amazon.com/cli/

Si presuppone inoltre di disporre di un account AWS con SES abilitato, ovvero dominio verificato e modalità sandbox rimossa.

Istruzioni per l'installazione

Queste istruzioni sono per OSX. I risultati possono variare su Windows e altri sistemi *nix.

  1. Ottieni una copia di questo script
  2. Naviga nella cartella /grunt
  3. Configura il task runner Grunt, ad esempio installa le sue dipendenze: npm install
  4. Compila le seguenti informazioni in /grunt/package.json
    1. Imposta il valore aws_account_number con il tuo ID account AWS trovato su https://portal.aws.amazon.com/gp/aws/manageYourAccount
    2. Imposta first_warning e last_warning all'età in giorni della chiave per attivare un avviso. Questi limiti attivano l'invio di un'email a report_to
    3. Imposta expiry all'età in giorni alla quale la chiave scade. A questa età la chiave viene disabilitata e viene inviata un'email a report_to che notifica la modifica
    4. Imposta serviceaccount al nome utente dell'account che si desidera ignorare nello script
    5. Imposta exclusiongroup al nome di un gruppo assegnato agli utenti che si desidera ignorare nello script.

Richiamare la funzione Lambda manualmente dalla riga di comando utilizzando AWSCLI

Esegui la funzione lambda per nome, AccessKeyRotation, registrando l'output della scansione in un file chiamato scan.report.log:

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

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

Usa jq per visualizzare il contenuto del file scan.report.log nella 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"
        }
      ]
    }
  ]
}

Opzioni di configurazione aggiuntive

  • Puoi scegliere di impostare il messaggio utilizzato per ciascun avviso e la disabilitazione finale modificando i valori in key_disabler.keystates.<state>.message
  • Puoi modificare la lunghezza della mascheratura in key_disabler.mask_accesskey_length. Le chiavi di accesso sono lunghe 20 caratteri.

Risoluzione dei problemi

Questo script è fornito così com'è. Siamo felici di rispondere alle domande se il tempo lo consente, ma non possiamo garantire nulla.

Se le cose non funzionano, assicurati che:

  • di poterti autenticare correttamente con AWS utilizzando lo strumento a riga di comando AWSCLI
  • SES non sia in modalità sandbox e il dominio del mittente sia stato verificato
  • La regione selezionata supporti sia Lambda che SES https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

Punti bonus

Una volta che la funzione Lambda è stata distribuita con successo, è possibile eseguire i seguenti comandi:

  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

Punti doppi bonus

  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
Scarica lo strumento
  • Imposta il valore send_completion_report su True per abilitare la consegna delle email tramite SES
  • Imposta il valore report_to all'indirizzo email a cui desideri ricevere i report di eliminazione
  • Imposta il valore report_from all'indirizzo email che desideri utilizzare come mittente per i report di eliminazione. Nota che il dominio deve essere verificato in AWS SES.
  • Imposta deployment_region su una regione che supporta Lambda. 10 Imposta email_region sulla regione che supporta SES. Assicurati inoltre che la regione abbia la modalità sandbox SES disabilitata.
    • Consulta la tabella delle regioni AWS per il supporto https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
  • Assicurati di poterti connettere correttamente ad AWS dalla CLI, ad esempio esegui aws iam get-user per verificare la connessione
  • dalla directory /grunt esegui grunt bumpup && grunt deployLambda per incrementare il numero di versione ed eseguire una build/distribuzione della funzione Lambda nella regione selezionata