
अन्य होस्टों के विभिन्न दृष्टिकोणों से नेटवर्क दृश्यता बढ़ाएँ
युद्ध में, CornerShot एक हथियार है जो एक सैनिक को बिना जोखिम के कोने के पीछे देखने (और संभवतः गोली चलाने) की अनुमति देता है। इसी प्रकार, CornerShot पैकेज किसी दूरस्थ होस्ट के नेटवर्क एक्सेस को देखने की अनुमति देता है, बिना उस होस्ट पर किसी विशेष विशेषाधिकार की आवश्यकता के।
CornerShot का उपयोग करके, एक स्रोत, जिसके पास कैरियर तक नेटवर्क पहुंच है, यह निर्धारित कर सकता है कि किसी विशिष्ट पोर्ट p के लिए कैरियर और लक्ष्य के बीच नेटवर्क पहुंच है या नहीं।
उदाहरण के लिए, मान लेते हैं कि एक रेड टीम "समझौता" किए गए स्रोत होस्ट A से लक्ष्य होस्ट X तक प्रसार करने का प्रयास कर रही है, जिस तक होस्ट A की पहुंच नहीं है। यदि वे होस्ट B के माध्यम से प्रसार करते हैं, तभी उन्हें पता चलेगा कि होस्ट B और X के बीच नेटवर्क पहुंच नहीं है।
CornerShot का उपयोग करके, टीम पता लगा सकती है कि होस्ट C के पास वास्तव में लक्ष्य X तक पहुंच है, इसलिए लक्ष्य X की ओर प्रसार पहले होस्ट C के माध्यम से होना चाहिए।
+-----+ +-----+ +-----+
| | | | filtered | |
| A +--------> B +----X--->(p) X |
| | | | | |
+-----+ +-----+ +-(p)-+
source carrier target
+ ^
| |
| +-----+ |
| | | open |
+---------->+ C +-------------+
| |
+-----+
nmap के समान, CornerShot पोर्ट की निम्नलिखित स्थितियों के बीच अंतर करता है: खुला, बंद, फ़िल्टर्ड और अज्ञात (यदि निर्धारित नहीं किया जा सकता)।
निम्नलिखित डेमो दो कैरियर होस्ट 172.0.1.12 और 172.0.1.13 के विरुद्ध CornerShot चलाने को दर्शाता है, ताकि यह निर्धारित किया जा सके कि उनके पास 192.168.200.1 तक नेटवर्क पहुंच है या नहीं:

