Muy buenas a todos!

En esta ocasión os voy a contar una historia real, en la que tuve que echarle mano a la imaginación (y algunas herramientas, dicho sea de paso) para conectarme por escritorio remoto a mi equipo, desde una red filtrada por la Universidad de Barcelona.

Todo comenzó en la última No cON Name, en Noviembre de 2017.
Hacía tiempo que tenía preparada una charla sobre Mousejacking, pero por motivos personales no pude presentar el paper a la organización y me quedé fuera de las ponencias.

Así que se me ocurrió una idea genial, hablar con los responsables del evento para montar un pequeño taller en los descansos más largos. Así podría enseñarle a los asistentes mi proyecto de forma rápida y efectiva mientras esperaban que fuera la hora de entrar en la próxima charla.

No Con Name 2017 – Buscando algo en mi mochila 😅

Para llevar a cabo la demostración, necesitaba conectarme remotamente a mi máquina virtual, ya que sería quien recibiría la conexión entrante del meterpreter inyectado en la víctima. Hasta aquí todo normal, pero cuando quise conectarme desde la red inalámbrica de la Universidad.. sorpresa! el tráfico estaba filtrado y solo permitía que las conexiones salientes fueran a través de HTTP y HTTPS.

Y ahora qué hacemos? Cómo voy a enseñar la parte más chula de la demo si no puedo conectarme a mi equipo?

Pues a pesar de lo que pueda parecer, la solución era bastante fácil y ya lo tenía todo dispuesto (sin yo saberlo en aquel momento) para conseguir la tan ansiada conexión a escritorio remoto.

Ahora que ya estamos en situación, vamos a ponerlo en práctica.
Lo primero que necesitaremos será un cliente SSH, en mi caso ya tenía instalado MobaXterm en el portátil.

A continuación necesitaremos un servidor proxy. No importa cuál, pero es importante que el puerto a la escucha sea el 80. De esta manera nuestra conexión no será filtrada por el firewall de la Universidad. Para esta ocasión utilizaré la versión gratuita de CCProxy para Windows.

Ahora que ya tenemos las dos partes, vamos a conectarlas entre sí.
Cómo? pero si tenemos un cliente SSH y un servidor proxy escuchando conexiones HTTP! Aquí hay algo que no cuadra..

Pues veréis, existen algunas herramientas que nos permiten reconstruir nuestros paquetes y enviarlos a través de otros protocolos. En nuestro caso, vamos a utilizar Corkscrew, que por casualidad ya viene preparado para ser instalado en MobaXterm con un solo comando 😎

Esta utilidad, encapsulará nuestros paquetes SSH bajo HTTP, de manera que cualquier elemento de red que este interceptando nuestras comunicaciones solo verá paquetes con destino al puerto 80. Una de las cosas que más me gustan de este sistema, es que nuestros paquetes seguirán estando cifrados a pesar de viajar por un protocolo no seguro.

Sabiendo esto, vamos a proceder a la instalación en MobaXterm tecleando el siguiente comando: apt-get install corkscrew

Para finalizar nuestro escenario, necesitaremos un servidor SSH que se encuentre dentro de la red local del equipo al que conectaremos posteriormente. En su momento utilicé una Raspberry Pi que siempre tengo conectada para estos menesteres, pero podéis usar cualquiera.

Con esto ya podríamos conectarnos por SSH a nuestro equipo a través del proxy, pero vamos a rizar aún más el rizo añadiendo a la ecuación la conexión de escritorio remoto.

Para ello, vamos a utilizar una de las funcionalidades ya incorporadas en el propio servidor SSH, el port forwarding. Esta feature nos permitirá redirigir peticiones a diferentes puertos y equipos de nuestra red, como si de un NAT se tratase.

De esta manera, el esquema de conexiones sería tal que así:

Cómo podéis ver en la imagen, nuestra petición original se irá redirigiendo por el camino para llegar a su destino. Así pues, una vez creado el túnel solo necesitaremos iniciar una conexión de escritorio remoto contra nosotros mismos para establecer la conexión.

Otro dato importante es que podemos utilizar el proxy de dos maneras diferentes, dentro de nuestra LAN o a través de otra IP pública diferente al servidor SSH (WAN). En ambos casos el proxy enviará los paquetes al servidor SSH, por lo que no afectará a nuestro escenario.

Ahora que ya lo tenemos todo claro y funcionando, vamos a escribir en MobaXterm las palabras mágicas: ssh -L 4444:192.168.1.250:3389 -g [email protected] -o «ProxyCommand corkscrew 88.44.22.11 80 192.168.1.210 22»

Si todo ha salido bien, el servidor SSH nos pedirá nuestras credenciales. Al validar nuestro usuario, la conexión se completará abriendo un puerto en nuestro equipo (en este caso el 4444) que establecerá una conexión directa con el equipo Windows remoto en el puerto 3389.

Ahora solo tenemos que conectarnos por escritorio remoto a la dirección localhost:4444

Y voilà! Ya podemos conectarnos a nuestro equipo remoto eludiendo el firewall de la Universidad.

Como dato adicional os dejo una captura del tráfico del equipo, para que veáis que la comunicación con el túnel siempre se realizará a través del puerto 80 gracias a Corkscrew.

Con esto doy por terminada esta anécdota que tantos quebraderos de cabeza me dio en su día. A continuación os dejo una foto del momento en el que conseguí hacer funcionar la demo:

No Con Name 2017 – Taller de Mousejacking por @JoelGMSec

Espero que os haya gustado, si tenéis cualquier duda me la podéis dejar en los comentarios 🙂

Nos vemos en la próxima!