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

एक शुद्ध पायथन लाइब्रेरी जो विभिन्न प्लेटफार्मों पर ज्ञात या बहुत कमजोर क्रिप्टोग्राफिक रहस्यों के उपयोग की पहचान करने के लिए है। यह परियोजना विभिन्न "ज्ञात रहस्यों" (उदाहरण के लिए, ट्यूटोरियल में उदाहरणों में पाए जाने वाले ASP.NET मशीन कुंजियाँ) के भंडार के साथ-साथ उनके उपयोग की पहचान के लिए एक भाषा-अज्ञेयवादी अमूर्त परत प्रदान करने के लिए डिज़ाइन की गई है।
यह जानना कि 'बुरा रहस्य' कब उपयोग किया गया, आमतौर पर उस क्रिप्टोग्राफिक उत्पाद की जांच करने का मामला है जिसमें रहस्य का उपयोग किया गया था: उदाहरण के लिए, एक कुकी जो कीड हैशिंग एल्गोरिथम से हस्ताक्षरित है। जब आप प्रत्येक प्लेटफॉर्म द्वारा प्रदान की गई व्यक्तिगत कार्यान्वयन विशिष्टताओं में गहराई से उतरते हैं तो चीजें जटिल हो सकती हैं, जिसे यह लाइब्रेरी कम करने का लक्ष्य रखती है।
ब्लैक लैंटर्न सिक्योरिटी ब्लॉग पर हमारी पूरी ब्लॉग पोस्ट देखें!
Blacklist3r से प्रेरित, समर्थित प्लेटफार्मों का विस्तार करने और भाषा और ऑपरेटिंग सिस्टम निर्भरताओं को हटाने की इच्छा के साथ।
निष्क्रिय मॉड्यूल उन क्रिप्टोग्राफिक उत्पादों (कुकीज़, टोकन, हस्ताक्षरित URL, आदि) का विश्लेषण करते हैं जो आपके पास पहले से हैं। वे ज्ञात रहस्यों के डेटाबेस के विरुद्ध उत्पाद को डिक्रिप्ट या सत्यापित करने का प्रयास करके ऑफ़लाइन काम करते हैं।
| नाम | विवरण |
|---|---|
| ASPNET_Viewstate | ज्ञात मशीन कुंजियों की सूची के विरुद्ध viewstate/जनरेटर की जाँच करता है। |
| 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 के सत्र कुकीज़ (साइन्ड_कुकी मोड में होने पर) को ज्ञात django secret_key के लिए जाँचता है |
| Rails_SecretKeyBase | Ruby on Rails के हस्ताक्षरित या एन्क्रिप्टेड सत्र कुकीज़ (कई प्रमुख रिलीज़ से) को ज्ञात secret_key_base के लिए जाँचता है |
| Generic_JWT | JWTs को ज्ञात HMAC रहस्यों या RSA निजी कुंजियों के लिए जाँचता है |
| Jsf_viewstate | Java Server Faces (JSF) के मोजरा और माईफेसेस दोनों कार्यान्वयनों को ज्ञात या कमजोर गुप्त कुंजियों के उपयोग के लिए जाँचता है |
| Symfony_SignedURL | symfony "_fragment" URL को ज्ञात HMAC कुंजी के लिए जाँचता है। पूर्ण URL पर काम करता है, हैश सहित |
| Express_SignedCookies_ES | express.js express-session मिडलवेयर में हस्ताक्षरित कुकीज़ और सत्र कुकीज़ को ज्ञात 'session secret' के लिए जाँचता है |
| Express_SignedCookies_CS | express.js cookie-session मिडलवेयर में हस्ताक्षरित कुकीज़ और सत्र कुकीज़ को ज्ञात रहस्य के लिए जाँचता है |
| Laravel_SignedCookies | 'laravel_session' कुकीज़ को ज्ञात laravel 'APP_KEY' के लिए जाँचता है |
| ASPNET_Compressedviewstate | एक बार लोकप्रिय कस्टम संपीड़ित Viewstate कोड स्निपेट की जाँच करता है जो RCE के लिए संवेदनशील है |
| Rack2_SignedCookies | Rack 2.x हस्ताक्षरित कुकीज़ को ज्ञात गुप्त कुंजियों के लिए जाँचता है |
| Yii2_SignedCookies | Yii2 फ्रेमवर्क हस्ताक्षरित कुकीज़ को ज्ञात कुकी सत्यापन कुंजियों के लिए जाँचता है |
| Shiro_RememberMe | Apache Shiro rememberMe कुकीज़ को ज्ञात AES एन्क्रिप्शन कुंजियों के लिए जाँचता है |
| LTPA_Token | IBM WebSphere LtpaToken और LtpaToken2 कुकीज़ को ज्ञात LTPA एन्क्रिप्शन कुंजियों के लिए जाँचता है |
सक्रिय मॉड्यूल निष्क्रिय पहचान से एक कदम आगे जाते हैं। वे एक लाइव लक्ष्य को फिंगरप्रिंट करने के लिए YARA-आधारित प्रीफिल्टरिंग का उपयोग करते हैं (HTTP प्रतिक्रिया हेडर, कुकीज़ और बॉडी सामग्री के आधार पर), फिर ज्ञात कुंजियों के साथ क्रिप्टोग्राफिक उत्पाद बनाते हैं और यह पुष्टि करने के लिए लक्ष्य पर भेजते हैं कि कुंजी स्वीकार की गई है या नहीं। यह उन मामलों में उपयोगी है जहां आपके पास विश्लेषण करने के लिए पहले से कोई टोकन नहीं है, लेकिन संदेह है कि लक्ष्य डिफ़ॉल्ट या प्रसिद्ध रहस्यों का उपयोग कर सकता है।
सक्रिय मॉड्यूल URL मोड (--url) में डिफ़ॉल्ट रूप से सक्षम होते हैं। उन्हें अक्षम करने के लिए --passive-only का उपयोग करें।
| नाम | विवरण |
|---|---|
| Shiro_RememberMe_Key | ज्ञात AES कुंजियों के साथ Apache Shiro rememberMe कुकीज़ बनाता है और जाँचता है कि लक्ष्य उन्हें स्वीकार करता है या नहीं (डिसीरियलाइज़ेशन RCE) |
| GlobalProtect_DefaultMasterKey | PAN-OS GlobalProtect पोर्टलों को डिफ़ॉल्ट मास्टर एन्क्रिप्शन कुंजी के उपयोग के लिए परीक्षण करता है |
| LTPA_Token_Key | ज्ञात LTPA कुंजियों के साथ IBM WebSphere LtpaToken2 कुकीज़ बनाता है और जाँचता है कि लक्ष्य प्रमाणीकरण प्रदान करता है या नहीं (प्रमाणीकरण बायपास) |
हमारे पास एक pypi पैकेज है, इसलिए आप लाइब्रेरी का उपयोग करने के लिए बस pip install badsecrets कर सकते हैं।
Badsecrets का उपयोग करने का सबसे अच्छा तरीका है pip इंस्टॉल करने के बाद बस badsecrets चलाना:```
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
आंतरिक रूप से, यह `cli.py` उदाहरण का उपयोग कर रहा है। CLI को pip स्थापना के बिना मैन्युअल रूप से भी एक्सेस किया जा सकता है:
#### pip स्थापना के बिना:```bash
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](https://github.com/blacklanternsecurity/bbot) मॉड्यूल का उपयोग कर रहे हैं, तो आपको कुछ और करने की आवश्यकता नहीं है - BBOT आपके लिए पैकेज स्थापित कर देगा।
### cli.py
Bad secrets में मैन्युअल रूप से रहस्यों की जाँच करने की सुविधा के लिए एक [उदाहरण CLI](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) शामिल है। जैसा कि ऊपर बताया गया है, सफल pip install के बाद केवल `badsecrets` निष्पादित करके भी इसे एक्सेस किया जा सकता है।
#### उपयोग```
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