Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
aws-key-disabler — Ein kleines Lambda-Skript, das Zugriffsschlüssel deaktiviert, die älter als eine bestimmte Anzahl von Tagen sind. | Kitploit
Tools/GitHubGitHub/te-papa/aws-key-disabler
KonfigurationsprüfungCloud-SicherheitIdentitäts- & Zugriffsmanagement (IAM)
GitHubte-papa/aws-key-disabler

aws-key-disabler

Ein kleines Lambda-Skript, das Zugriffsschlüssel deaktiviert, die älter als eine bestimmte Anzahl von Tagen sind.

Repository anzeigen
15336vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

AWS Lambda - IAM Access-Key-Deaktivierer

Image of KeyIcon

Der AWS-Key-Deaktivierer ist eine Lambda-Funktion, die AWS-IAM-Benutzerzugriffsschlüssel nach einer festgelegten Zeit deaktiviert, um das Risiko alter Zugriffsschlüssel zu verringern.

AWS-Lambda-Architektur

Image of Arch

SysOps-Ausgabe für Endbenutzer

Image of iPhoneEmail

Entwickler-Toolchain

Image of Toolchain

Aktuelle Einschränkungen

  • Ein Bericht mit der Ausgabe (JSON) des Scans wird an ein einziges definiertes Sysadmin-Konto gesendet. Siehe dazu das Attribut report_to in der Build-Konfigurationsdatei /grunt/package.json.
  • Schlüssel werden nur deaktiviert, nicht gelöscht oder ersetzt.

Voraussetzungen

Dieses Skript erfordert die folgenden Komponenten zum Ausführen.

  • Node.js mit installiertem NPM https://nodejs.org/en/
  • Gruntjs installiert http://gruntjs.com/
  • AWSCLI-Befehlszeilentool installiert https://aws.amazon.com/cli/

Es wird außerdem vorausgesetzt, dass Sie ein AWS-Konto mit aktiviertem SES haben, d. h. Domain verifiziert und Sandbox-Modus entfernt.

Installationsanleitung

Diese Anleitung ist für OSX. Unter Windows und anderen *nix-Systemen können die Ergebnisse abweichen.

  1. Holen Sie sich eine Kopie dieses Skripts.
  2. Navigieren Sie in den Ordner /grunt.
  3. Richten Sie den Grunt-Task-Runner ein, z. B. installieren Sie seine Abhängigkeiten: npm install
  4. Füllen Sie die folgenden Informationen in /grunt/package.json aus.
    1. Setzen Sie den Wert aws_account_number auf Ihre AWS-Konto-ID, die Sie unter https://portal.aws.amazon.com/gp/aws/manageYourAccount finden.
    2. Setzen Sie first_warning und last_warning auf das Alter in Tagen, das der Schlüssel haben muss, um eine Warnung auszulösen. Diese Grenzwerte lösen das Senden einer E-Mail an report_to aus.
    3. Setzen Sie expiry auf das Alter in Tagen, bei dem der Schlüssel abläuft. Bei diesem Alter wird der Schlüssel deaktiviert und eine E-Mail an report_to gesendet, die über diese Änderung informiert.
    4. Setzen Sie serviceaccount auf den Kontobenutzernamen, den das Skript ignorieren soll.
    5. Setzen Sie exclusiongroup auf den Namen einer Gruppe, die Benutzern zugewiesen ist, die das Skript ignorieren soll.

Die Lambda-Funktion manuell über die Befehlszeile mit der AWSCLI aufrufen

Führen Sie die Lambda-Funktion mit dem Namen AccessKeyRotation aus und protokollieren Sie die Ausgabe des Scans in einer Datei namens scan.report.log:

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

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

Verwenden Sie jq, um den Inhalt von scan.report.log in der Konsole anzuzeigen:

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

Zusätzliche Konfigurationsoption

  • Sie können die für jede Warnung und die endgültige Deaktivierung verwendete Nachricht festlegen, indem Sie die Werte unter key_disabler.keystates.<state>.message ändern.
  • Sie können die Länge der Maskierung unter key_disabler.mask_accesskey_length ändern. Die Zugriffsschlüssel haben eine Länge von 20 Zeichen.

Fehlerbehebung

Dieses Skript wird wie besehen bereitgestellt. Wir beantworten gerne Fragen, sofern es die Zeit erlaubt, können jedoch keine Versprechungen machen.

Wenn etwas nicht funktioniert, stellen Sie sicher, dass:

  • Sie sich erfolgreich gegenüber AWS mit dem AWSCLI-Befehlszeilentool authentifizieren können.
  • SES nicht im Sandbox-Modus ist und die Absenderdomain verifiziert wurde.
  • Die ausgewählte Region sowohl Lambda als auch SES bereitstellt https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

Bonuspunkte

Sobald die Lambda-Funktion erfolgreich bereitgestellt wurde, können die folgenden Befehle ausgeführt werden:

  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

Extra-Bonuspunkte

  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
Tool herunterladen
  • Setzen Sie den Wert send_completion_report auf True, um die E-Mail-Zustellung über SES zu aktivieren.
  • Setzen Sie den Wert report_to auf die E-Mail-Adresse, an die Sie Löschberichte erhalten möchten.
  • Setzen Sie den Wert report_from auf die E-Mail-Adresse, die Sie als Absenderadresse für Löschberichte verwenden möchten. Beachten Sie, dass die Domain dafür in AWS SES verifiziert sein muss.
  • Setzen Sie deployment_region auf eine Region, die Lambda unterstützt.
  • Setzen Sie email_region auf die Region, die SES unterstützt. Stellen Sie außerdem sicher, dass in der Region der SES-Sandbox-Modus deaktiviert ist.
    • Siehe die AWS-Regionstabelle für Unterstützung https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
  • Stellen Sie sicher, dass Sie erfolgreich von der CLI aus eine Verbindung zu AWS herstellen können, z. B. führen Sie aws iam get-user aus, um die erfolgreiche Verbindung zu überprüfen.
  • Führen Sie vom /grunt-Verzeichnis aus grunt bumpup && grunt deployLambda aus, um Ihre Versionsnummer zu erhöhen und einen Build/Deploy der Lambda-Funktion in die ausgewählte Region durchzuführen.