Gsocket: Una herramienta para establecer conexiones detras de firewalls.

Hace poco incorporamos en Debian, una herramienta muy interesante llamada GSOCKET, la cual nos permite establecer conexiones TCP de forma segura entre dos puntos sin importar que haya en el medio. Es decir, Gsocket nospermite que dos estaciones de trabajo en diferentes redes privadas se comuniquen entre sí. A través de cortafuegos y a través de NAT, como si no hubiera un cortafuegos.

Algunas caracteristicas son:

  • Usa GSRN (Global Socket Relay Network)
  •  Encripcion End-2-End  (usando OpenSSL’s SRP / RFC 5054)
  • AES-256 & key exchange using 4096-bit Prime
  • No requiere PKI
  • PFS (Perfect Forward Secrecy)
  • Soporte TOR

Muy seguramente muchos estarán preguntando que es GSRN?  GSRN es un servicio en la nube provisto por THC (el grupo  The Hacker’s Choice )  y cualquier persona puede utilizarlo de forma gratuita. AHora quizas muchos esten pensando que podria ser muy inseguro, sin embargo el codigo esta totalmente disponible en github para ser auditado y compilado. La arquitectura de seguridad de gsocket está diseñada para no depender de la integridad del GSRN: el GSRN solo ve el tráfico cifrado. Literalmente lee datos cifrados de una conexión TCP y los reenvía a otra conexión TCP.  No se guardan ningun tipo de registros. Si desean conocer mas informacion sobre GSRN pueden ir a este enlace

¿Como funciona?

En este contexto debemos de dejar de pensar en las direcciones IP y puertos. En su lugar, debemos pensar en que dos programas deberían pueden comunicarse entre sí siempre que conozcan el mismo secreto (en lugar de la dirección IP y el número de puerto del otro). GSocket facilita esto: deriva localmente las claves e ID de sesión temporales y conecta dos programas a través de la red de retransmisión global de sockets (GSRN) independientemente de la dirección IP local o la ubicación geográfica, e independientemente de la misma. Una vez conectada, la libreria negocia una conexión TLS segura (End-2-End). El secreto nunca abandona su estación de trabajo. El GSRN solo ve el tráfico cifrado.

A continuacion un video donde vemos la herramienta en accion.

Gsocket toolkit

Gsocket incluye las siguientes herramientas:

  • gsocket – Hace que un programa existente (detrás de un firewall o NAT) sea accesible desde cualquier parte del mundo. Lo hace analizando el programa y reemplazando la capa IP con su propia capa Gsocket. Una conexión de cliente a un nombre de host que termina en ‘* .gsocket’ luego se redirige automáticamente (a través de GSRN) a este programa.
  • gs-netcat – Netcat con esteroides. Convierta gs-netcat en una puerta trasera inversa cifrada con AES-256 a través de TOR (opcional) con un verdadero PTY / shell de comando interactivo (, transferencia de archivos integrada, genere un proxy Socks4 / 4a / 5 o reenviar conexiones TCP o dar a alguien acceso temporal a la shell.
  • gs-sftp – servidor y cliente sftp entre dos estaciones de trabajo
  • gs-mount – Acceso y puntos de montajes remotos cifrados
  • blitz – copiar datos entre estaciones.

Instalacion.

En Debian por ahora se encuentra solo en Unstable, una vez Debian 11 sea liberado, estara disponible en testing, para instalar desde SID:

sudo apt-get install gsocket.

Algunos ejemplos.

Como se pueden estar imaginando, gsocket tiene un sin fin de casos de usos. En esta ocasion vamos a ilustrar solo un par de ejemplos:

Transferir archivos entre dos estaciones.

Para esto, vamos a usar la herramienta blitz. El primer paso es poner a la escucha  blitz en el PC donde se quieren recibir los archivos.

En la maquina donde vamos a recibir los archivos ponemos a la escucha blitz:

blitz -s

Posteriormente va a preguntar el secreto, se puede definir uno, o darle enter para que se genere automaticamente.

Por ultimo, en la maquina donde tenemos los archivos a transferir, hacemos:

blitz file*

Preguntara el secret que previamente definimos, lo ingresamos y si todo sale bien, empezara la transferencia.

Ejecutar comandos en una maquina remota.

Otros de los casos de usos.  de Gsocket es poder enviar o ejecutar comandos a una maquina remota a la cual no podemos acceder por que no hay conexion via IP. Para esto en la maquina A ejecutamos el comando.

gs-netcat -l -e “echo hello world; id; exit”

Como siempre nos pedira el secret, lo asignamos y por ultimo en la maquina remota ejecutamos:

gs-netcat

Si todo ha salido bien, veran algo como esto:

 

Conclusion.

Como pueden darse cuenta, Gsocket tiene un sin fin de casos de uso, tanto para cosas buenas como para cosas malas, como todo, no es la herramienta, es el uso que le des a la misma.

Comparte!
Etiquetas:

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *