
En este artículo vamos a hacernos eco de una herramienta llamada SaSSHimi que es capaz de hacer túneles SSH, sin necesidad de que en el servidor SSH esté activa la directiva AllowTcpForwarding. Debemos recordar que este parámetro permite que a través del servidor SSH, se creen túneles para reenviar el tráfico, y no solo para administrar una determinada máquina de manera remota. Gracias a SaSSHimi podemos crear túneles SSH sin necesidad de esta directiva, que normalmente se encuentra desactivada por seguridad, como parte del hardening SSH.
SaSSHimi, la herramienta para evadir AllowTcpForwarding
SaSSHimi se trata de una herramienta de código abierto. La podemos encontrar para su descarga, de manera gratuita, a través de GitHub.
Hay que mencionar que es común en conexiones SSH encontrarnos con restricciones. Un ejemplo es el uso de AllowTcpForwarding y evitar así el uso de túneles SSH, como hemos mencionado, dentro de la conexión. Esta herramienta actúa para evitar este inconveniente, y poder hacer túneles SSH aunque esta directiva no esté activada.
A través de este parámetro se podría impedir la creación de canales tipo “forwarded-tcpip” y “direct-tcpip”, sin afectar a los canales de tipo “session”. Este tipo de canales son los que se utilizan por SSH para manejar TTYs y ejecutar comandos. El creador de esta herramienta puso como ejemplo, al realizar una conexión desde un equipo A a otro B dentro de la infraestructura, pasando a través de SSH. Se podría instalar en el equipo S, que es donde se inicia sesión, un binario que pudiera abrir un socket hacia el equipo objetivo, que sería el B. Podemos ver la imagen debajo.
Es así como se podría emular el comportamiento de un túnel SSH de tipo local. Uno de los problemas que tienen que resolver es el poder crear túneles dinámicos a través de un canal SSH de tipo “session”, como explicamos anteriormente. Esto lo consigue la herramienta al desplegar en remoto un Proxy Socks y conectar el flujo de datos de un socket local con el proxy socks a través del canal SSH. Podemos ver la imagen del esquema de cómo sería.
Han utilizado el lenguaje Golang
En cuanto al lenguaje de programación para esta tarea han utilizado Golang. Se trata de un lenguaje de programación que ofrece diferentes ventajas frente a Python. Entre ellas podemos decir que es más rápido, genera un código binario único compilado estáticamente y soporta compilación cruzada de base.
SaSSHimi es capaz de cubrir toda la funcionalidad en un único binario y crear un “custom forwarder”. Para ello hace uso de STDIN y STDOUT. De momento esta herramienta se ha creado para solucionar un problema muy específico. Sin embargo en un futuro es de esperar que evolucione y ofrezca novedades. Por ejemplo, poder agregar funciones como túneles remotos y locales, crear una capa adicional de cifrado para dificultar la auditoría de herramientas tipo PAM, así como implementar una TTY dentro de esa capa adicional de cifrado.
Podemos encontrar esta herramienta para su descarga en GitHub. Allí también podremos obtener información completa sobre la misma, así como el modo de uso.
La seguridad es un aspecto fundamental para los usuarios. Existen muchas opciones para proteger nuestros sistemas y equipos. En un artículo anterior nombramos algunos de los mejores programas y herramientas de seguridad gratuitos. Hicimos una selección de software para protegernos en la red. En otro artículo explicamos qué son los ataques de predicción de secuencia TCP.