यहाँ और पढ़ें।
नेटवर्क में किसी होस्ट B की होस्ट C तक पहुंच की पहचान करने का सरल प्रतीत होने वाला कार्य, नेटवर्क सेंसर, डिवाइस एजेंटों की बड़े पैमाने पर तैनाती या फ़ायरवॉल नियमों, राउटर कॉन्फ़िगरेशन और होस्ट नीतियों के संग्रह की आवश्यकता हो सकती है।
CornerShot एक (या बहुत कम) एजेंटों का उपयोग करके इस प्रक्रिया को सरल बना सकता है जो नेटवर्क में अन्य होस्ट से पूछताछ करके दूरस्थ होस्ट तक उनकी पहुंच निर्धारित कर सकते हैं।
सुरक्षा टीमें जो अपने नेटवर्क के अंदर विशेषाधिकार वृद्धि पथों को खोजने और कम करने के लिए BloodHound का उपयोग करती हैं, अक्सर BloodHound द्वारा खोजे गए लाखों तार्किक पथों से जूझती हैं।
ShotHound एक उपकरण है जो नेटवर्क पहुंच द्वारा समर्थित व्यावहारिक पथों की खोज करने के लिए CornerShot को BloodHound के साथ एकीकृत करता है।
CornerShot को एक पैकेज के रूप में या एक स्टैंडअलोन मॉड्यूल के रूप में उपयोग किया जा सकता है। एकमात्र आवश्यकताएँ Python 3 और impacket पैकेज हैं।
pip install cornershot
मूल उपयोग के लिए एक वैध डोमेन उपयोगकर्ता के क्रेडेंशियल, एक FQDN डोमेन, एक कैरियर IP और लक्ष्य IP की आवश्यकता होती है।
python -m cornershot <user> <password> <domain> <carrier> <target>
कैरियर की एक श्रेणी को लक्ष्यों की एक श्रेणी के विरुद्ध स्कैन करने के लिए, सबनेट या IP रेंज का उपयोग अल्पविराम से सीमांकित सूची में किया जा सकता है:
python -m cornershot <user> <password> <domain> 192.168.1.10-192.168.1.20 192.168.5.0/24,192.168.6.0/24
डिफ़ॉल्ट रूप से, CornerShot निम्नलिखित पोर्ट को स्कैन करने का प्रयास करेगा: 135, 445, 3389, 5985, 5986. उपयोगकर्ता पोर्ट और पोर्ट रेंज की अल्पविराम से सीमांकित सूची प्रदान कर सकता है:
python -m cornershot -tp 22,8080,45000-45005 <user> <password> <domain> <carrier> <target>
कोड के भीतर, एक वैध डोमेन उपयोगकर्ता के उपयोगकर्ता नाम, पासवर्ड और डोमेन नाम के साथ CornerShot ऑब्जेक्ट को इंस्टैंशिएट करना आवश्यक है। कैरियर, लक्ष्य और पोर्ट जोड़ना add_shots विधि के माध्यम से प्राप्त किया जाता है। तैयार होने पर, open_fire विधि को कॉल किया जा सकता है, जो आवश्यक पोर्ट के आधार पर केवल प्रासंगिक RPC कॉल करता है।
from cornershot import CornerShot
cs = CornerShot("username", "password", "fqdn")
cs.add_shots(carriers=["192.168.1.1"],targets=["192.168.1.2","192.168.1.3"])
results = cs.open_fire()
open_fire का परिणाम एक शब्दकोश है जिसमें कैरियर की कुंजियाँ हैं, प्रत्येक कैरियर के पास लक्ष्यों के लिए कुंजियों का एक और सेट है, और अंत में, प्रत्येक लक्ष्य पोर्ट और उनकी संबंधित स्थितियों का एक शब्दकोश रखता है। यह परिणाम का एक उदाहरण प्रारूप है:
{'carrier_1':
{'target_1':
{135: 'unknown', 445: 'filtered', 3389: 'filtered', 5986: 'filtered', 5985: 'filtered'},
'target_2':
{135: 'unknown', 445: 'open', 5985: 'unknown', 5986: 'filtered', 3389: 'open'}
},
'carrier_2':
{'target_1':
{3389: 'filtered', 135: 'filtered', 5985: 'filtered', 445: 'filtered', 5986: 'unknown'},
'target_2':
{5985: 'filtered', 5986: 'filtered', 445: 'filtered', 135: 'filtered', 3389: 'open'}
}
}
CornerShot विभिन्न, सुप्रलेखित, मानक दूरस्थ प्रक्रिया कॉल (RPC) विधियों पर निर्भर करता है जिनका उपयोग विभिन्न Microsoft सेवाओं द्वारा किया जाता है। डोमेन में केवल एक प्रमाणित खाते की आवश्यकता वाली विधियों का उपयोग करके, CornerShot कैरियर होस्ट से लक्ष्य तक नेटवर्क ट्रैफ़िक को ट्रिगर करने में सक्षम है।
CornerShot एक RPC कॉल में लगने वाले समय को मापकर और प्रत्येक RPC विधि के लिए विभिन्न त्रुटि कोड का उपयोग करके रिमोट के पोर्ट की स्थिति निर्धारित करने में सक्षम है।
पाठक "प्रिंटर बग" से परिचित हो सकता है, जिसे Lee Christensen ने खोजा था। जबकि इसे बग कहा जाता है, यह प्रिंटिंग सेवा का एक सुप्रलेखित व्यवहार है, जो किसी भी प्रमाणित उपयोगकर्ता को RpcRemoteFindFirstPrinterChangeNotificationEx विधि का उपयोग करके किसी दूरस्थ सर्वर को किसी भी मशीन पर प्रमाणित करने के लिए मजबूर करने की अनुमति देता है।
CornerShot कई Microsoft प्रोटोकॉल से निम्नलिखित RPC विधियों का उपयोग करता है (कई अतिरिक्त विधियाँ हैं, जिन्हें भविष्य के संस्करणों में लागू किया जाएगा):
प्रोटोकॉल का कार्यान्वयन अद्भुत impacket पैकेज के माध्यम से प्राप्त किया जाता है।
यह विधि एक printerName को पैरामीटर के रूप में प्राप्त करती है। printerName का नाम एक स्थानीय फ़ाइल का पथ, एक दूरस्थ फ़ाइल या यहाँ तक कि एक वेब प्रिंटर का पथ भी हो सकता है। WEB_PRINT_SERVER प्रारूप के अनुरूप नाम प्रदान करके, किसी भी दूरस्थ पोर्ट से क्वेरी करना संभव है। एक वेब प्रिंट सर्वर नाम का एक उदाहरण जो दूरस्थ होस्ट और पोर्ट पर HTTP ट्रैफ़िक को ट्रिगर करेगा: "http://<target_ip>:<target_port>/printers/ppp/.printer".
इस विधि का उपयोग करने के लिए, हमें दो-चरणीय दृष्टिकोण की आवश्यकता है: पहले, दूरस्थ होस्ट पर एक रजिस्ट्री कुंजी खोलें - जिसके परिणामस्वरूप एक वैध हैंडल मिलता है, और दूसरा, इस हैंडल का बैकअप किसी दूरस्थ फ़ाइल में सहेजने का प्रयास करें। BaseRegSaveKey विधि एक फ़ाइल पथ प्राप्त करती है जिसमें वह रजिस्ट्री का बैकअप सहेज सकती है, जो लक्ष्य पर पोर्ट 445 (और बैकअप के रूप में 135) पर SMB ट्रैफ़िक को ट्रिगर करता है। CornerShot जो रजिस्ट्री कुंजी खोलता है वह HKEY_CURRENT_USER है, जो अधिकांश क्लाइंट होस्ट पर डिफ़ॉल्ट रूप से पढ़ने के लिए खुला है।
यह फ़ंक्शन विंडोज इवेंट्स को एक फ़ाइल पथ में बैकअप करने का प्रयास करता है, जो दूरस्थ हो सकता है - ऐसी स्थिति में सेवा दूरस्थ होस्ट और पथ तक पहुँचने का प्रयास करेगी।
EVEN विधि के समान, केवल यह विधि विंडोज इवेंट्स प्रोटोकॉल के एक अलग संस्करण का उपयोग करती है, जो सीधे TCP पर किया जाता है - SMB पोर्ट खुला होने की आवश्यकता नहीं है।
CornerShot RPC विधि या अंतर्निहित परिवहन द्वारा प्राप्त समय कारकों और त्रुटि संदेशों के आधार पर दूरस्थ पोर्ट की स्थिति का अनुमान लगाता है। विभिन्न विंडोज होस्ट और विभिन्न RPC प्रोटोकॉल के साथ प्रयोग करके, हम 3 अलग-अलग समय सीमाओं के साथ आए हैं जो अधिकांश नेटवर्क वातावरणों में काम करती साबित हुई हैं। ये सीमाएँ निम्नलिखित आकृति के साथ सबसे अच्छी तरह से चित्रित की गई हैं:
+ + +
| | |
unknown | open / closed | filtered | open
/ | | |
open | | |
| | |
+-------------+------------------+-----------------+--------------+
0 0.5 20 40 Seconds
MIN FILTERED UPPER
MIN सीमा 0.5 सेकंड है, इस सीमा से नीचे के उत्तर या तो अंतर्निहित RPC विधि या अंतर्निहित परिवहन में त्रुटि का संकेत देते हैं, या लक्ष्य होस्ट से कोई प्रतिक्रिया प्राप्त हो सकती है।
20 सेकंड की FILTERED सीमा से नीचे के उत्तर विधि के लिए प्राप्त त्रुटि संदेश के प्रकार के आधार पर या तो एक खुला या बंद पोर्ट संकेत दे सकते हैं।
40 सेकंड की FILTERED और UPPER सीमा के बीच के उत्तर सभी परीक्षण की गई विधियों के लिए (अब तक...) एक फ़िल्टर्ड पोर्ट का संकेत देते हैं। और UPPER सीमा से अधिक समय लेने वाले अनुरोध एक लंबी खुली TCP कनेक्शन का संकेत देते हैं।
विभिन्न OS संस्करणों और कॉन्फ़िगरेशन के विरुद्ध CornerShot निष्पादित करने से अलग-अलग परिणाम मिलेंगे। सभी Windows संस्करणों में समान नामित पाइप नहीं हैं या जब समान RPC विधि से क्वेरी की जाती है तो वे समान व्यवहार नहीं करते हैं। अधिकांश Windows OOTB नेटवर्क पर SMB और अन्य RPC सेवाओं को उजागर नहीं करेंगे, हालांकि, अनुभव से पता चला है कि बड़े वातावरणों में ये पोर्ट अधिकांश संपत्तियों के लिए खुले और सुलभ होते हैं।
निम्नलिखित तालिका विभिन्न RPC प्रोटोकॉल के लिए डिफ़ॉल्ट समर्थन दिखाती है, बशर्ते कि कैरियर होस्ट के लिए उपयुक्त पोर्ट सुलभ हों और होस्ट में कोई कॉन्फ़िगरेशन परिवर्तन न किए गए हों:
* यदि क्लाइंट मशीन पर Webclient सेवा चल रही है, तो अतिरिक्त पोर्ट स्कैन किए जा सकते हैं। वर्तमान में CornerShot इस विकल्प का समर्थन नहीं करता है।
** RPRN प्रोटोकॉल सर्वर होस्ट पर समर्थित है, हालांकि दूरस्थ वेब प्रिंटर खोलना काम नहीं करता है (यही कारण है कि हम किसी भी लक्ष्य पोर्ट को स्कैन नहीं कर सकते) - जब तक हम कोई कार्यप्रणाली नहीं खोज लेते 😉
अतिरिक्त RPC शॉट्स, या कोई अन्य योगदान स्वागत है!
सभी RPC विधियाँ /shots के अंतर्गत कार्यान्वित की जाती हैं, और BaseRPCShot नामक एक सार वर्ग से विरासत प्राप्त करती हैं। /example फ़ोल्डर दिखाता है कि कस्टम RPC शॉट कैसे बनाया जाए और कोड में इसका उपयोग कैसे किया जाए।
CornerShot Apache 2.0 लाइसेंस के तहत जारी किया गया है। अधिक जानकारी के लिए LICENSE देखें।
हमें आपसे सुनकर खुशी होगी! बग, पैच, इस पैकेज पर सुझावों के लिए, कृपया हमसे [email protected] पर संपर्क करें।
| OS | समर्थित RPC प्रोटोकॉल | आवश्यक खुले कैरियर पोर्ट | स्कैन करने के लिए संभावित लक्ष्य पोर्ट |
|---|
| Windows 7 | EVEN,EVEN6 | 445 / 135 & even6 tcp पोर्ट | 445* |
| Windows 8 | EVEN,EVEN6 | 445 / 135 & even6 tcp पोर्ट | 445* |
| Windows 10 | EVEN,EVEN6,RPRN | 445 / 135 & even6 tcp पोर्ट | कोई भी |
| Server 2008 | EVEN,EVEN6,RRP,RPRN** | 445 / 135 & even6 tcp पोर्ट | 445 |
| Server 2012 | EVEN,EVEN6,RRP,RPRN** | 445 / 135 & even6 tcp पोर्ट | 445 |
| Server 2016 | EVEN,EVEN6,RRP,RPRN** | 445 / 135 & even6 tcp पोर्ट | 445 |
| Server 2019 | EVEN,EVEN6,RRP,RPRN** | 445 / 135 & even6 tcp पोर्ट | 445 |