Ataques DDos a través de XSS Persistente By @alvarodh5

Iniciado por blackdrake, Marzo 24, 2015, 12:12:55 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Marzo 24, 2015, 12:12:55 PM Ultima modificación: Diciembre 10, 2015, 11:25:00 PM por EPSILON

A lo largo del año pasado se han conocido No tienes permitido ver los links. Registrarse o Entrar a mi cuenta No tienes permitido ver los links. Registrarse o Entrar a mi cuentaque confirman que muchos ataques DDoS están siendo generados desde páginas con vulnerabilidades de tipo Cross Site Scripting (XSS) Persistentes.

Esto es debido, a que los cibercriminales, inyectan código JavaScript en el interior de la vulnerabilidad XSS persistente que será ejecutado por todos los visitantes a través de su navegador. De esta manera se puede generar una gran cantidad de peticiones por segundo hacia el sitio atacado, incluido en el código JavaScript, y dependiendo del tráfico de visitas de la web que alberga el XSS persistente, generar el efecto de DDoS masivo.



Como se puede apreciar, este tipo de ataque puede ser muy dañino, ya que solo se necesita encontrar un sitio vulnerable a Cross Site Scripting (XSS) persistentes con bastante tráfico y visitantes que mantengan la página abierta, para mantener el código JavaScript ejecutándose en su navegador.

Los atacantes también tienen en cuenta, el tipo de petición que se realizará el código JavaScript insertado en a través del XSS, por ejemplo, una petición como:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Puede ser menos dañina que:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



La segunda URL causaría una cantidad más considerable de trabajo a nivel de procesamiento en el servidor de la víctima, debido a que tiene que buscar la palabra "incibe" en la base de datos.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta han señalado que los sitios de vídeo son un objetivo común para este tipo de ataques, ya que las víctimas pasan un largo periodo de tiempo visitando la página mientras se reproducen los videos. Esto los convierte en objetivo preferido de estos ataques, porque cuanto más tiempo esté abierta la página, más tiempo continúa el ataque.

En general, este tipo de ataque es simple y eficaz cuando los atacantes se toman su tiempo y ponen empeño en conseguirlo. También tienen una gran ventaja para el atacante, ya que no requieren ningún tipo de infección en un ordenador de los usuarios, sino tan sólo código JavaScript en sitios vulnerables.

¿Cómo podemos protegernos de este tipo de ataque?


Cómo cualquier ataque DDoS, lo primero que debemos de hacer es identificar el patrón utilizado por el atacante, por lo que podemos ejecutar el siguiente comando para visualizar los logs de acceso en nuestro servidor, en este caso Apache:


Una vez ejecutado, podremos visualizar en tiempo real las visitas de nuestro sitio, pudiendo así identificar la IP atacante.

- IPs y fecha de cada petición -

- Petición que recibe nuestro servidor web -

- User-Agent utilizado por los usuarios -

Como se puede observar, cada IP corresponde a los diferentes usuarios que están accediendo a la web infectada. Y es esta web la que se encarga de que los usuarios, sin ser conscientes de ello, lancen peticiones a nuestro servidor.

Puesto a que no han editado las cabeceras, podemos saber la página que se está utilizando para generar el ataque Ddos.

En este caso, es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Dado este punto, lo mejor sería avisar al administrador de esa página web, pues seguramente no sea consciente de lo que esté ocurriendo. Mientras los programadores del sitio arreglan la vulnerabilidad, podemos bloquear el acceso de las IPs atacantes para intentar frenar el ataque DDoS que estamos recibiendo.

Mientras tanto, podemos bloquear el acceso al servidor a las IPs atacantes, en este caso, bloquearemos las IPs con fail2ban. No tienes permitido ver los links. Registrarse o Entrar a mi cuentaes un script programado en Python que monitoriza los logs de Apache en busca de patrones sospechosos, además es capaz de tomar medidas para bloquear a los atacantes ya sea con iptables o lanzando un comando de nuestra elección. Se distribuye bajo licencia GNU.

