
دعم بروكسي Socks5/4/4a لـ Remote Desktop Protocol / Terminal Services / Citrix / XenApp / XenDesktop
يضيف هذا الأداة إمكانية استخدام وكيل SOCKS إلى خدمات الطرفية (أو خدمات سطح المكتب البعيد) و Citrix (XenApp/XenDesktop). تستخدم القناة الافتراضية الديناميكية (Dynamic Virtual Channel) التي تتيح لنا التواصل عبر اتصال RDP/Citrix مفتوح دون الحاجة إلى فتح مقبس أو اتصال أو منفذ جديد على جدار الحماية.
تحتاج إلى تثبيت إضافة (.dll) على جهاز العميل الذي تستخدمه للاتصال بخادم RDP/Citrix. على خادم RDP/Citrix تحتاج إلى استخدام النصف الآخر من المشروع وهو .exe، والذي ينشئ القناة بين الإضافة والملف التنفيذي للخادم. يمكن العثور على مزيد من التفاصيل أدناه. إذا كنت ترغب في استخدامه مع Citrix/XenApp/XenDesktop، فيرجى التمرير إلى قسم Citrix.
إذا تم تسجيل DLL بشكل صحيح، فسيتم تحميله بواسطة mstsc.exe (عميل سطح المكتب البعيد) أو Citrix Receiver في كل مرة يتم تشغيله. عندما يعمل الملف التنفيذي للخادم على جانب الخادم، فإنه يتصل مرة أخرى بـ DLL عبر قناة افتراضية ديناميكية، وهي إحدى ميزات بروتوكول سطح المكتب البعيد. بعد إعداد القناة، سيتم تشغيل وكيل SOCKS على جهاز العميل، افتراضيًا على 127.0.0.1:1080. يمكن استخدام هذه الخدمة كوكيل SOCKS5 من أي متصفح أو أداة.
تم تقديم القنوات الافتراضية الديناميكية في Window Server 2008 و Windows Vista SP1. هذه وأي شيء أحدث من هذه الإصدارات يجب أن يعمل بشكل جيد.
حاليًا، يعمل العميل مع mstsc.exe (عميل سطح المكتب البعيد). إذا كنت ترغب في استخدامه من Unix، جرّب FreeRDP، فقد أصدر وحدة مماثلة في نفس الوقت تقريبًا الذي صدرت فيه هذه الأداة.
يدعم Citrix نفس واجهة برمجة التطبيقات الأساسية التي تدعمها Microsoft، وعلى الرغم من أنني لست متأكدًا متى تم تقديمها، إلا أنها كانت قبل عام 2013، لذا يجب أن تعمل الإضافة مع معظم حلول Citrix.
يمكنك الحصول على المشروع بأكمله وتجميعه بنفسك أو استخدام الملفات الثنائية المجمعة من قسم الإصدارات. من المهم استخدام الملف الثنائي الصحيح في جميع الحالات، يرجى اختيار الملف الصحيح للبنية المقابلة (إذا كان جهاز العميل 32 بت ولكن الخادم 64 بت، فاحصل على dll 32 بت و exe 64 بت). يجب وضع ملف .dll على جهاز العميل في أي دليل (للاستخدام طويل الأمد، يُنصح بنسخه إلى %SYSROOT%\system32\ أو %SYSROOT%\SysWoW64\) وتثبيته بالأمر التالي كمستخدم بصلاحيات مرتفعة (أي مسؤول):
regsvr32.exe SocksOverRDP-Plugin.dll
إذا لم يكن مستخدمك مسؤولًا، فستحتاج أيضًا إلى استيراد إعدادات التسجيل ضمن مستخدمك. يرجى استخدام ملف SocksOverRDP-Plugin.reg لذلك.
إذا كنت ترغب في إزالته:
regsvr32.exe /u SocksOverRDP-Plugin.dll
في كل مرة تتصل فيها بخادم RDP من الآن فصاعدًا، سيتم تحميل هذه الإضافة وستقوم بتهيئة نفسها كما هو محدد في التسجيل (انظر أدناه).
يجب نسخ ملف .exe إلى الخادم وتشغيله بواسطة أي مستخدم.
تعمل الأداة مع Citrix Receiver المستخدم للاتصال بخادم Citrix. سواء تم توفير تطبيق أو سطح مكتب كامل للمستخدم، فإن الأداة تعمل في كلتا الحالتين إذا تم تثبيت الإضافة بشكل صحيح وتم نسخ المكوّن .exe الخاص بالخادم إلى خادم Citrix وتشغيله عليه.
يبدو أن Citrix يوفر Citrix Receiver 32 بت فقط. هذا يعني أنه إذا كان نظام التشغيل لديك 64 بت وقمت بالفعل بتسجيل ملف .dll المقابل، فستحتاج إلى إلغاء تسجيل ملف .dll واستخدام الإصدار 32 بت. إذا كنت تستخدم نظام تشغيل 32 بت، فما عليك سوى تسجيل ملف .dll كما ذكر أعلاه.
يرجى ملاحظة أن نظام Windows 64 بت يحتوي على ملفين regsvr32.exe، أحدهما في *%WINDIR%\system32* (x64) والآخر في *%WINDIR%\SysWOW64* (x32)، استخدم الأخير لتسجيل ملف .dll 32 بت، والذي سيتم تحميله تلقائيًا بواسطة Citrix Receiver عند التشغيل. يجب أن يكون كل شيء آخر هو نفسه، فيرجى التأكد من اتباعك لملف readme قبل فتح المشكلات على Github.
لا يحتاج مكوّن الخادم (.exe) إلى أي إعدادات أو وسائط (arguments). ومع ذلك، يوجد خيار واحد لزيادة مستوى التفاصيل (verbosity):
PS C:\Users\SocksOverRDP\> .\SocksOverRDP-Server.exe -h
Socks Over RDP by Balazs Bucsay [[@xoreipeip]]
Usage: SocksOverRDP-Server.exe [-v]
-h This help
-v Verbose Mode
يأتي مكوّن العميل (.dll) بإعدادات مسبقة، يتم تثبيتها بواسطة ملف .dll نفسه عند تسجيله، أو يجب استيرادها من ملف SocksOverRDP-Plugin.reg.
يقرأ ملف .dll الخاص بالعميل جميع الخيارات من السجل، ويمكن العثور على القيم ضمن المفتاح التالي:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client\Default\AddIns\SocksOverRDP-Plugin
في كل مرة يتم فيها تمكين الوحدة وقبل إجراء الاتصال، يتم عرض تحذير تذكيري. تمامًا مثل هذا:

