
مكتبة لكشف الأسرار المعروفة عبر العديد من أطر العمل الويب.

مكتبة بايثون نقية لتحديد استخدام الأسرار التشفيرية المعروفة أو الضعيفة جداً عبر مجموعة متنوعة من المنصات. تم تصميم المشروع ليكون مستودعاً لمختلف "الأسرار المعروفة" (على سبيل المثال، مفاتيح آلة ASP.NET الموجودة في أمثلة الدروس)، وتوفير طبقة تجريد مستقلة عن اللغة لتحديد استخدامها.
معرفة متى تم استخدام "سر سيئ" عادةً ما تكون مسألة فحص منتج تشفيري تم استخدام السر فيه: على سبيل المثال، ملف تعريف ارتباط (cookie) موقع بخوارزمية تجزئة رئيسية. يمكن أن تصبح الأمور معقدة عند الغوص في شذوذ التنفيذ الفردي الذي توفره كل منصة، وهو ما تهدف هذه المكتبة إلى تخفيفه.
اطلع على مقالتنا الكاملة في المدونة على مدونة Black Lantern Security!
مستوحى من Blacklist3r، مع رغبة في التوسع في المنصات المدعومة وإزالة التبعيات على اللغة ونظام التشغيل.
الوحدات السلبية تحلل المنتجات التشفيرية (ملفات تعريف الارتباط، الرموز، عناوين URL الموقعة، إلخ) التي تمتلكها بالفعل. تعمل دون اتصال بالإنترنت عن طريق محاولة فك التشفير أو التحقق من المنتج مقابل قاعدة بيانات من الأسرار المعروفة.
| الاسم | الوصف |
|---|---|
| ASPNET_Viewstate | يتحقق من viewstate/generator مقابل قائمة من مفاتيح الآلة المعروفة. |
| ASPNET_Resource | يتحقق من عناوين URL المشفرة لـ WebResource.axd و ScriptResource.axd مقابل قائمة من مفاتيح الآلة المعروفة. مفيد عندما لا يكون __VIEWSTATE موجوداً في الصفحة. |
| Telerik_HashKey | يتحقق من الإصدارات المصححة (2017+) من Telerik UI بحثاً عن Telerik.Upload.ConfigurationHashKey معروف |
| Telerik_EncryptionKey | يتحقق من الإصدارات المصححة (2017+) من Telerik UI بحثاً عن Telerik.Web.UI.DialogParametersEncryptionKey معروف |
| Flask_SignedCookies | يتحقق من كلمة مرور توقيع ملفات تعريف الارتباط الضعيفة لـ Flask. غلاف لـ flask-unsign |
| Peoplesoft_PSToken | يمكنه التحقق من PS_TOKEN الخاص بـ Peoplesoft بحثاً عن كلمة مرور توقيع ضعيفة/سيئة |
| Django_SignedCookies | يتحقق من ملفات تعريف الارتباط الخاصة بالجلسة في Django (عندما تكون في وضع signed_cookie) بحثاً عن secret_key معروفة لـ Django |
| Rails_SecretKeyBase | يتحقق من ملفات تعريف الارتباط الموقعة أو المشفرة لجلسة Ruby on Rails (من إصدارات رئيسية متعددة) بحثاً عن secret_key_base معروفة |
| Generic_JWT | يتحقق من JWTs بحثاً عن أسرار HMAC معروفة أو مفاتيح RSA خاصة |
| Jsf_viewstate | يتحقق من تطبيقات Mojarra و Myfaces لـ Java Server Faces (JSF) بحثاً عن استخدام مفاتيح سرية معروفة أو ضعيفة |
| Symfony_SignedURL | يتحقق من عناوين URL الخاصة بـ "_fragment" في Symfony بحثاً عن مفتاح HMAC معروف. يعمل على عنوان URL الكامل بما في ذلك التجزئة |
| Express_SignedCookies_ES | يتحقق من middleware express-session في express.js بحثاً عن ملفات تعريف الارتباط الموقعة وملفات تعريف ارتباط الجلسة بحثاً عن "secret session" معروف |
| Express_SignedCookies_CS | يتحقق من middleware cookie-session في express.js بحثاً عن ملفات تعريف الارتباط الموقعة وملفات تعريف ارتباط الجلسة بحثاً عن سر معروف |
| Laravel_SignedCookies | يتحقق من ملفات تعريف الارتباط "laravel_session" بحثاً عن "APP_KEY" معروف لـ Laravel |
| ASPNET_Compressedviewstate | يتحقق من مقتطف كود ضعف Viewstate مضغوط مخصص كان شائعاً وقابلاً للاستغلال عن بعد (RCE) |
| Rack2_SignedCookies | يتحقق من ملفات تعريف الارتباط الموقعة لـ Rack 2.x بحثاً عن مفاتيح سرية معروفة |
| Yii2_SignedCookies | يتحقق من ملفات تعريف الارتباط الموقعة لإطار Yii2 بحثاً عن مفاتيح التحقق من صحة ملفات تعريف الارتباط المعروفة |
| Shiro_RememberMe | يتحقق من ملفات تعريف الارتباط rememberMe الخاصة بـ Apache Shiro بحثاً عن مفاتيح تشفير AES معروفة |
| LTPA_Token | يتحقق من ملفات تعريف الارتباط LtpaToken و LtpaToken2 الخاصة بـ IBM WebSphere بحثاً عن مفاتيح تشفير LTPA معروفة |
الوحدات النشطة تذهب خطوة أبعد من الكشف السلبي. تستخدم التصفية المسبقة القائمة على YARA لبصمة الهدف المباشر (بناءً على رؤوس استجابة HTTP، وملفات تعريف الارتباط، ومحتوى الجسم)، ثم تقوم بتزوير منتجات تشفيرية باستخدام مفاتيح معروفة وإرسالها إلى الهدف لتأكيد ما إذا كان المفتاح مقبولاً. وهذا يجعلها مفيدة في الحالات التي لا تملك فيها رمزاً لتحليله ولكنك تشك في أن الهدف قد يستخدم أسراراً افتراضية أو معروفة.
الوحدات النشطة مفعلة افتراضياً في وضع URL (--url). استخدم --passive-only لتعطيلها.
| الاسم | الوصف |
|---|---|
| Shiro_RememberMe_Key | يقوم بتزوير ملفات تعريف الارتباط rememberMe الخاصة بـ Apache Shiro باستخدام مفاتيح AES معروفة واختبار ما إذا كان الهدف يقبلها (استغلال إلغاء التسلسل RCE) |
| GlobalProtect_DefaultMasterKey | يختبر بوابات PAN-OS GlobalProtect لاستخدام مفتاح التشفير الرئيسي الافتراضي |
| LTPA_Token_Key | يقوم بتزوير ملفات تعريف الارتباط LtpaToken2 الخاصة بـ IBM WebSphere باستخدام مفاتيح LTPA معروفة واختبار ما إذا كان الهدف يمنح المصادقة (تجاوز المصادقة) |
لدينا حزمة على pypi، لذا يمكنك فقط تنفيذ pip install badsecrets لاستخدام المكتبة.
أفضل طريقة لاستخدام Badsecrets هي ببساطة تشغيل badsecrets بعد تثبيت الحزمة باستخدام pip:```
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
في الخلفية، يستخدم مثال `cli.py`. يمكن أيضًا الوصول إلى واجهة الأوامر يدويًا دون تثبيت pip:
#### بدون تثبيت pip:```bash
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
لاستخدام الأمثلة، بعد تثبيت pip، قم بـ git clone للمستودع و cd إلى دليل badsecrets:```
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
الأوامر في قسم المثال أدناه تفترض أنك في هذا الدليل.
إذا كنت تستخدم وحدة Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot)، فلا تحتاج إلى فعل أي شيء آخر - سيقوم BBOT بتثبيت الحزمة لك.
### cli.py
تتضمن Bad secrets [مثال CLI](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) للراحة عند التحقق يدويًا من الأسرار. كما ذكر أعلاه، يمكن الوصول إليه أيضًا بمجرد تنفيذ `badsecrets`، بعد تثبيت ناجح باستخدام pip.
#### الاستخدام```
usage: badsecrets [-h] [-nc] [-j] [-u URL] [-nh] [-c FILE_OR_MODULE:KEYS]
[-p PROXY] [-a USER_AGENT] [-H HEADER] [-d] [-t TIMEOUT]
[-P] [-l]
[product ...]
Check cryptographic products against badsecrets library
positional arguments:
product Cryptographic product to check for known secrets