Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
aws-key-disabler — نص برمجي صغير لـ Lambda يعطل مفاتيح الوصول الأقدم من عدد معين من الأيام. | Kitploit
أدوات/GitHubGitHub/te-papa/aws-key-disabler
تدقيق التكوينأمن السحابةإدارة الهوية والوصول (IAM)
GitHubte-papa/aws-key-disabler

aws-key-disabler

نص برمجي صغير لـ Lambda يعطل مفاتيح الوصول الأقدم من عدد معين من الأيام.

عرض المستودع
15336منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

AWS Lambda - معطل مفاتيح الوصول IAM

صورة أيقونة المفتاح

أداة تعطيل مفاتيح AWS هي دالة Lambda تقوم بتعطيل مفاتيح الوصول لمستخدمي IAM في AWS بعد فترة زمنية محددة بهدف تقليل المخاطر المرتبطة بالمفاتيح القديمة.

بنية Lambda من AWS

صورة البنية

مخرجات SysOps للمستخدم النهائي

صورة بريد iPhone

سلسلة أدوات المطور

صورة سلسلة الأدوات

القيود الحالية

  • سيتم إرسال تقرير يحتوي على المخرجات (json) من الفحص إلى حساب مسؤول نظام واحد محدد، راجع سمة report_to في ملف تكوين البناء /grunt/package.json.
  • يتم تعطيل المفاتيح فقط، ولا يتم حذفها أو استبدالها.

المتطلبات الأساسية

يتطلب تشغيل هذا البرنامج النصي المكونات التالية:

  • Node.js مع تثبيت NPM https://nodejs.org/en/
  • تثبيت Gruntjs http://gruntjs.com/
  • تثبيت أداة سطر الأوامر AWSCLI https://aws.amazon.com/cli/

كما يفترض أن لديك حساب AWS مع تمكين SES، أي تم التحقق من النطاق وإزالة وضع الحماية (sandbox).

تعليمات التثبيت

هذه التعليمات مخصصة لنظام OSX. قد تختلف النتائج على Windows وأنظمة *nix الأخرى.

  1. احصل على نسخة من هذا البرنامج النصي
  2. انتقل إلى مجلد /grunt
  3. قم بإعداد مشغل مهام Grunt، على سبيل المثال: قم بتثبيت تبعياته: npm install
  4. املأ المعلومات التالية في /grunt/package.json
    1. قم بتعيين قيمة aws_account_number إلى معرف حساب AWS الخاص بك الموجود على https://portal.aws.amazon.com/gp/aws/manageYourAccount
    2. قم بتعيين first_warning و last_warning إلى عمر المفتاح بالأيام لتشغيل تحذير. هذه الحدود ترسل بريدًا إلكترونيًا إلى report_to
    3. قم بتعيين expiry إلى العمر بالأيام عندما ينتهي المفتاح. في هذا العمر يتم تعطيل المفتاح ويتم إرسال بريد إلكتروني إلى report_to يخطر بهذا التغيير
    4. قم بتعيين serviceaccount إلى اسم حساب المستخدم الذي تريد أن يتجاهله البرنامج النصي
    5. قم بتعيين exclusiongroup إلى اسم مجموعة مخصصة للمستخدمين الذين تريد أن يتجاهلهم البرنامج النصي

استدعاء دالة Lambda يدويًا من سطر الأوامر باستخدام AWSCLI

قم بتنفيذ دالة Lambda بالاسم AccessKeyRotation، مع تسجيل مخرجات الفحص في ملف يسمى scan.report.log:

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

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

استخدم jq لعرض محتويات scan.report.log في وحدة التحكم:

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

خيار تكوين إضافي

  • يمكنك اختيار تعيين الرسالة المستخدمة لكل تحذير وللتعطيل النهائي عن طريق تغيير القيم تحت key_disabler.keystates.<state>.message
  • يمكنك تغيير طول الإخفاء تحت key_disabler.mask_accesskey_length. أطوال مفاتيح الوصول هي 20 حرفًا.

استكشاف الأخطاء وإصلاحها

يتم توفير هذا البرنامج النصي كما هو. نحن سعداء بالإجابة على الأسئلة بقدر ما يسمح الوقت ولكن لا يمكننا تقديم أي وعود.

إذا لم تعمل الأمور، تأكد من أن:

  • يمكنك المصادقة بنجاح ضد AWS باستخدام أداة سطر الأوامر AWSCLI
  • SES ليس في وضع الحماية (sandbox) وتم التحقق من نطاق المرسل
  • المنطقة المحددة تدعم كلاً من Lambda و SES https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

نقاط إضافية

بمجرد نشر دالة Lambda بنجاح - يمكن تنفيذ الأوامر التالية:

  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

نقاط إضافية مضاعفة

  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
تنزيل الأداة
  • قم بتعيين قيمة send_completion_report إلى True لتمكين تسليم البريد الإلكتروني عبر SES
  • قم بتعيين قيمة report_to إلى عنوان البريد الإلكتروني الذي ترغب في تلقي تقارير الحذف إليه
  • قم بتعيين قيمة report_from إلى عنوان البريد الإلكتروني الذي ترغب في استخدامه كعنوان مرسل لتقارير الحذف. لاحظ أن النطاق الخاص بهذا العنوان يجب أن يكون موثقًا في AWS SES.
  • قم بتعيين deployment_region إلى منطقة تدعم Lambda.
  • قم بتعيين email_region إلى المنطقة التي تدعم SES. تأكد أيضًا من أن المنطقة لديها وضع الحماية (sandbox) في SES معطل.
    • راجع جدول مناطق AWS للدعم https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
  • تأكد من أنك تستطيع الاتصال بنجاح بـ AWS من CLI، على سبيل المثال قم بتشغيل aws iam get-user للتحقق من الاتصال الناجح
  • من دليل /grunt قم بتشغيل grunt bumpup && grunt deployLambda لزيادة رقم الإصدار وإجراء بناء/نشر لدالة Lambda إلى المنطقة المحددة