
रिमोट डेस्कटॉप सेवाओं के लिए यूनिवर्सल डायनामिक वर्चुअल चैनल कनेक्टर
टर्मिनल सेवाएं (या रिमोट डेस्कटॉप सेवाएं) उन लोगों के लिए कई छिपी हुई सुविधाएं प्रदान करती हैं जो गहराई से जानना चाहते हैं। इनमें से एक सेवा डायनामिक वर्चुअल चैनल है, जो हमें एक खुले RDP कनेक्शन पर नया सॉकेट, कनेक्शन या फायरवॉल पर पोर्ट खोलने की आवश्यकता के बिना संचार करने में सक्षम बनाती है। इन चैनलों का उपयोग सक्रिय नेटवर्क उपकरणों से डेटा छिपाने, फायरवॉल को बायपास करने, नेटवर्क पर डिवाइस ड्राइवर लागू करने, या बस पेनिट्रेशन टेस्टरों को डेटा स्थानांतरित करने में मदद करने के लिए किया जा सकता है। संभावनाएं अनंत हैं।
इस परियोजना को बनाने का वास्तविक कारण XFLTReaT है। इसका उपयोग अलग-अलग नेटवर्कों पर "VPN" बनाने के लिए किया जा सकता है और अंततः फायरवॉल बदलाव का अनुरोध किए बिना जंपबॉक्स के माध्यम से परीक्षण सक्षम करता है। संक्षेप में, यह पेनिट्रेशन टेस्टरों का जीवन आसान बनाता है।
आपको अपने क्लाइंट कंप्यूटर पर एक प्लगइन (.dll) स्थापित करना होगा जिसका उपयोग आप RDP सर्वर से कनेक्ट करने के लिए करते हैं। RDP सर्वर पर आपको परियोजना के दूसरे भाग .exe का उपयोग करना होगा, जो प्लगइन और सर्वर निष्पादन योग्य के बीच चैनल बनाता है। यदि आप अधिक विवरण जानना चाहते हैं, तो कृपया नीचे स्क्रॉल करें।
यह केवल विंडोज के लिए है। डायनामिक वर्चुअल चैनल विंडोज सर्वर 2008 और विंडोज विस्टा SP1 में प्रस्तुत किए गए थे। ये और इनसे नए कोई भी संस्करण उपयोग के लिए ठीक होने चाहिए।
आप पूरी परियोजना ले सकते हैं और इसे स्वयं संकलित कर सकते हैं या रिलीज़ सेक्शन से संकलित बाइनरी का उपयोग कर सकते हैं। यह महत्वपूर्ण है कि सभी मामलों में सही बाइनरी का उपयोग किया जाए, कृपया संबंधित आर्किटेक्चर के लिए सही बाइनरी चुनें (यदि आपका क्लाइंट 32-बिट है लेकिन सर्वर 64-बिट है, तो 32-बिट dll और 64-बिट exe लें)।
.dll को क्लाइंट कंप्यूटर पर किसी भी निर्देशिका में रखा जाना चाहिए (दीर्घकालिक उपयोग के लिए, आप इसे %SYSROOT%\system32\ या %SYSROOT%\SysWoW64\ में रख सकते हैं) और इसे एक उठाए गए उपयोगकर्ता (उर्फ व्यवस्थापक) के रूप में निम्नलिखित कमांड के साथ स्थापित करें:
regsvr32.exe UDVC-Plugin.dll
यदि आपका उपयोगकर्ता व्यवस्थापक नहीं है, तो आपको अपने उपयोगकर्ता के तहत रजिस्ट्री सेटिंग्स भी आयात करनी होंगी। कृपया इसके लिए UDVC-Plugin.reg फ़ाइल का उपयोग करें।
यदि आप इसे हटाना चाहते हैं:
regsvr32.exe /u UDVC-Plugin.dll
अब से हर बार जब आप RDP सर्वर से कनेक्ट होते हैं, यह प्लगइन लोड होगा और खुद को रजिस्ट्री में निर्दिष्ट अनुसार कॉन्फ़िगर करेगा (नीचे देखें)।
.exe को RDP सर्वर पर रखा जाना चाहिए और किसी भी उपयोगकर्ता के रूप में चलाया जाना चाहिए।
दोनों पक्ष वर्तमान में तीन मोड का समर्थन करते हैं:
जब यह मोड सक्षम होता है, तो परिभाषित पोर्ट और इंटरफ़ेस (IP पता) पर एक श्रोता स्थापित किया जाएगा।
इस मोड में, परिभाषित IP पते और पोर्ट पर एक श्रोता की ओर एक कनेक्शन बनाया जाएगा।
यह मोड निर्दिष्ट नाम के साथ एक नामित पाइप स्थापित करता है। उदाहरण के तौर पर: इस मोड का उपयोग अन्य उपकरणों द्वारा RDP पर IPC संचार करने के लिए किया जा सकता है। दुर्भाग्य से, नामित पाइप डिस्क पर लिखे जाते हैं, इसलिए इसे सॉकेट मोड की तुलना में धीमा माना जाता है। यदि आप बैंडविड्थ की परवाह करते हैं, तो कृपया सॉकेट मोड का उपयोग करें।
क्लाइंट और सर्वर दोनों बाइनरी एक ही तरीके से काम करते हैं और उन्हें समान विकल्पों के साथ कॉन्फ़िगर किया जा सकता है।
सर्वर बाइनरी कमांड लाइन से विकल्प पढ़ेगा।
PS C:\Users\UDVC\> .\UDVC-Server.exe -h
Universal Dynamic Virtual Channel server application
Usage: C:\Users\UDVC\UDVC-Server.exe [-s | -c [-p port [-h ip]] | -m [-n name]] [-0 | -1 | -2 | -3]
Socket server mode -s (default) OR
Socket client mode -c:
-p port port to bind the listener (default: 31337)
-i ip ip to bind the listener (default: 127.0.0.1)
Named pipe mode -m:
-n name name of the named pipe (by default: "\\.\pipe\UDVC_{RDP SESSION NUMBER}")
Data transfer priority parameters:
-0 real time (WTS_CHANNEL_OPTION_DYNAMIC_PRI_REAL)
-1 high priority (WTS_CHANNEL_OPTION_DYNAMIC_PRI_HIGH) - default
-2 medium priority (WTS_CHANNEL_OPTION_DYNAMIC_PRI_MED)
-3 low priority (WTS_CHANNEL_OPTION_DYNAMIC_PRI_LOW)
क्लाइंट .dll सभी विकल्पों को रजिस्ट्री से पढ़ता है, मान निम्नलिखित कुंजी के अंतर्गत पाए जा सकते हैं:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client\Default\AddIns\UDVC-Plugin
हर बार जब मॉड्यूल सक्षम होता है और कनेक्शन बनाने से पहले एक अनुस्मारक चेतावनी दिखाई जाती है। बिल्कुल इस तरह:

