
Un proxy SOCKS para Citrix.
Ica2Tcp es una herramienta desarrollada en C que permite actuar como proxy de cualquier conexión TCP dentro de una conexión Citrix ICA. Es para Citrix lo que ssh -D es para SSH.
Puede encontrar información adicional aquí: https://www.sstic.org/2022/presentation/ica2tcp/
Esta herramienta fue desarrollada como un proyecto de prácticas y aún está en desarrollo. Se publica "tal cual", por lo que algunas partes del código siguen estando un poco sucias. Por lo tanto, puede experimentar algunos fallos ocasionales. Una versión más limpia está en progreso y se publicará pronto. Sin embargo, cualquier comentario sobre esta versión es bienvenido.
Tanto el binario independiente del lado del servidor como la biblioteca compartida del lado del cliente deben compilarse. Consulte el README correspondiente para más detalles:
Por conveniencia, todos los encabezados y bibliotecas de Citrix necesarios (para el cliente Linux64 y el servidor Win32) se han incluido en este repositorio (en citrix_sdk_files/). Todos provienen del Virtual Channel SDK y WFAPI SDK que están disponibles públicamente:
Los archivos CMakeLists.txt de este repositorio permiten compilar los binarios del servidor y del cliente con esos archivos incluidos. Si desea utilizar los últimos archivos del SDK o compilar para otra arquitectura de destino, no dude en descargar e instalar los SDK manualmente; sin embargo, es posible que tenga que cambiar el CMakeLists.txt correspondiente.
Una vez que todo esté compilado, debe instalar la biblioteca compartida del cliente.
Primero, copie el archivo de salida de la compilación DRIVER.DLL a <CITRIX_INSTALL_FOLER>/ICAClient/<DRIVER_NAME>.DLL
A continuación, modifique el archivo de configuración <CITRIX_INSTALL_FOLER>/ICAClient/config/module.ini de la siguiente manera:
<VIRTUAL_DRIVER_NAME> en la lista VirtualDriver de la sección [ICA 3.0] (sustituya <VIRTUAL_DRIVER_NAME> por lo que desee).[ICA 3.0], añada la línea <VIRTUAL_DRIVER_NAME>=On[<VIRTUAL_DRIVER_NAME>] que contenga:DriverName = <DRIVER_NAME>.DLL
LogPath = /path/to/logs/folder/
Port = <PORT_NUMBER_FOR_SOCKS> //default: 33556
Address = <LISTENING_IP_ADDRESS> //default: 127.0.0.1, use 0.0.0.0 to open the socks for non local clients
¡Eso es todo!
Una vez que el controlador del lado del cliente esté correctamente instalado, solo necesita copiar el binario del servidor en el servidor y ejecutarlo desde una sesión ICA activa.
Abre un servicio SOCKS en el lado del cliente en la dirección y el puerto especificados en el archivo module.ini.