
TLS-Scanner v7.0.0-rtc
पेंटेस्टर और शोधकर्ताओं के लिए स्वचालित TLS सर्वर और क्लाइंट कॉन्फ़िगरेशन स्कैनर। सिफर सूट, प्रोटोकॉल संस्करण और सुरक्षा दिशानिर्देशों का मूल्यांकन करता है, अनुकूलन योग्य स्कैन गहराई और मशीन-पठनीय आउटपुट के साथ।
TLS-Scanner
TLS-Scanner एक उपकरण है जो पेनटेस्टर्स और सुरक्षा शोधकर्ताओं की TLS सर्वर और क्लाइंट कॉन्फ़िगरेशन के मूल्यांकन में सहायता करता है।
कृपया ध्यान दें: TLS-Scanner एक शोध उपकरण है जो TLS डेवलपर्स, पेनटेस्टर्स, प्रशासकों और शोधकर्ताओं के लिए है। इसमें कोई GUI नहीं है। यह पहले संस्करण में है और इसमें कुछ बग्स हो सकते हैं।
संकलन
TLS-Scanner को संकलित और उपयोग करने के लिए, आपको निम्नलिखित चलाना होगा:
$ cd TLS-Scanner
$ git submodule update --init --recursive
$ mvn clean package
वैकल्पिक रूप से, यदि आप जल्दी में हैं, तो आप परीक्षणों को छोड़ सकते हैं:
$ mvn clean package -DskipTests=true
यदि आप TLS-Scanner को एक लाइब्रेरी के रूप में उपयोग करना चाहते हैं, तो आपको इसे निम्नलिखित कमांड से इंस्टॉल करना होगा:
$ mvn clean install
चलाना
TLS-Scanner चलाने के लिए आपको apps/ फ़ोल्डर में से एक jar फ़ाइल चलानी होगी। इन्हें आप स्वयं ऐप को संकलित करके या GitHub से रिलीज़ की गई jar फ़ाइलें डाउनलोड करके प्राप्त कर सकते हैं।
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433
महत्वपूर्ण पैरामीटर
आपको -connect पैरामीटर के साथ स्कैन करने के लिए एक होस्ट निर्दिष्ट करना होगा।
यदि आप स्कैन के प्रदर्शन में सुधार करना चाहते हैं, तो आप उपयोग किए गए थ्रेड्स की संख्या बढ़ाने के लिए -threads पैरामीटर का उपयोग कर सकते हैं।
प्रदर्शन कारणों से एक और महत्वपूर्ण पैरामीटर -scanDetail है, जिसका उपयोग यह कॉन्फ़िगर करने के लिए किया जा सकता है कि आप कितना विस्तार से स्कैन करना चाहते हैं। संभावित मान तेज़ से लेकर बहुत विस्तृत तक हैं: QUICK, NORMAL, DETAILED, ALL।
आउटपुट का विवरण -reportDetail पैरामीटर से कॉन्फ़िगर किया जा सकता है। दिशा-निर्देशों के बारे में अधिक विवरण देखने के लिए, -reportDetail ALL का उपयोग करें।
डिफ़ॉल्ट रूप से, परिणाम केवल कंसोल पर लिखे जाते हैं। यदि आप मशीन-पढ़ने योग्य आउटपुट चाहते हैं, तो आप परिणामों को स्वचालित रूप से JSON फ़ाइल में लिखने के लिए -outputFile output.json का उपयोग कर सकते हैं।
उपयोग के मामले
बदलने के लिए सबसे महत्वपूर्ण पैरामीटर -scanDetail और -reportDetail हैं। निम्नलिखित में, हम इन पैरामीटरों के कुछ उपयोग के मामलों की व्याख्या करते हैं।
डिफ़ॉल्ट स्कैन
अधिकांश मामलों के लिए, हमारी डिफ़ॉल्ट पैरामीटर सेटिंग्स पर्याप्त हैं। यह दोनों विवरण स्तरों को NORMAL पर सेट करके स्कैन करता है।
तेज़ स्कैन
यदि आप एक तेज़ स्कैन करना चाहते हैं और अपने सिस्टम का त्वरित अवलोकन प्राप्त करना चाहते हैं, तो हम दोनों विवरण स्तरों को QUICK पर सेट करने की सलाह देते हैं। यह कुछ निष्पादित प्रोब्स के विस्तार को सीमित करके रनटाइम को कम करता है और रिपोर्ट विवरण को बहुत विस्तृत और तकनीकी जानकारी शामिल न करने के लिए सीमित करता है।
विस्तृत स्कैन
यदि आप अपने सिस्टम का पूरी तरह से मूल्यांकन करना चाहते हैं और हमारे पास जो कुछ भी है उसे निष्पादित करना चाहते हैं, तो हम दोनों विवरण स्तरों को ALL पर सेट करने की सलाह देते हैं। यह सभी मौजूदा प्रोब्स को पूरी तरह से निष्पादित करता है और आगे के विश्लेषण और मूल्यांकन के लिए बहुत विस्तृत जानकारी प्रिंट करता है।
सभी पैरामीटर
सभी संभावित पैरामीटरों के बारे में विस्तृत जानकारी प्राप्त करने के लिए, -help पैरामीटर का उपयोग करें या बिना किसी पैरामीटर सेट किए jar को चलाएं।
डॉकर
हम TLS-Server-Scanner के आसान उपयोग के लिए पूर्व-निर्मित डॉकर इमेज प्रदान करते हैं।
$ docker run -it --network host ghcr.io/tls-attacker/tlsscanner -connect localhost:4433
यह इमेज सर्वर-स्कैनिंग के लिए उपयोग की जाने वाली है लेकिन इसमें अन्य jar फ़ाइलें भी शामिल हैं। उन्हें entrypoint बदलकर एक्सेस किया जा सकता है।
$ docker run -it --network host --entrypoint java ghcr.io/tls-attacker/tlsscanner -jar TLS-Client-Scanner.jar
हम आपको कंटेनर स्वयं बनाने के लिए एक Dockerfile भी प्रदान करते हैं:
$ docker build . -t tlsscanner
$ docker run -t tlsscanner
कृपया ध्यान दें: मैं किसी भी तरह से डॉकर सर्वोत्तम प्रथाओं से परिचित नहीं हूं। यदि आप Dockerfile को बेहतर बनाने का तरीका जानते हैं तो बेझिझक एक पुल रिक्वेस्ट भेजें
आवश्यकता प्रणाली
(TLS) प्रोब्स में कभी-कभी पूर्वापेक्षाएँ होती हैं जो इस विशिष्ट प्रोब को निष्पादित करने के लिए आवश्यक होती हैं। आवश्यकता प्रणाली आपको ऐसी आवश्यकताओं के सेट परिभाषित करने की अनुमति देती है जिन्हें प्रोब को निष्पादित करने के लिए पूरा किया जाना चाहिए।
प्रत्येक आवश्यकता एक evaluate फ़ंक्शन प्रदान करती है जो एक बूलियन मान देता है जो दर्शाता है कि आवश्यकता पूरी हुई है या नहीं। आवश्यकताओं को प्रसिद्ध तार्किक संक्रियाओं का उपयोग करके कई तरीकों से जोड़ा जा सकता है। प्रत्येक आवश्यकता कई आवश्यकताओं को श्रृंखलित करने के लिए and, or, not, और xor इंस्टेंस विधियाँ प्रदान करती है। निम्नलिखित प्रोब्स वर्तमान में कार्यान्वित हैं और तुरंत उपयोग किए जा सकते हैं:
FulfilledRequirement- हमेशाtrueपर मूल्यांकन करता है, कोई आवश्यकता नहीं दर्शाने के लिए उपयोगी।UnfulfillableRequirement- हमेशाfalseपर मूल्यांकन करता है, प्रोब्स के निष्पादन को रोकता है।ProbeRequirement-trueपर मूल्यांकन करता है यदि निर्दिष्ट प्रोब (प्रोब्स) को निष्पादित किया गया हो।PropertyRequirement-trueपर मूल्यांकन करता है यदि निर्दिष्ट विश्लेषित गुणों का पूर्वनिर्धारित मान हो। मान या तो कंस्ट्रक्टर पैरामीटर के रूप में प्रदान किया जा सकता है या कोईPropertyTrueRequirementऔरPropertyFalseRequirementकोTestResults.TRUEऔरTestResults.FALSEके शॉर्टहैंड के रूप में उपयोग कर सकता है।PropertyComparatorRequirement-trueपर मूल्यांकन करता है यदि किसी विश्लेषित गुण का संग्रह परिणाम एक स्थिर मान से छोटा, बराबर या बड़ा हो।ProtocolRequirement-trueपर मूल्यांकन करता है यदि कुछ प्रोटोकॉल संस्करण समर्थित हों।ExtensionRequirement-trueपर मूल्यांकन करता है यदि रिमोट पीयर द्वारा कुछ एक्सटेंशन समर्थित हों।OptionsRequirement-trueपर मूल्यांकन करता है यदि अतिरिक्त cli फ्लैग सेट हों। वर्तमान में कुछ क्लाइंट प्रोब्स (ALPN, SNI, session resumption) में उपयोग किया जाता है।WorkingConfigRequirement-trueपर मूल्यांकन करता है यदि एक कार्यशील कॉन्फ़िगरेशन मिल गया हो।
इन पूर्वनिर्धारित आवश्यकताओं के अलावा कोई getRequirements विधि के भीतर Requirement वर्ग को अनाम रूप से विस्तारित भी कर सकता है। यदि कुछ भी आवश्यक नहीं है, तो आप एक FulfilledRequirement लौटा सकते हैं जो हमेशा true पर मूल्यांकन करता है।
आवश्यकताओं का उपयोग कैसे करें इसके उदाहरण tls-client-scanner और tls-server-scanner के probe पैकेजों में पाए जा सकते हैं।
@Override
public Requirement<ClientReport> getRequirements() {
return new ProbeRequirement<ClientReport>(TlsProbeType.CIPHER_SUITE)
.and(new PropertyTrueRequirement<>(TlsAnalyzedProperty.SUPPORTS_DHE));
}