यह चेतावनी सुनिश्चित करती है कि उपयोगकर्ता को पता है कि प्लगइन लोड हुआ है और किन सेटिंग्स के साथ।
श्रोता, कनेक्शन या नामित पाइप तभी बनाए जाते हैं जब सर्वर निष्पादन योग्य प्लगइन dll से कनेक्ट करने में सक्षम होता है। यह आपके कॉन्फ़िगरेशन पर निर्भर करता है, लेकिन डिफ़ॉल्ट रूप से जब वर्चुअल चैनल कनेक्शन बनाया जाता है (प्लगइन ठीक से लोड हुआ, सर्वर बाइनरी निष्पादित हुई) तो यह दोनों समापन बिंदुओं पर localhost:31337 पर सुनता है। जब आप इन पोर्ट से कनेक्ट होते हैं और सॉकेट के माध्यम से डेटा भेजते हैं, तो यह दूसरी तरफ दिखाई देगा।
बस कुछ उपयोग मामलों को दिखाने के लिए जहां इस उपकरण का उपयोग किया जा सकता है।
बहुत बुनियादी पोर्ट अग्रेषण। Segregated 1 मशीन पर tcp/80 पर एक HTTP सेवा है। वह नेटवर्क 192.168.0.0/24 नेटवर्क से रूट नहीं है, डुअल होमेड जंप बॉक्स का उपयोग करना होगा। क्लाइंट साइड पर 0.0.0.0:31337 पर लिसन मोड कॉन्फ़िगर किया गया है और वेब सर्वर से कनेक्शन बनाने के लिए सर्वर बाइनरी को कनेक्ट मोड सेटिंग्स के साथ निष्पादित किया गया था। RDP क्लाइंट पर उपयोगकर्ता http://10.13.37.2:80 से सामग्री तक पहुंचने के लिए अपने ब्राउज़र में http://127.0.0.1:31337 खोल सकता है।

फ़ाइलों को स्थानांतरित करने के लिए थोड़ा अधिक उन्नत परिदृश्य। दोनों समापन बिंदु 0.0.0.0:31337 पर सुनने के लिए कॉन्फ़िगर किए गए हैं। पहले हैकिंग बॉक्स RDP क्लाइंट से कनेक्ट होता है और इनपुट की प्रतीक्षा करता है। फिर Segregated 2 मशीन जंप बॉक्स से कनेक्ट होती है और पूरी फ़ाइल को सॉकेट में पढ़ती है।

एक अतिरिक्त के रूप में, नामित पाइप का भी उपयोग किया जा सकता है। इस मामले में RDP क्लाइंट और जंप बॉक्स दोनों दोनों तरफ एक नामित पाइप बनाते हैं (hIPC-client और hIPC-server) और अन्य मशीनें इन पाइपों से कनेक्ट हो सकती हैं। पाइपों पर जो कुछ भी लिखा जाता है वह दूसरे छोर पर दिखाई देगा। यह वास्तव में ऊपर दिए गए लिसन मोड उदाहरण से अलग नहीं है, सिवाय इसके कि यह TCP सॉकेट के बजाय नामित पाइप का उपयोग करता है।

यदि प्लगइन लोड नहीं होता है या निष्पादन योग्य कुछ DLL के गायब होने के कारण नहीं चलता है, उदाहरण के लिए VCRUNTIME140.DLL, तो आप Visual C++ Redistributable for Visual Studio 2015 पैकेज स्थापित करना चाह सकते हैं।