
Soporte de proxy Socks5/4/4a para Remote Desktop Protocol / Terminal Services / Citrix / XenApp / XenDesktop
Esta herramienta añade la capacidad de un proxy SOCKS a Terminal Services (o Servicios de Escritorio Remoto) y Citrix (XenApp/XenDesktop). Utiliza Dynamic Virtual Channel (Canal Virtual Dinámico) que nos permite comunicarnos a través de una conexión RDP/Citrix abierta sin necesidad de abrir un nuevo socket, conexión o puerto en el firewall.
Necesitas instalar un plugin (.dll) en tu equipo cliente que uses para conectarte al servidor RDP/Citrix. En el servidor RDP/Citrix necesitas usar la otra mitad del proyecto, el .exe, que crea el canal entre el plugin y el ejecutable del servidor. Más detalles a continuación. Si quieres usarlo con Citrix/XenApp/XenDesktop, desplázate hasta la sección de Citrix.
Si el DLL está correctamente registrado, será cargado por mstsc.exe (Cliente de Escritorio Remoto) o Citrix Receiver cada vez que se inicie. Cuando el ejecutable del servidor se ejecuta en el lado del servidor, se conecta de vuelta al DLL a través de un canal virtual dinámico, que es una característica del Protocolo de Escritorio Remoto. Después de establecer el canal, se levantará un proxy SOCKS en el equipo cliente, por defecto en 127.0.0.1:1080. Este servicio se puede usar como un proxy SOCKS5 desde cualquier navegador o herramienta.
Los Dynamic Virtual Channels (Canales Virtuales Dinámicos) se introdujeron en . y cualquier cosa deberían funcionar. Actualmente el cliente funciona con mstsc.exe (Cliente de Escritorio Remoto). Si quieres usarlo desde Unix, prueba FreeRDP; ha lanzado un módulo similar casi al mismo tiempo que esta herramienta. Citrix soporta la misma API subyacente que Microsoft, aunque no estamos seguros de cuándo se introdujo; fue antes de 2013, por lo que el plugin debería funcionar con la mayoría de las soluciones Citrix.
Puedes descargar todo el proyecto y compilarlo tú mismo o usar los binarios compilados de la sección de Releases. Es importante que se use el binario correcto en todos los casos; selecciona el adecuado para la arquitectura correspondiente (si tu cliente es de 32 bits pero el servidor es de 64 bits, entonces toma el dll de 32 bits y el exe de 64 bits). El .dll debe colocarse en el equipo cliente en cualquier directorio (para uso a largo plazo, se recomienda copiarlo en %SYSROOT%\system32\ o %SYSROOT%\SysWoW64\) e instalarlo con el siguiente comando como usuario elevado (también conocido como Administrador):
regsvr32.exe SocksOverRDP-Plugin.dll
Si tu usuario no es administrador, también necesitas importar la configuración del registro bajo tu usuario. Usa el archivo SocksOverRDP-Plugin.reg para ello.
Si deseas eliminarlo:
regsvr32.exe /u SocksOverRDP-Plugin.dll
Cada vez que te conectes a un servidor RDP de ahora en adelante, este plugin se cargará y se configurará según lo especificado en el registro (ver más abajo).
El .exe debe copiarse al servidor y ejecutarse por cualquier usuario.
La herramienta funciona con Citrix Receiver, que se usa para conectarse al servidor Citrix. Se puede proporcionar al usuario una aplicación o un escritorio completo; la herramienta funciona en ambos casos si el plugin se instaló correctamente y el componente .exe del servidor se copió y ejecutó en el servidor Citrix. Parece que Citrix solo tiene Citrix Receiver de 32 bits. Esto significa que si tu sistema operativo es de 64 bits y ya has registrado el .dll correspondiente, necesitas desregistrar el .dll y usar la versión de 32 bits. Si usas un sistema operativo de 32 bits, simplemente registra el .dll como se mencionó arriba. Ten en cuenta que Windows de 64 bits tiene dos regsvr32.exe, uno en *%WINDIR%\system32* (x64) y el que está en *%WINDIR%\SysWOW64* (x32); usa este último para registrar el .dll de 32 bits, que será cargado automáticamente por Citrix Receiver al ejecutarse. Todo lo demás debería ser igual; asegúrate de haber seguido el readme antes de abrir problemas en Github.
El componente del servidor (.exe) no necesita configuración ni requiere argumentos. Aunque hay uno para la verbosidad:
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
El componente cliente (.dll) viene con ajustes preestablecidos, que el propio .dll instala cuando se registra, o que deben importarse desde el SocksOverRDP-Plugin.reg.
El .dll del cliente lee todas las opciones del registro; los valores se pueden encontrar en la siguiente clave:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client\Default\AddIns\SocksOverRDP-Plugin
Cada vez que el módulo está habilitado y antes de que se realice la conexión, se muestra un aviso de recordatorio. Así:

Este aviso asegura que el usuario sepa que el plugin está cargado y con qué configuración.
En caso de que el plugin no se cargue o el ejecutable no se ejecute porque le faltan algunos DLL, por ejemplo VCRUNTIME140.DLL, es posible que quieras instalar el paquete Visual C++ Redistributable for Visual Studio 2015.
Probado en Windows 11 ARM64: Redistributable
En Windows 11 ARM64 (Macbook Pro M1) se muestra el siguiente mensaje de error en la instalación:
The module SocksOverRDP-Plugin.dll was located bt the call to DllRegisterServer failed with error code 0x8002801c
Aunque se muestre este error, el módulo está correctamente instalado y se puede usar.
El componente del servidor (.exe) se puede ejecutar con cualquier usuario; funcionará también con usuarios de bajos privilegios; no hay riesgos de seguridad asociados con este componente en absoluto.
El componente cliente (.dll) por defecto está configurado para escuchar solo en localhost; si se cambia, por ejemplo, a 0.0.0.0 y no hay firewall o está mal configurado, podría resultar en un problema de seguridad, ya que otros equipos de la red pueden acceder al proxy SOCKS y comunicarse a través del servidor RDP.
Ten en cuenta que el servidor SOCKS solo está activo cuando la conexión RDP/Citrix está viva y el ejecutable se está ejecutando en el servidor.
Para evitar que los usuarios usen esta herramienta, la única forma conocida es deshabilitar los Virtual Channels (Canales Virtuales) en la configuración del Servidor de Escritorio Remoto. Aunque esto bloquea el uso de esta herramienta, también deshabilita copiar y pegar, lo que podría ser un obstáculo o una gran molestia para los usuarios.
Aunque es posible deshabilitar los canales virtuales dinámicos en RDP, la siguiente solución para hacer lo mismo no es efectiva para Citrix: https://support.citrix.com/article/CTX202153