Español | English
rss facebook linkedin Twitter

Huyendo de la red (I)

Dado que hasta fin de mes no hay noticias nuevas relevantes sobre SHA-3 voy a iniciar un hilo de 3 entregas sobre como crear un cliente/servidor usando protocolos poco habituales, para asi poder "escapar al control" de buscadores, indexadores de contenidos, etc... y huir de la red. Es cierto que podemos poner un servidor web en otro puerto, configurar el robots.txt o requerir user/pass para acceder pero tarde o temprano tendremos un enlace externo a nuestro servidor, algún indexador no hara caso del robots.txt o quedara registrado que tenemos una pagina de acceso y no queremos nada de eso. Para ello haremos un servidor de ficheros y un cliente para ese servidor. En las siguientes entregas desarrollaré el código de ejemplo que ilustre esta entrada.

El protocolo de red elegido a nivel de transporte, capa 4, es UDP-Lite, presente desde hace unos años en prácticamente todos los sistemas operativos. Usaremos además TFTP como protocolo de control de sesión y presentación aunque podemos implementar HTTP o cualquier otro.

¿Por que UPDLite? Hay varias razones para haberme decidido por este protocolo. El más importante, no es TCP y uno de los objetivos de este post es usar protocolos poco habituales. Otra razón importante es la poca carga de trabajo que provoca en routers, switches y demás elementos activos de la red en comparación con TCP y no necesitar establecer una conexión. Al ser un protocolo no orientado a conexión implica que tendremos que desarrollar un mecanismo para controlar los paquetes perdidos y corrompidos en capas superiores.

Veamos un poco más en detalle este protocolo. Está especificado en el RFC 3828[1] y es una variación de UDP en la que el campo de la cabecera UDP de longitud cambia de significado por el de cobertura del cheksum. Este campo nuevo, checksum coverage, indica sobre cuántos bytes del paquete UDPLite se ha realizado el checksum. Los valores posibles son 0, que indica que se ha calculado el checksum de todo el paquete y por tanto no existe diferencia con respecto a UDP o un numero mayor que 8, que indica de cuántos bytes de datos se ha calculado el checksum. No puede ser menor de 8 ya que la cabecera de UDPLite ocupa los 8 primeros bytes y se calcula siempre su checksum. La longitud del paquete UDPLite la tenemos que calcular a partir del campo longitud de la cabecera IP.





¿Por que TFTP? Es uno de los protocolos más sencillos de implementar y funciona sobre UDP. Está definido en los RFC 1350,2347 y 2348. Por ejemplo hay gusanos como Blaster que lo usan precisamente por su poco peso y también es usado por routers y sistemas embebidos para actualizar/cargar el sistema operativo. Los cambios para hacer que un cliente/servidor de tftp use UDPLite son mínimos y podemos aprovechar codigo con licencias estilo BSD. La principal desventaja de tftp es que solo permite un paquete en ruta, por lo que su rendimiento a través de redes de alta latencia (como conectar a un servidor de internet) es mediocre pero en redes locales es aceptable.

Continuamos en unos días...

Eduardo Morrás
S21sec e-crime

(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login