يضمن هذا التحذير أن المستخدم يعرف أن الإضافة محمّلة وبأي إعدادات.
إذا لم يتم تحميل الإضافة أو لم يعمل الملف التنفيذي بسبب نقص بعض ملفات DLL مثل VCRUNTIME140.DLL، فقد ترغب في تثبيت حزمة Visual C++ Redistributable for Visual Studio 2015.
تم اختباره على Windows 11 ARM64: الحزمة القابلة لإعادة التوزيع
على Windows 11 ARM64 (Macbook Pro M1) تظهر رسالة الخطأ التالية عند التثبيت:
The module SocksOverRDP-Plugin.dll was located bt the call to DllRegisterServer failed with error code 0x8002801c
على الرغم من ظهور هذا الخطأ، إلا أن الوحدة مثبتة بشكل صحيح ويمكن استخدامها.
يمكن تنفيذ مكوّن الخادم (.exe) بواسطة أي مستخدم، وسيعمل مع المستخدمين ذوي الامتيازات المنخفضة أيضًا، ولا توجد أي مخاطر أمنية مرتبطة بهذا المكوّن على الإطلاق.
مكوّن العميل (.dll) بشكل افتراضي مُهيأ للاستماع على localhost فقط، إذا تم تغيير ذلك إلى 0.0.0.0 على سبيل المثال وكان لا يوجد جدار حماية أو كان غير صحيح الإعداد، فقد يؤدي ذلك إلى مشكلة أمنية، لأن أجهزة الكمبيوتر الأخرى على الشبكة يمكنها الوصول إلى وكيل SOCKS والتواصل عبر خادم RDP.
يرجى ملاحظة أن خادم SOCKS يكون نشطًا فقط عندما يكون اتصال RDP/Citrix حيًا ويكون الملف التنفيذي قيد التشغيل على الخادم.
لمنع المستخدمين من استخدام هذه الأداة، الطريقة الوحيدة المعروفة هي تعطيل القنوات الافتراضية (Virtual Channels) في إعدادات خادم سطح المكتب البعيد. على الرغم من أن هذا يمنع استخدام هذه الأداة بالفعل، إلا أنه يعطل أيضًا النسخ واللصق، مما قد يكون عائقًا كبيرًا أو مصدر إزعاج كبير للمستخدمين.
على الرغم من أنه من الممكن تعطيل القنوات الافتراضية الديناميكية في RDP، فإن الحل التالي للقيام بذلك غير فعال بالنسبة لـ Citrix: https://support.citrix.com/article/CTX202153