
कई वेब फ्रेमवर्क्स में ज्ञात गुप्त जानकारियों का पता लगाने के लिए एक लाइब्रेरी

विभिन्न प्लेटफ़ॉर्मों में ज्ञात या अत्यंत कमज़ोर क्रिप्टोग्राफ़िक सीक्रेट्स के उपयोग की पहचान करने के लिए एक शुद्ध पायथन लाइब्रेरी। यह प्रोजेक्ट दोनों उद्देश्यों के लिए डिज़ाइन किया गया है: विभिन्न "ज्ञात सीक्रेट्स" का भंडार होना (उदाहरण के लिए, ट्यूटोरियल के उदाहरणों में पाई जाने वाली ASP.NET मशीन कुंजियाँ), और उनके उपयोग की पहचान करने के लिए एक भाषा-अज्ञेय अमूर्तन परत प्रदान करना।
यह जानना कि कब कोई 'बैड सीक्रेट' उपयोग किया गया था, आमतौर पर किसी क्रिप्टोग्राफ़िक उत्पाद की जाँच करने का विषय है जिसमें उस सीक्रेट का उपयोग किया गया था: उदाहरण के लिए, एक कुकी जो किसी कीड हैशिंग एल्गोरिदम से हस्ताक्षरित है। जब आप प्रत्येक प्लेटफ़ॉर्म द्वारा प्रदान की जाने वाली व्यक्तिगत कार्यान्वयन विचित्रताओं में उतरते हैं तो चीज़ें जटिल हो सकती हैं, जिसे कम करने का लक्ष्य यह लाइब्रेरी रखती है।
Black Lantern Security ब्लॉग पर हमारी पूरी ब्लॉग पोस्ट देखें!
Blacklist3r से प्रेरित, समर्थित प्लेटफ़ॉर्मों का विस्तार करने और भाषा तथा ऑपरेटिंग सिस्टम निर्भरताओं को हटाने की इच्छा के साथ।
पैसिव मॉड्यूल उन क्रिप्टोग्राफ़िक उत्पादों (कुकीज़, टोकन, हस्ताक्षरित URL, आदि) का विश्लेषण करते हैं जो आपके पास पहले से हैं। वे ज्ञात सीक्रेट्स के डेटाबेस के विरुद्ध उत्पाद को डिक्रिप्ट या सत्यापित करने का प्रयास करके ऑफ़लाइन काम करते हैं।
| नाम | विवरण |
|---|---|
| ASPNET_Viewstate | ज्ञात मशीन कुंजियों की सूची के विरुद्ध viewstate/generator की जाँच करता है। |
| ASPNET_Resource | ज्ञात मशीन कुंजियों की सूची के विरुद्ध WebResource.axd और ScriptResource.axd एन्क्रिप्टेड URL की जाँच करता है। उपयोगी तब जब किसी पृष्ठ पर __VIEWSTATE मौजूद न हो। |
| Telerik_HashKey | Telerik UI के पैच किए गए (2017+) संस्करणों में ज्ञात Telerik.Upload.ConfigurationHashKey की जाँच करता है |
| Telerik_EncryptionKey | Telerik UI के पैच किए गए (2017+) संस्करणों में ज्ञात Telerik.Web.UI.DialogParametersEncryptionKey की जाँच करता है |
| Flask_SignedCookies | कमज़ोर Flask कुकी साइनिंग पासवर्ड की जाँच करता है। flask-unsign के लिए रैपर |
| Peoplesoft_PSToken | खराब/कमज़ोर साइनिंग पासवर्ड के लिए peoplesoft PS_TOKEN की जाँच कर सकता है |
| Django_SignedCookies | ज्ञात django secret_key के लिए django के सत्र कुकीज़ (जब signed_cookie मोड में हों) की जाँच करता है |
| Rails_SecretKeyBase | ज्ञात secret_key_base के लिए Ruby on Rails के हस्ताक्षरित या एन्क्रिप्टेड सत्र कुकीज़ (कई प्रमुख रिलीज़ों से) की जाँच करता है |
| Generic_JWT | ज्ञात HMAC सीक्रेट्स या RSA निजी कुंजियों के लिए JWT की जाँच करता है |
| Jsf_viewstate | ज्ञात या कमज़ोर सीक्रेट कुंजियों के उपयोग के लिए Java Server Faces (JSF) के Mojarra और Myfaces दोनों कार्यान्वयनों की जाँच करता है |
| Symfony_SignedURL | ज्ञात HMAC कुंजी के लिए symfony "_fragment" URL की जाँच करता है। पूर्ण URL पर काम करता है, हैश सहित |
| Express_SignedCookies_ES | ज्ञात 'session secret' के लिए express.js express-session मिडलवेयर की हस्ताक्षरित कुकीज़ और सत्र कुकीज़ की जाँच करता है |
| Express_SignedCookies_CS | ज्ञात secret के लिए express.js cookie-session मिडलवेयर की हस्ताक्षरित कुकीज़ और सत्र कुकीज़ की जाँच करता है |
| Laravel_SignedCookies | ज्ञात laravel 'APP_KEY' के लिए 'laravel_session' कुकीज़ की जाँच करता है |
| ASPNET_Compressedviewstate | RCE के प्रति संवेदनशील एक समय लोकप्रिय कस्टम कंप्रेस्ड Viewstate कोड स्निपेट की जाँच करता है |
| Rack2_SignedCookies | ज्ञात सीक्रेट कुंजियों के लिए Rack 2.x हस्ताक्षरित कुकीज़ की जाँच करता है |
| Yii2_SignedCookies | ज्ञात कुकी सत्यापन कुंजियों के लिए Yii2 फ़्रेमवर्क की हस्ताक्षरित कुकीज़ की जाँच करता है |
| Shiro_RememberMe | ज्ञात AES एन्क्रिप्शन कुंजियों के लिए Apache Shiro rememberMe कुकीज़ की जाँच करता है |
| LTPA_Token | ज्ञात LTPA एन्क्रिप्शन कुंजियों के लिए IBM WebSphere LtpaToken और LtpaToken2 कुकीज़ की जाँच करता है |
| NextAuth | ज्ञात या कमज़ोर NEXTAUTH_SECRET / AUTH_SECRET के लिए NextAuth.js / Auth.js JWE सत्र कुकीज़ की जाँच करता है |
एक्टिव मॉड्यूल पैसिव डिटेक्शन से एक कदम आगे जाते हैं। वे YARA-आधारित प्रीफ़िल्टरिंग का उपयोग करके किसी लाइव लक्ष्य की फ़िंगरप्रिंटिंग करते हैं (HTTP रिस्पॉन्स हेडर, कुकीज़ और बॉडी कंटेंट के आधार पर), फिर ज्ञात कुंजियों के साथ क्रिप्टोग्राफ़िक उत्पाद बनाते हैं और यह पुष्टि करने के लिए उन्हें लक्ष्य पर भेजते हैं कि कुंजी स्वीकार की जाती है या नहीं। यह उन मामलों के लिए उपयोगी बनाता है जहाँ आपके पास विश्लेषण करने के लिए पहले से कोई टोकन नहीं है लेकिन आपको संदेह है कि लक्ष्य डिफ़ॉल्ट या सुप्रसिद्ध सीक्रेट्स का उपयोग कर रहा हो सकता है।
एक्टिव मॉड्यूल URL मोड (--url) में डिफ़ॉल्ट रूप से सक्षम होते हैं। उन्हें अक्षम करने के लिए --passive-only का उपयोग करें।
| नाम | विवरण |
|---|---|
| Shiro_RememberMe_Key | ज्ञात AES कुंजियों के साथ Apache Shiro rememberMe कुकीज़ बनाता है और परीक्षण करता है कि लक्ष्य उन्हें स्वीकार करता है या नहीं (deserialization RCE) |
| GlobalProtect_DefaultMasterKey | डिफ़ॉल्ट मास्टर एन्क्रिप्शन कुंजी के उपयोग के लिए PAN-OS GlobalProtect पोर्टल्स का परीक्षण करता है |
| LTPA_Token_Key | ज्ञात LTPA कुंजियों के साथ IBM WebSphere LtpaToken2 कुकीज़ बनाता है और परीक्षण करता है कि लक्ष्य प्रमाणीकरण प्रदान करता है या नहीं (auth bypass) |
हमारे पास एक pypi पैकेज है, इसलिए लाइब्रेरी का उपयोग करने के लिए आप बस pip install badsecrets कर सकते हैं।
Badsecrets का उपयोग करने का सबसे अच्छा तरीका है pip install करने के बाद बस badsecrets चलाना:
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
अंदर ही अंदर, यह cli.py उदाहरण का उपयोग कर रहा है। CLI को pip इंस्टॉलेशन के बिना भी मैन्युअल रूप से एक्सेस किया जा सकता है:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
उदाहरणों का उपयोग करने के लिए, pip install करने के बाद बस रेपो को git clone करें और badsecrets डायरेक्टरी में cd करें:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
नीचे दिए गए उदाहरण अनुभाग में दिए गए कमांड मानते हैं कि आप इस निर्देशिका में हैं।
यदि आप Badsecrets BBOT मॉड्यूल का उपयोग कर रहे हैं, तो आपको और कुछ करने की आवश्यकता नहीं है - BBOT आपके लिए पैकेज इंस्टॉल कर देगा।
Bad secrets में मैन्युअल रूप से secrets की जाँच करते समय सुविधा के लिए एक उदाहरण CLI शामिल है। जैसा कि ऊपर बताया गया है, सफल pip install के बाद इसे केवल badsecrets निष्पादित करके भी एक्सेस किया जा सकता है।