
एक सक्रिय TLS सर्वर फिंगरप्रिंटिंग उपकरण जो तैयार किए गए Client Hello पैकेट भेजता है ताकि अद्वितीय JARM हैश उत्पन्न किए जा सकें, जिनका उपयोग सर्वर कॉन्फ़िगरेशन की पहचान करने, बुनियादी ढांचे को समूहबद्ध करने और दुर्भावनापूर्ण सर्वरों का पता लगाने के लिए किया जाता है।
कृपया अधिक जानकारी के लिए प्रारंभिक JARM ब्लॉग पोस्ट पढ़ें।
JARM एक सक्रिय ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) सर्वर फिंगरप्रिंटिंग टूल है।
JARM फिंगरप्रिंट का उपयोग इसके लिए किया जा सकता है:
JARM समर्थन इनमें जोड़ा गया है या जोड़ा जा रहा है:
SecurityTrails
Shodan
BinaryEdge
RiskIQ
Palo Alto Networks
Censys
360
python3 jarm.py [-h] [-i INPUT] [-p PORT] [-v] [-V] [-o OUTPUT] [-j] [-P PROXY] [domain/IP]
उदाहरण:
% python3 jarm.py www.salesforce.com
Domain: www.salesforce.com
Resolved IP: 23.50.225.123
JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
Python 2 के साथ उपयोग करने के लिए आपको ipaddress मॉड्यूल की आवश्यकता होगी:
pip install -r requirements.txt
./jarm.sh <list> <output_file>
उदाहरण:
% ./jarm.sh alexa500.txt jarm_alexa_500.csv
JARM कैसे काम करता है, यह सीखने से पहले, यह समझना महत्वपूर्ण है कि TLS कैसे काम करता है। TLS और इसके पूर्ववर्ती SSL का उपयोग इंटरनेट ब्राउज़र जैसे सामान्य अनुप्रयोगों के लिए संचार को एन्क्रिप्ट करने के लिए किया जाता है, ताकि आपका डेटा सुरक्षित रहे, और मैलवेयर के लिए, ताकि वह शोर में छिप सके। TLS सत्र शुरू करने के लिए, एक क्लाइंट TCP 3-वे हैंडशेक के बाद TLS क्लाइंट हैलो संदेश भेजेगा। यह पैकेट और इसे उत्पन्न करने का तरीका क्लाइंट एप्लिकेशन बनाते समय उपयोग किए जाने वाले पैकेज और विधियों पर निर्भर करता है। सर्वर, यदि TLS कनेक्शन स्वीकार करता है, तो TLS सर्वर हैलो पैकेट के साथ प्रतिक्रिया देगा।
TLS सर्वर अपने सर्वर हैलो पैकेट को TLS क्लाइंट हैलो पैकेट में प्राप्त विवरण के आधार पर तैयार करते हैं। किसी भी दिए गए क्लाइंट हैलो के लिए सर्वर हैलो कैसे तैयार किया जाता है, यह एप्लिकेशन या सर्वर के निर्माण के तरीके के आधार पर भिन्न हो सकता है, जिसमें शामिल हैं:
ये सभी कारक प्रत्येक TLS सर्वर को एक अनूठे तरीके से प्रतिक्रिया देने का कारण बनते हैं। कारकों के संयोजन से यह संभावना नहीं है कि विभिन्न संगठनों द्वारा तैनात सर्वरों की एक ही प्रतिक्रिया होगी।
JARM लक्ष्य TLS सर्वर को सक्रिय रूप से 10 TLS क्लाइंट हैलो पैकेट भेजकर और TLS सर्वर हैलो प्रतिक्रियाओं की विशिष्ट विशेषताओं को कैप्चर करके काम करता है। एकत्रित TLS सर्वर प्रतिक्रियाओं को फिर एक विशिष्ट तरीके से हैश किया जाता है ताकि JARM फिंगरप्रिंट तैयार हो सके।
यह पहली बार नहीं है जब हमने TLS फिंगरप्रिंटिंग के साथ काम किया है। 2017 में हमने JA3/S विकसित किया था, जो एक निष्क्रिय TLS क्लाइंट/सर्वर फिंगरप्रिंटिंग विधि है जो अब अधिकांश नेटवर्क सुरक्षा उपकरणों पर पाई जाती है। लेकिन जहाँ JA3/S निष्क्रिय है, नेटवर्क ट्रैफ़िक सुनकर क्लाइंट और सर्वर को फिंगरप्रिंट करता है, वहीं JARM एक सक्रिय सर्वर फिंगरप्रिंटिंग स्कैनर है। आप TLS नेगोशिएशन और JA3/S निष्क्रिय फिंगरप्रिंटिंग के बारे में यहाँ और अधिक जान सकते हैं।
JARM में 10 TLS क्लाइंट हैलो पैकेट को विशेष रूप से TLS सर्वरों में अद्वितीय प्रतिक्रियाएँ निकालने के लिए तैयार किया गया है। JARM अद्वितीय प्रतिक्रियाएँ एकत्र करने के लिए विभिन्न क्रमों में विभिन्न TLS संस्करणों, सिफ़र और एक्सटेंशन भेजता है। क्या सर्वर TLS 1.3 का समर्थन करता है? क्या यह 1.2 सिफ़र के साथ TLS 1.3 पर बातचीत करेगा? यदि हम सिफ़र को सबसे कमज़ोर से सबसे मज़बूत क्रम में रखते हैं, तो वह कौन सा सिफ़र चुनेगा? ये उस प्रकार के असामान्य प्रश्न हैं जो JARM मूल रूप से सर्वर से सबसे अद्वितीय प्रतिक्रियाएँ निकालने के लिए पूछ रहा है। फिर 10 प्रतिक्रियाओं को हैश करके JARM फिंगरप्रिंट तैयार किया जाता है।
JARM फिंगरप्रिंट हैश एक हाइब्रिड फ़ज़ी हैश है, यह एक प्रतिवर्ती और गैर-प्रतिवर्ती हैश एल्गोरिदम के संयोजन का उपयोग करके 62 वर्णों का फिंगरप्रिंट तैयार करता है। पहले 30 वर्ण भेजे गए प्रत्येक 10 क्लाइंट हैलो के लिए सर्वर द्वारा चुने गए सिफ़र और TLS संस्करण से बने होते हैं। "000" दर्शाता है कि सर्वर ने उस क्लाइंट हैलो के साथ बातचीत करने से इनकार कर दिया। शेष 32 वर्ण सर्वर द्वारा भेजे गए संचयी एक्सटेंशन का एक छोटा SHA256 हैश है, जो x509 प्रमाणपत्र डेटा को अनदेखा करता है। JARM फिंगरप्रिंट की तुलना करते समय, यदि पहले 30 वर्ण समान हैं लेकिन अंतिम 32 भिन्न हैं, तो इसका मतलब होगा कि सर्वरों में बहुत समान कॉन्फ़िगरेशन हैं, समान संस्करण और सिफ़र स्वीकार कर रहे हैं, हालांकि एक्सटेंशन भिन्न होने के कारण बिल्कुल समान नहीं हैं।
प्रत्येक TLS सर्वर हैलो संदेश प्राप्त करने के बाद, JARM सॉकेट को खुला न छोड़ने के लिए FIN के साथ कनेक्शन को शालीनता से बंद कर देता है।
यह ध्यान रखना महत्वपूर्ण है कि JARM एक उच्च-प्रदर्शन फिंगरप्रिंट फ़ंक्शन है और इसे एक सुरक्षित क्रिप्टो फ़ंक्शन नहीं माना जाना चाहिए या भ्रमित नहीं होना चाहिए। हमने JARM फिंगरप्रिंट को मशीन द्वारा उपभोग्य होने के साथ-साथ मानव द्वारा उपभोग्य बनाने के लिए डिज़ाइन किया है। इसका मतलब है कि यह आँख से देखने, साझा करने और संदर्भ विवरण के लिए पर्याप्त जगह के साथ ट्वीट करने के लिए पर्याप्त छोटा है।
मैलवेयर कमांड और कंट्रोल (C2) और दुर्भावनापूर्ण सर्वरों को उनके निर्माताओं द्वारा किसी भी अन्य सर्वर की तरह कॉन्फ़िगर किया जाता है और फिर उनके बेड़े में तैनात किया जाता है। इसलिए ये अद्वितीय JARM फिंगरप्रिंट उत्पन्न करते हैं। नीचे सामान्य मैलवेयर और आक्रामक उपकरणों के उदाहरण दिए गए हैं और Alexa टॉप 1M वेबसाइटों (अक्टूबर 2020 तक) के साथ JARM ओवरलैप:
Alexa टॉप 1M वेबसाइटों के साथ बहुत कम या कोई ओवरलैप नहीं होने के कारण, किसी संगठन के भीतर किसी होस्ट के लिए इन JARM फिंगरप्रिंट वाले सर्वर से कनेक्ट होने की संभावना नहीं होनी चाहिए।
John Althouse - मूल विचार, अवधारणा और परियोजना प्रमुख
Andrew Smart - अवधारणा और परीक्षण
RJ Nunnally - प्रोग्रामिंग और परीक्षण
Mike Brady - प्रोग्रामिंग और परीक्षण
ऑपरेशनल उपयोग के लिए Caleb Yu द्वारा Python में पुनर्लिखित
| डोमेन | JARM |
|---|
| salesforce.com | 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5 |
| force.com | 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5 |
| google.com | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d |
| youtube.com | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d |
| gmail.com | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d |
| facebook.com | 27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9 |
| instagram.com | 27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9 |
| oculus.com | 29d29d20d29d29d21c41d43d00041d741011a7be03d7498e0df05581db08a9 |
| दुर्भावनापूर्ण सर्वर C2 | JARM Fingerprint | Alexa टॉप 1M के साथ ओवरलैप |
|---|
| Trickbot | 22b22b09b22b22b22b22b22b22b22b352842cd5d6b0278445702035e06875c | 0 |
| AsyncRAT | 1dd40d40d00040d1dc1dd40d1dd40d3df2d6a0c2caaa0dc59908f0d3602943 | 0 |
| Metasploit | 07d14d16d21d21d00042d43d000000aa99ce74e2c6d013c745aa52b5cc042d | 0 |
| Cobalt Strike | 07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1 | 0 |
| Merlin C2 | 29d21b20d29d29d21c41d21b21b41d494e0df9532e75299f15ba73156cee38 | 303 |