lunes, 2 de abril de 2012

WebLOIC: DDoS de Anonymous

Como todos los que vivís en España sabeis, el pasado jueves estaba convocada una huelga general por el desacuerdo de los sindicatos con las reformas realizadas por el gobierno. Durante esta jornada tuvimos los típicos piquetes "informativos", pero también pudimos ver un nuevo tipo al que en algunos sitios he visto que los llaman ePiquetes.

Los que durante la jornada del pasado jueves estuvisteis observando el twitter, y más concretamente los hashtags relacionados con la huelga, os encontraríais tweets como este:


En estos Tweets podeis ver como se señala un objetivo (en este caso el Ministerio de Empleo y Seguridad Social) y un enlace que puede ser empleado para atacarlo. Este enlace vendría a ser una versión web de la herramienta LOIC (Low Orbit Ion Cannon), conocida por ser empleada habitualmente por Anonymous en sus ataques de Denegación de Servicio. Desconozco si realmente esta web está basada en la herramienta de escritorio, pero sí que he oído llamarla WebLOIC. Este "WebLOIC", tendría un aspecto así:


Como podeis ver, es un formulario web en el que se puede especificar la URL a atacar, la cantidad de conexiones (protestas) por segundo y un mensaje de protesta a enviar. Luego tiene un botón de "Comenzar Protesta" para empezar el ataque. En algunos casos se vieron enlaces como este pero que ya venían preconfigurados para empezar a lanzar un ataque con un mensaje concreto y un objetivo concreto nada más visitar la web, con lo que se hacía mucho más fácil que usuarios poco avanzados colaboraran. Simplemente tenían que pinchar en el enlace y dejar el navegador abierto.

Pero... ¿qué hace este "WebLOIC" para atacar al objetivo? Si configuramos nuestro navegador para que pase a través de un proxy, por ejemplo Burp, con el que capturar las conexiones que haga nuestro navegador, e intentamos lanzar un ataque contra alguna web, nos encontraremos algo como esto:


Como podeis ver, nuestro navegador empieza a lanzar un montón de conexiones a la URL que hemos especificado como objetivo, a la que le añade dos parámetros:

  • id: Un identificador numérico, que más adelante veremos que está basado en la fecha.
  • msg: El mensaje que definimos en el formulario.

El resto de la petición es como cualquiera de las que saldrían de nuestro navegador, con nuestro User-Agent y con la URL del "WebLOIC" como Referer.

Esta claro que la web hace que nuestro navegador lance todas estas conexiones, pero... ¿cómo lo hace? Podría hacerlo de muchas formas, unas mejores que otras, pero en este caso veremos que lo hace con Javascript. Si analizamos el código Javascript de la página veremos esta función:

var makeHttpRequest = function ()
{
        if ( (currentTime.getTime()-lastSuccess) > 10000)
        {
                return;
        }
        else
        {
                lastSuccess = currentTime.getTime();};
                var rID =Number(new Date());
                var img = new Image();
                img.onerror = function () { onFail(rID); };
                img.onabort = function () { onFail(rID); };
                img.onload = function () { onSuccess(rID);
        };
        img.setAttribute("src", targetURL + "?id=" + rID + "&msg=" + messageNode.value);
        requestsHT[rID] = img;
        onRequest(rID);
};

Como podemos ver, existe una función "makeHttpRequest" crea una imagen y le asigna la URL de nuestro objetivo. Al intentar "mostrar" esta imagen, nuestro navegador va a hacer una conexión HTTP para conseguirla traer, exista o no, con lo que efectivamente se va a provocar una conexión HTTP. Ahora ya solo nos queda ver como hace para lanzar muchas conexiones. En otra zona de código encontramos lo que se ejecuta cuando pulsamos el botón de "protestar", que resumiendo es algo así:

fireInterval = setInterval(makeHttpRequest, (1000 / parseInt(rpsNode.value) | 0));

Vemos que usa la función setInterval(), que va a ejecutar el "makeHttpRequest" la cantidad de veces por segundo que se le ha indicado en el formulario.

A modo de resumen, el "WebLOIC" utiliza javascript para crear objetos que hacen referencia a imagenes (que no existen) en el servidor atacado, a una gran velocidad, con lo que se generan muchas conexiones que podrían llegar a colapsar el servidor, sobretodo si el ataque es seguido por un gran número de gente.

Una cosa a destacar, es que la gente que accede a estas webs puede llegar a pensar que es la web la que lanza el ataque, pero no, como hemos podido ver, es el navegador del usuario el que genera las conexiones, por lo que en todos los registros del servidor atacado va a aparecer su IP, User-Agent, etc, incluso si se realiza contra una web de la que seas usuario habitual... ¿se mandaría tu cookie? tendría que probarlo, pero es posible que sí, y que pudieran identificarte con nombre y apellidos.

Esta, por supuesto, solo es una más de las herramientas que se pueden usar para hacer un DDoS, pero me ha parecido interesante pegarle un vistazo por haber sido usada recientemente en la pasada huelga general.

Actualización: Leo en un Tweet de Luis Delgado que ha probado el tema de la Cookie y, efectivamente, ésta sería mandada. Ver Tweet AQUÍ.

6 comentarios :

Adrián dijo...

Me gusta, sobretodo por que lo han hecho simple.

Felipe dijo...

Pues desde el 29 de marzo parece que la web sigue bajo ataque o bajo tareas de mantenimiento...

http://www.downforeveryoneorjustme.com/meyss.es

Gabriel dijo...

Exelente informe, como siempre.

Jose Selvi dijo...

@Felipe: Yo visito www.meyss.es y la veo funcionar correctamente. Quizá el nombre sin la www no está asociado a la web.

Gracias a todos por vuestros comentarios.

Antonio González Castro dijo...

Buen articulo Selvi, la verdad es que yo esto lo sufri directamente, y la verdad es que al meyss no le afecto para nada, este tipo de ataques con el IPS y en el lugar donde la tienen almacenada en amazon lo han tenido imposible! :)

La web si la vistéis durante el día de la huelga funcionó correctamente :)

Un saludo

Jose Selvi dijo...

@Antonio: Yo también la visité y no la vi caída en ningún momento, como bien dices.