OpenNap: Análisis de protocolo.

Desde que en 1996 Hotline Communications destapara la caja de pandora, el mundo de las peer-to-peer no ha hecho más que crecer. El primer salto llegó de la mano de Shawn Fanning en 1999 con Napster llegando a alcanzar 13.6 millones de usuarios. Eso es bastante gente compartiendo datos de todo tipo. Supongo que todos sabemos cual era el tipo mayoritario: el contenido con copyright jajajaj. Al margen de las polemicas de si es legal descargar contenido con derechos de autor, este fue el motivo que eliminó Napster del underground y lo paso a la zona de la RIAA y AOL. En este post voy a tratar de describir OpenNap, un protocolo clon de Napster que demuestra la sencilles de la aplicación y la facilidad para filtrar este tipo de tráfico p2p con cualquier IDS -Sistema de detección de intrusos-, por ejemplo Snort.

Características

  • Sistema centralizado: Un servidor central actúa de intermediario para poner en contacto a los peer y procesar las consultas.
  • No hay cifrado del payload de los mensajes.
  • Conexiones TCP.
  • Fácil obtener patrones de comportamiento y detectarlos con IDS.

En cualquier aplicación p2p se distinguen cuatro tipos de mensajes:

  • Discovering & booting
  • Sharing
  • Quering & lookup
  • Downloading

Paso 1: boot
El cliente envia un mensaje de loggin al servidor en el que indica entre otras cosas:

  • nick-name
  • password
  • puertos
  • Tipo de cliente
  • velocidad de conexión
  • Estoy tras un firewall?

Estos mensajaes son siempre iguales, no se emplean técnicas de relleno ni nada parecido por lo que se puede obtener un patrón de comportamiento muy facil. Esto les encanta a los ISP como Ono en España.
Tras esto el cliente recibe una respuesta del servidor con información del mismo como: versión, cadena de bienvenida, numero de usuarios conectados, numero de archivos compartidos y demas datos estadisticos.

Paso 2: envio de la lista de archivos compartidos
Este es el punto flaco del asunto: el necesitar un servidor que almacene esta información, y fue lo que provocó la caida de Napster.
El cliente envia un mensaje con tantas entradas de este tipo como archivos contenga:

A esta tupla se le añaden más metadatos necesarios para realizar una la búsqueda, aunque adelanto: el sistema empleado al respecto no es muy eficiente.
Paso 3: Búsqueda de un archivo.

Se envia al servidor la cadena de busqueda que contien las key word y otra información de filtrado como la velocidad minima de los peer.

Como respuesta recibe una mensaje con todas las entradas coincidentes con la búsqueda. Cada entrada posee el path completo del archivo, tipo de conexión y metadatos. La parte ineficiente es que el servidor envia todo lo que tiene al cliente y luego es el cliente el que afina la búsqueda sobre la información recibida.

Paso 4: Descarga de contenido.

El cliente envia al servidor un mensaje indicando el deseo de descargar un archivo. El servidor responde con las IP’s y puertos de los peer.

En este punto tenemos dos situaciones: Peer protegidos por firewall o sin ellos. El protocolo contempla las dos situaciones y permite descargar archivos a menos que los dos peer esten tras un cortafuegos.

Esquema del protocolo OpenNAp

En las figuras se aprecian los tipos de mensajes implicados en los distintos pasos. Lo más simple es cuando ninguna de las partes se encuantra tras un cortafuegos. El storing peer envia un 1 al cliente y este envia al storing peer un get. Tras esto, el cliente envia en nombre del archivo que necesita y el desplazamiento desde el que quiere comenzar al descargar. La primera vez este valor será 0. Con esto es posible pausar las descargar. A continuación el storing peer envia el tamaño completo del archivo y comienza al flujo de bytes al cliente.

Conclusión: Se trata de un protocolo simple para que cualquiera pueda iniciarse en el mundo del intercambio de datos. Los protocolos actuales son más complejos y usan técnicas de ofuscación. El próximo en comentar será el de WinMX.

Referencias:

Napster Protocol.
Angelo Spognardi† Alessandro Lucarelli, Roberto Di Pietro. A methodology for p2p file-sharing traffic detection. In IEEE 2005.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: