
Supporto proxy Socks5/4/4a per Remote Desktop Protocol / Terminal Services / Citrix / XenApp / XenDesktop
Questo strumento aggiunge la capacità di un proxy SOCKS a Terminal Services (o Remote Desktop Services) e Citrix (XenApp/XenDesktop). Utilizza un Dynamic Virtual Channel che ci consente di comunicare tramite una connessione RDP/Citrix aperta senza la necessità di aprire un nuovo socket, una connessione o una porta sul firewall.
È necessario installare un plugin (.dll) sul computer client che si utilizza per connettersi al server RDP/Citrix. Sul server RDP/Citrix è necessario utilizzare l'altra metà del progetto, cioè il file .exe, che crea il canale tra il plugin e l'eseguibile del server. Maggiori dettagli possono essere trovati di seguito. Se vuoi usarlo con Citrix/XenApp/XenDesktop, scorri fino alla sezione Citrix.
Se la DLL è registrata correttamente, verrà caricata da mstsc.exe (Remote Desktop Client) o Citrix Receiver ogni volta che viene avviato. Quando l'eseguibile del server viene eseguito lato server, si riconnette alla DLL su un dynamic virtual channel, che è una funzionalità del Remote Desktop Protocol. Dopo che il canale è stato configurato, un proxy SOCKS verrà avviato sul computer client, per impostazione predefinita su 127.0.0.1:1080. Questo servizio può essere utilizzato come proxy SOCKS5 da qualsiasi browser o strumento.
I Dynamic Virtual Channels sono stati introdotti in Window Server 2008 & Windows Vista SP1. Questi e qualsiasi cosa più recente dovrebbero funzionare.
Al momento il client funziona con mstsc.exe (Remote Desktop Client). Nel caso in cui tu voglia usarlo da Unix, prova FreeRDP: ha rilasciato un modulo simile più o meno nello stesso periodo in cui è stato rilasciato questo strumento.
Citrix supporta la stessa API sottostante di Microsoft; anche se non siamo sicuri di quando sia stata introdotta, era prima del 2013, quindi il plugin dovrebbe funzionare con la maggior parte delle soluzioni Citrix.
Puoi scaricare l'intero progetto e compilarlo da solo oppure usare i binari già compilati dalla sezione Releases. È importante che il binario corretto venga utilizzato in tutti i casi; seleziona quello giusto per l'architettura corrispondente (se il tuo client è a 32 bit ma il server è a 64 bit, prendi la dll a 32 bit e l'exe a 64 bit). La .dll deve essere posizionata sul computer client in qualsiasi directory (per un uso a lungo termine, si consiglia di copiarla in %SYSROOT%\system32\ o %SYSROOT%\SysWoW64\) e installarla con il seguente comando come utente elevato (ovvero Amministratore):
regsvr32.exe SocksOverRDP-Plugin.dll
Se il tuo utente non è un amministratore, devi importare anche le impostazioni del registro per il tuo utente. A tale scopo, utilizza il file SocksOverRDP-Plugin.reg.
Se desideri rimuoverla:
regsvr32.exe /u SocksOverRDP-Plugin.dll
Ogni volta che d'ora in poi ti connetterai a un server RDP, questo plugin verrà caricato e si configurerà come specificato nel registro (vedi sotto).
Il file .exe deve essere copiato sul server ed eseguito da qualsiasi utente.
Lo strumento funziona con Citrix Receiver, che viene utilizzato per connettersi al server Citrix. All'utente può essere fornita un'app o un desktop completo; lo strumento funziona in entrambi i casi se il plugin è stato installato correttamente e il componente server .exe è stato copiato ed eseguito sul server Citrix.
Sembra che Citrix abbia solo Citrix Receiver a 32 bit. Ciò significa che se il tuo sistema operativo è a 64 bit e hai già registrato la .dll corrispondente, devi annullare la registrazione della .dll e usare la versione a 32 bit. Se utilizzi un sistema operativo a 32 bit, registra semplicemente la .dll come menzionato sopra.
Tieni presente che Windows a 64 bit ha due regsvr32.exe, uno in *%WINDIR%\system32* (x64) e uno in *%WINDIR%\SysWOW64* (x32); usa quest'ultimo per registrare la .dll a 32 bit, che verrà caricata automaticamente da Citrix Receiver all'esecuzione. Tutto il resto dovrebbe essere uguale; assicurati di aver seguito il readme prima di aprire problemi su Github.
Il componente server (.exe) non richiede alcuna configurazione né alcun argomento. Anche se ne esiste uno per la verbosità:
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
Il componente client (.dll) viene fornito con impostazioni preconfigurate, che vengono installate dalla .dll stessa quando viene registrata, oppure devono essere importate dal file SocksOverRDP-Plugin.reg.
La .dll del client legge tutte le opzioni dal registro; i valori si trovano sotto la seguente chiave:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client\Default\AddIns\SocksOverRDP-Plugin
Ogni volta che il modulo è abilitato e prima che venga effettuata la connessione, viene mostrato un avviso di promemoria. Proprio così:

Questo avviso garantisce che l'utente sappia che il plugin è caricato e con quali impostazioni.
Nel caso in cui il plugin non si carichi o l'eseguibile non venga eseguito perché mancano alcune DLL, ad esempio VCRUNTIME140.DLL, potresti voler installare il pacchetto Visual C++ Redistributable for Visual Studio 2015.
Testato su Windows 11 ARM64: Redistributable
Su Windows 11 ARM64 (Macbook Pro M1), durante l'installazione viene mostrato il seguente messaggio di errore:
The module SocksOverRDP-Plugin.dll was located bt the call to DllRegisterServer failed with error code 0x8002801c
Anche se viene mostrato questo errore, il modulo è installato correttamente e può essere utilizzato.
Il componente server (.exe) può essere eseguito con qualsiasi utente; funzionerà anche con utenti con privilegi ridotti e non ci sono affatto rischi per la sicurezza associati a questo componente.
Il componente client (.dll) per impostazione predefinita è configurato per ascoltare solo su localhost; se questo valore viene modificato, ad esempio in 0.0.0.0, e non c'è un firewall o è configurato male, potrebbe verificarsi un problema di sicurezza, poiché altri computer sulla rete possono accedere al proxy SOCKS e comunicare tramite il server RDP.
Tieni presente che il server SOCKS è attivo solo quando la connessione RDP/Citrix è attiva e l'eseguibile è in esecuzione sul server.
Per impedire agli utenti di utilizzare questo strumento, l'unico modo noto è disabilitare i Virtual Channels nella configurazione del server Remote Desktop. Anche se questo blocca effettivamente l'uso di questo strumento, disabilita anche copia e incolla, il che potrebbe rappresentare un ostacolo o un grande fastidio per gli utenti.