¿Torrents, herramientas o armas blancas?

Joel Ibaceta
joelibaceta

--

Estaba leyendo sobre p2p y la especificación de archivos torrent y me pareció interesante lo simple de su estructura y lo fácil que podría ser alterar un archivo torrent para que pueda convertirse en un generador de multiples requests distribuidos hacia cualquier servidor.

Imaginemos un escenario en el que empezamos a recibir muchas peticiones a nuestro servidor desde muchos orígenes diversos de forma constante por varios minutos, consultando endpoints estrategicos, con alta carga de procesamiento. Sin un buen diseño este podría ser un mal día para nuestras aplicaciones.

Después de imaginar este escenario me propuse hacer una prueba, estimar cual seria la escala de un ataque de este tipo y con cuanta facilidad un programador cualquiera podría llevarla acabo.

Primero, Crear un servidor web de prueba como destino del ataque

Para esto uso un servidor local expuesto hacia internet usando ngrok.

Luego, Descargar un archivo torrent valido y alterar el contenido

Buscamos un archivo torrent cualquiera con el fin de tomar como base una estructura valida para que el torrent siga siendo funcional despues de las modificaciones.

Para generar un nuevo torrent “malicioso” cambiando los trackers u orígenes de datos a por url a atacar, en este caso el endpoint /ping de mi servidor de prueba expuesto via ngrok en http://5e3c5e1d.ngrok.io

Los archivos binarios se muestran en un formato descriptivo para facilitar su lectura, Izquierda: Archivo torrent original, Derecha: Archivo torrent alterado

Y por ultimo, iniciar la descarga desde el nuevo archivo torrent

Como vemos, el archivo sigue siendo funcional y el archivo final esperado es descargado sin problemas, aunque con la pequeña diferencia de se que enviara un request cada 9 segundos a nuestro servidor de prueba. (Se usan multiples endpoints o parámetros distintos para evitar el aumento exponencial del tiempo de reintento)

El archivo se descarga sin problemas y el cliente envía requests constantes al servidor de prueba
Vemos que empezamos a recibir los requests desde nuestro servidor

Pero … ¿Qué tanto se puede hacer con esto?

Considerando que tenemos 50 usuarios que consumen cada torrent al menos hasta terminar su descarga, en un escenario de 5 torrents maliciosos publicados, podríamos tener hasta de 1.6 k request por minuto durante 7 minutos y de 0.7 k rpm por 15 minutos mas, todo esto desde multiples orígenes … me parece que es una interesante forma casera de hacer un DDoS for dummies.

El numero de endpoints permite evitar el efecto de aumento de tiempo en reintento después de un error

Aunque también esto nos lleva a pensar …

¿Cuántos torrents hoy están siendo usados para algo más que solo descargas …?

--

--

Joel Ibaceta
joelibaceta

CTO at Kwema Inc. #developer #traveler #investor #packtauthor #fintechexpert #entrepeneur Github: https://github.com/joelibaceta, Instagram: joelibaceta