msambartolomeo / TP-PROTOS

Academic Socks5 proxy with custom configuration protocol

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TP-PROTOS

Grupo 8

Integrantes

  • Juan Manuel Negro - Legajo 61225
  • Mauro Daniel Sambartolomeo - Legajo 61279
  • Agustín Omar Morantes - Legajo 61306

Proxy SOCKSv5

Se implementó un proxy SOCKSv5 utilizando los RFC 1928 y 1929. A diferencia del estándar pedido, el proxy solo acepta conexiones de tipo TCP, y no UDP, no provee soporte para autenticación mediante GSSAPI, y solo acepta pedidos del comando CONNECT, todas estas decisiones fueron aceptadas por la Cátedra.

Además, el proxy también hace un log a stdout de las conexiones realizadas y, si está habilitado el password dissector, también lo hace de los usuarios y contraseñas que son ingresadas mediante el protocolo POP3.

Protocolo de monitoreo y administración SHOES

En el archivo shoes-protocol.txt se encuentra la descripción del protocolo de monitoreo y administración diseñado. Se encuentra detallado en estilo RFC para que sea posible su implementación y extensión. Se lo nombró SHOES en relación con SOCKSv5, y porque hace referencia a la frase Should Establish a connection.

Se lo diseñó como protocolo binario basado en TCP y orientado a sesión, tomando similitudes del protocolo SOCKSv5. Se podrán encontrar más detalles sobre decisiones de implementación, problemas encontrados, y posibles extensiones en el informe provisto por el grupo.

Guía de instalación

  1. Primero, correr desde la carpeta raíz del proyecto el comando make para compilar tanto el proxy como el cliente de configuración.

  2. Luego, los binarios se encontrarán en el directorio build con los nombres socks5d para el proxy SOCKSv5 y shoesc para el cliente de SHOES.

  3. Ejecutar los binarios con los flags deseados. Estos binarios se llaman socks5d y shoesc, respectivamente para servidor y cliente; y se encuentran tanto en los directorios server y client como también en el directorio build.

Guía de uso

Se prove un archivo llamado socks5d.8, que se puede utilizar con el comando man ./socks5d.8 para poder ver las opciones de uso. Sin embargo, también se podrán ver aquí.

Servidor

Corriendo el comando ./build/socks5d se iniciará el servidor SOCKSv5, y se pueden utilizar las distintas opciones como argumentos:

  • -h Imprime la ayuda y termina.
  • -v Imprime información sobre la versión y termina.
  • -l <dirección-socks> Establece la dirección donde servirá el proxy SOCKSv5. Por defecto escucha en todas las interfaces.
  • -N Deshabilita los passwords dissectors.
  • -L <dirección-de-management> Establece la dirección donde servirá el servicio de management. Por defecto escucha únicamente en loopback.
  • -p <puerto-local> Puerto TCP donde escuchará por conexiones entrantes SOCKSv5. Por defecto el valor es 1080.
  • -P <puerto-conf> Puerto TCP donde escuchará por conexiones entrantes del protocolo de configuración. Por defecto el valor es 8080.
  • -u <user>:<pass> Declara un usuario del proxy SOCKSv5 con su contraseña. Se puede utilizar hasta 10 veces.
  • -U <user>:<pass> Declara un usuario para el servicio de configuración con su contraseña. Se puede utilizar hasta 10 veces.

El registro de acceso del proxy consiste en:

  • Fecha que se procesó la conexión en formato ISO-8601. Ejemplo 2022-06-15T19:56:34Z.
  • Nombre de usuario que hace el requerimiento. Ejemplo juan.
  • Tipo de registro. Siempre el caracter A.
  • Dirección IP origen desde donde se conectó el usuario. Ejemplo ::1.
  • Puerto origen desde donde se conectó el usuario. Ejemplo 54786.
  • Destino a donde nos conectamos. nombre o dirección IP (según ATY). Ejemplo www.itba.edu.ar. Ejemplo ::1.
  • Puerto destino. Ejemplo 443.
  • Status code de SOCKSv5. Ejemplo 0.

El registro de monitorio del sniffer de contraseñas consiste en:

  • Fecha que se procesó la conexión en formato ISO-8601. Ejemplo 2020-06-15T19:56:34Z.
  • Nombre de usuario que hace el requerimiento. Ejemplo juan.
  • Tipo de registro. Siempre el caracter P.
  • Protocolo del que se trata. HTTP o POP3.
  • Destino a donde nos conectamos. Nombre o dirección IP (según ATY). Ejemplo www.itba.edu.ar. Ejemplo ::1.
  • Puerto destino Ejemplo 443.
  • Usuario Usuario descubierto.
  • Password descubierta.

Cliente

Corriendo el comando ./build/shoesc se iniciará el servidor SHOES, y se pueden utilizar las distintas opciones como argumentos:

  • -h Imprime la ayuda y termina.
  • -u <name>:<pass> Usuario admin y contraseña para acceder al servidor SHOES.
  • -g Lista los usuarios del proxy SOCKSv5.
  • -m Muestra las métricas volátiles del servidor. Estas son la cantidad de conexiones históricas, la cantidad de conexiones concurrentes, y la cantidad de bytes transferidos.
  • -s Muestra el estado del password spoofing.
  • -s1 Enciende el password spoofing.
  • -s0 Desactiva el password spoofing.
  • -b <size> Cambia el tamaño del buffer. Este valor no podrá ser mayor a 65535 bytes.
  • -a <name>:<pass> Agrega un nuevo usuario del proxy SOCKSv5 con dichas name y pass.
  • -r <name> Elimina un usuario del proxy SOCKSv5.
  • -e <name>:<pass> Edita un usuario del proxy SOCKSv5. Se reemplazará el usuario name por la nueva contraseña pass.
  • -l <FQDN/IP> Dirección del proxy SOCKSv5 a configurar.
  • -p <puerto> Puerto del servicio de management del proxy.
  • -v Imprime información sobre la versión de shoesc y termina.

Además, el cliente permite que se indiquen varios parámetros en la misma llamada. El orden de ejecución de los parámetros es:

  • Si se especifican dos parámetros del mismo tipo, se ejecutarán en orden de izquierda a derecha. Esto es particularmente importante para modificar el estado del password spoofing, pues si se corre -s1 y -s0 entonces primero se intentará habilitar el spoofing y después se intentará habilitarlo.
  • Si se especifican dos parámetors de distinto tipo, primero se ejecutarán todos los que modifiquen la configuración del servidor, y después los que obtengan datos. Por ejemplo, si se ejecuta con los parámetros -g -a ejemplo:ejemplo, entonces primero se añadirá el usuario nuevo y posteriormente se listarán todos los usuarios.

About

Academic Socks5 proxy with custom configuration protocol


Languages

Language:C 96.6%Language:Roff 2.0%Language:Makefile 1.4%