
نسخة بايثون من أداة C# لهجمات "Shadow Credentials"
pyWhisker هو معادل بلغة بايثون للأداة الأصلية Whisker التي صنعها Elad Shamir والمكتوبة بلغة C#. تسمح هذه الأداة للمستخدمين بالتلاعب بخاصية msDS-KeyCredentialLink لمستخدم/كمبيوتر هدف للحصول على سيطرة كاملة على ذلك الكائن.
تعتمد على Impacket وعلى معادل بلغة بايثون لـ DSInternals الخاص بـ Michael Grafnetter يُسمى PyDSInternals من صنع podalirius.
هذه الأداة، إلى جانب PKINITtools الخاصة بـ Dirk-jan، تسمح باستغلال أولي كامل على الأنظمة المبنية على يونكس فقط.
المتطلبات الأساسية لهذا الهجوم هي كما يلي:
msDs-KeyCredentialLink لحساب المستخدم أو الكمبيوتر الهدف.لماذا بعض المتطلبات؟
AS_REQ <-> AS_REP.سيتم رفع KRB-ERROR (16) : KDC_ERR_PADATA_TYPE_NOSUPP إذا لم يتم استيفاء المتطلب رقم 3.
مزيد من المعلومات حول هذه الأولية "Shadow Credentials":
يمكن استخدام pyWhisker لتنفيذ إجراءات متنوعة على خاصية msDs-KeyCredentialLink لهدف:
msDs-KeyCredentialLinkmsDs-KeyCredentialLinkmsDs-KeyCredentialLinkmsDs-KeyCredentialLinkmsDs-KeyCredentialLink بتنسيق JSONmsDs-KeyCredentialLink بـ KeyCredentials من ملف JSONيدعم pyWhisker طرق المصادقة التالية:
من بين أشياء أخرى، يدعم pyWhisker مستويات متعددة من الإسهاب، فقط ألحق -v، -vv، ... إلى الأمر :)
يمكن لـ pyWhisker أيضًا العمل عبر النطاقات، انظر الوسيطة -td/--target-domain.
usage: pywhisker [-h] (-t TARGET_SAMNAME | -tl TARGET_SAMNAME_LIST) [-a [{list,add,spray,remove,clear,info,export,import}]] [--use-ldaps] [--use-schannel] [-v] [-q]
[--dc-ip ip address] [-d DOMAIN] [-u USER] [-crt CERTFILE] [-key KEYFILE] [-td TARGET_DOMAIN] [--no-pass | -p PASSWORD | -H [LMHASH:]NTHASH | --aes-key hex key]
[-k] [-P PFX_PASSWORD] [-f FILENAME] [-e {PEM,PFX}] [-D DEVICE_ID]
Python (re)setter for property msDS-KeyCredentialLink for Shadow Credentials attacks.
وسائط اختيارية:
-h, --help إظهار رسالة المساعدة هذه والخروج
-t TARGET_SAMNAME, --target TARGET_SAMNAME
الحساب الهدف
-tl TARGET_SAMNAME_LIST, --target-list TARGET_SAMNAME_LIST
مسار إلى ملف يحتوي على أسماء الحسابات الهدف (واحد لكل سطر)
-a [{list,add,spray,remove,clear,info,export,import}], --action [{list,add,spray,remove,clear,info,export,import}]
الإجراء الذي سيتم تنفيذه على msDS-KeyCredentialLink
--use-ldaps استخدام LDAPS بدلاً من LDAP
--use-schannel استخدام LDAP Schannel (TLS) للمصادقة المستندة إلى الشهادة
-v, --verbose مستوى الإسهاب (-v للإسهاب، -vv للتصحيح)
-q, --quiet عدم عرض أي معلومات على الإطلاق
المصادقة والاتصال:
--dc-ip ip address عنوان IP لوحدة تحكم النطاق أو KDC لـ Kerberos. إذا تم حذفه، فسيتم استخدام جزء النطاق (FQDN) المحدد في معرّف الهوية
-d DOMAIN, --domain DOMAIN
النطاق (FQDN) للمصادقة عليه
-u USER, --user USER المستخدم للمصادقة به
-crt, --certfile CERTFILE
مسار إلى شهادة المستخدم (تنسيق PEM) لمصادقة Schannel
-key, --keyfile KEYFILE
مسار إلى المفتاح الخاص للمستخدم (تنسيق PEM) لمصادقة Schannel
-td TARGET_DOMAIN, --target-domain TARGET_DOMAIN
النطاق الهدف (إذا كان مختلفًا عن نطاق المستخدم المصادق)
--no-pass لا تطلب كلمة مرور (مفيد لـ -k)
-p PASSWORD, --password PASSWORD
كلمة المرور للمصادقة بها
-H [LMHASH:]NTHASH, --hashes [LMHASH:]NTHASH
تجزئات NT/LM، التنسيق هو LMhash:NThash
--aes-key hex key مفتاح AES لاستخدامه في مصادقة Kerberos (128 أو 256 بت)
-k, --kerberos استخدام مصادقة Kerberos. يحصل على بيانات الاعتماد من ملف .ccache (KRB5CCNAME) بناءً على معلمات الهدف. إذا تعذر العثور على بيانات اعتماد صالحة، فسيستخدم تلك المحددة في سطر الأوامر
الوسائط عند تعيين الإجراء إلى add:
-P PFX_PASSWORD, --pfx-password PFX_PASSWORD
كلمة مرور لشهادة PFX الموقعة ذاتيًا المخزنة (ستكون عشوائية إذا لم يتم تعيينها، غير مطلوبة عند التصدير إلى PEM)
-f FILENAME, --filename FILENAME
اسم الملف لتخزين شهادة ومفتاح PEM أو PFX الموقع ذاتيًا المُنشأ، أو اسم الملف لإجراءات "import"/"export"
-e {PEM,PFX}, --export {PEM,PFX}
اختر تصدير الشهادة + المفتاح الخاص بتنسيق PEM أو PFX (أي #PKCS12) (الافتراضي: PFX))
الوسائط عند تعيين الإجراء إلى remove:
-D DEVICE_ID, --device-id DEVICE_ID
معرف الجهاز لـ KeyCredentialLink المراد إزالته عند تعيين الإجراء إلى remove
فيما يلي أمثلة ولقطات شاشة لما يمكن أن يفعله pyWhisker.
لدى pyWhisker القدرة على عرض KeyCredentials الموجودة. بالإضافة إلى ذلك، يمكنه توسيع الهيكل بأكمله لعرض كل جزء من المعلومات التي يحتوي عليها هذا الكائن (بما في ذلك معلمات المفتاح العام RSA).
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "list"
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "info" --device-id 6419739b-ff90-f5c7-0737-1331daeb7db6

لدى pyWhisker القدرة على إزالة قيم محددة أو مسح الخاصية بالكامل.