Cuando desde Internet queremos acceder a algún recurso en nuestro hogar o empresa, normalmente tenemos que atravesar un firewall y también la NAT. De esta forma, si no tenemos una regla explícita para por ejemplo acceder al servidor SSH de un equipo, no podremos hacerlo ya que solo se permiten por defecto las conexiones salientes. Shootback es una herramienta muy fácil de utilizar que nos va a permitir crear un túnel TCP reverso fácilmente.
El escenario típico donde podremos utilizar esta herramienta es por ejemplo para acceder a nuestra empresa, hogar o PC de algún familiar o amigo, sin necesidad de que tenga que configurar su firewall ni hacer redirección de puertos en el router. El esquema de red que necesita este software, como todos los que hacen TCP reverso, es que el PC al que queremos conectarnos se conecte primero a un servidor central, un servidor que podemos llamar maestro (Master). A continuación, nosotros nos conectaremos a este servidor Master para que directamente nos redirija al PC que se conectó al servidor central.
Por defecto, la NAT nos permite acceder desde la red interna hacia la red externa sin necesidad de incorporar ninguna regla, lo mismo ocurre con los cortafuegos, normalmente siempre van a permitir la salida de tráfico y la entrada de tráfico que anteriormente nosotros hemos establecido, pero nunca permitirán la entrada de tráfico no establecido.
En el siguiente esquema podéis ver cómo funcionaría la herramienta Shootback:
Requisitos de Shootback en los PC donde lo ejecutemos
El único requisito de la herramienta Shootback en el PC que haga de «Master» es tener instalado Python 3.4 o superior, no importa qué sistema operativo estés utilizando, ni tampoco tendrás que instalar ningún tipo de dependencia externa. El requisito de Shootback en los PC esclavos (Slave) a los que queremos acceder sin tocar el firewall ni la NAT, es únicamente tener instalado Python 2.7 o Python 3.4 y superior, tampoco importa qué sistema operativo utilicéis, ni habrá necesidad de instalar dependencias externas.
Ejemplo de uso de Shootback
Imaginemos que queremos acceder al PC «SLAVE – SSH» ya que queremos iniciar sesión en su servidor SSH. El router R1 está haciendo NAT y no redirigimos puertos, por tanto, no podremos conectarnos desde fuera a él. Sin embargo, en el «Master» podemos ejecutar el servidor Shootback de la siguiente forma:
python3 master.py -m 127.0.0.1:20000 -c 127.0.0.1:20022
Entonces el PC Slave – SSH se conectará a este servidor Master de la siguiente forma:
python slaver.py -m 87.87.87.87:20000 -t 127.0.0.1:22
Una vez que esté conectado correctamente el servidor «Master», ya podremos conectarnos fácilmente desde cualquier PC al servidor SSH de «SLAVE – SSH» simplemente poniendo lo siguiente:
ssh 22.33.44.55 -p 20022
Podéis acceder al proyecto Shootback en GitHub desde aquí, tendréis disponibles todo el software y también toda la documentación necesaria para realizar comunicaciones reversas.
Os recomendamos acceder a nuestro curso online de Python donde aprenderás a programar en este lenguaje, además, también podéis acceder a nuestra sección de redes y seguridad informática donde tenéis manuales y trucos para sacar el máximo partido a vuestra red.