Fail2ban, nos permite filtrar las la peticiones por múltiples campos como por IPs, referer de la cabecera o por el número de conexión en un tiempo dado. En, nuestro ejemplo podríamos filtrar por el referer "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" .

En caso de no disponer de este dato deberíamos tener en cuenta todas las peticiones, filtrando por las cadena "GET / HTTP/1.1", condición que es muy común y con la que podríamos banear visitas legitimas.

- Instalación de fail2ban -

Veamos como configurar Fail2ban. El directorio de configuración de Fail2ban se encuentra en: /etc/fail2ban/ en donde existen dos directorios más: action.d y filter.d

  • action.d: Encontraremos las acciones que Fail2ban realizará cuando alguno de nuestros filtros encuentre alguna IP haciendo maldades.
  • filter.d: Se almacenarán los filtros que utilizaremos para identificar a los atacantes.

Para evitar el ataque editaremos el archivo /etc/fail2ban/jail.conf para añadirle las siguientes líneas:

- Líneas de configuración que debemos añadir -


  • Maxretry: Especifica cuantos intentos vamos a dejar antes de banear la ip.
  • findtime: Es el período de tiempo en segundos que estamos contando los "reintentos" (300 segundos = 5 minutos).
  • bantime: Es el tiempo que debemos esperar para liberar las peticiones, ósea el tiempo que la IP estará baneada, en este caso se trata de 5 minutos.
  • logpath: La ruta de nuestro log de Apache.

Es importante configurar correctamente este archivo, ya que, si lo hacemos mal, fail2ban baneará visitas legitimas.

Ahora creamos el archivo de filtrado en /etc/fail2ban/filters.d/http-get-dos.conf y dentro de este, colocamos las siguientes líneas:

- Líneas de configuración que debemos añadir -

Por último, debemos reiniciar Fail2ban para que coja la nueva configuración.

- Comando para reiniciar fail2ban -

Una vez reiniciado, solo debemos esperar a que fail2ban banee automáticamente a las IPs atacantes, podremos ver los baneos que realiza desde su fichero de logs /var/log/fail2ban.log

- Baneo de la IP 1.20.10.1 -

Cuando esta IP intente acceder a nuestro servidor, fail2ban se lo impedirá.


¿Por qué baneamos las IPs con fail2ban y no desde Apache o htaccess?


Esto es debido, a que si bloqueamos las IPs desde el nivel de aplicación es ineficaz, ya que, el servidor, en este caso Apache, recibe la petición igualmente. Si utilizamos algún firewall como iptables, bloqueamos las conexiones a nivel de red y de este modo Apache nunca procesa la petición.

Por ultimo comentar que aunque Fail2ban limita el impacto de un ataque de este tipo no es una solución definitiva, ya que el servidor sigue recibiendo las peticiones. En caso de que un ataque genere un gran volumen podría provocar igualmente una denegación de servicio en nuestro servidor.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Autor: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (Blackdrake)




Genial aporte blackdrake :) y muy bien explicado, me he enterado hasta yo xD

Marzo 24, 2015, 12:30:05 PM #2 Ultima modificación: Marzo 24, 2015, 12:33:10 PM por Gabriela
Excelente aporte y trabajo, Blackdrake.

La información actual es indispensable, más cuando se construye una un paper descriptivo, didáctico, y que permit, amplificar conocimientos.

Las distintas perspectivas de abordaje, habilitan hacerse una idea global del tema que seleccionaste.

Gracias, por compartir y dejar que podamos disfrutarlo.

Gabi.
Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

Buen aporte mi brother, me paso lo mismo hace un año, cuando realizaba pruebas de vulnerabilidades en mi web junto a un gran amigo  :D me suspendieron el hosting, debido a que consumia muchos recursos en el servidor principal, el cual afectaba a los demas usuarios, pero tuve que hablar con el proveedor y decirles que solo realizaba modificaciones en el codigo fuente de la web, más no mencione las pruebas de vulnerabilidades que estaba realizando, para asi evitar ser el responsable del problema  8)  :D
El Lenguaje es la Ciudad para cuya Edificación cada Ser Humano ha Aportado una Piedra