- Juan Manuel Negro - Legajo 61225
- Mauro Daniel Sambartolomeo - Legajo 61279
- Agustín Omar Morantes - Legajo 61306
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.
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.
-
Primero, correr desde la carpeta raíz del proyecto el comando
make
para compilar tanto el proxy como el cliente de configuración. -
Luego, los binarios se encontrarán en el directorio
build
con los nombressocks5d
para el proxy SOCKSv5 yshoesc
para el cliente de SHOES. -
Ejecutar los binarios con los flags deseados. Estos binarios se llaman
socks5d
yshoesc
, respectivamente para servidor y cliente; y se encuentran tanto en los directoriosserver
yclient
como también en el directoriobuild
.
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í.
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.
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 dichasname
ypass
.-r <name>
Elimina un usuario del proxy SOCKSv5.-e <name>:<pass>
Edita un usuario del proxy SOCKSv5. Se reemplazará el usuarioname
por la nueva contraseñapass
.-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.