WINTXCODERS

OFF TOPIC => Taberna => Mensaje iniciado por: Root Vuster en Julio 16, 2018, 05:45:41 PM

Título: como Funcionan las empresas AntiDdos
Publicado por: Root Vuster en Julio 16, 2018, 05:45:41 PM
Hola Buen dia compañeros, de Wintxcoders.

Desde hace un tiempo, e estado Interesado en saber como funcionan las Empresas Anti-Ddos es decir como hacen ellos para crear Unas NS Las cuales muestran algo especie de un cache (Estilo cloudflare under attack) mi otra curiosidad es como hacen ellos para saber cuantas peticiones mas o menos soportan y dependiendo de la red, ofrecen un plan.
Título: Re:como Funcionan las empresas AntiDdos
Publicado por: WIитX en Julio 20, 2018, 09:54:12 AM
Reverse proxy
Título: Re:como Funcionan las empresas AntiDdos
Publicado por: Neva(); en Agosto 09, 2018, 12:31:11 AM
Todo depende del campo, bajo mi punto de vista podemos dividir las empresas anti ddos en dos tipos principales: Las mas extendida, que te protege el servidor, y la menos popular, que te protege software como puede ser tu pagina web.
Dejame que me explique un poco mejor y empiece primero por los anti ddos como los conocemos la mayoria.
Tienen varias partes, pero un esquema general es el siguiente:
Edge -> Firewall -> tu servidor.
El Edge es como el nucleo que recibe una inmensa cantidad de conexiones, y tiene una capacidad gigante, en este nivel se bloquean ataques MUY comunes y simples, como pueden ser ataques vectoriales (SSDP, NTP..) , es decir, aquellos que tienen un patron muy basico y que se bloquean denegando por ejemplo el source port del paquete que recibimos.
El firewall es un servidor que se encarga de filtrar los paquetes que llegan a tu servidor, suelen basarse en lo siguiente:
1) Verificaciones de sesion, el firewall verifica que has enviado correctamente todos los handshakes (por ejemplo, un cliente normal NO enviaria un paquete ACK sin enviar un paquete SYN previamente). Si son mas especificos, el firewall puede verificar que has enviado paquetes propios que el servidor necesite (por ejemplo, el firewall GAME de ovh verifica que los paquetes que recibe el servidor sean del juego que hostees).
2) Bloquear patrones de ataque conocidos, por ejemplo si sale una botnet que causa estragos como pudo haber sido el caso de MIRAI, los ingenieros buscan un patron que siga el bot SIEMPRE, de forma que con un conjunto de reglas puedan bloquear cualquier ataque realizado por ese bot de forma permanente.
3) Verificar la integridad de los paquetes, calculando el cuerpo de los datos recibidos, el rango de la ip, y demas propiedades que sabemos deben tener cierto valor.
4) Bloquear protocolos/puertos que el servidor no use
5) Limitar la cantidad de datos que puede enviar una IP.
6) Banear cualquier IP que exceda X paquetes en Y segundos (muy poco utilizada, es mas viable utilizar los metodos anteriores...)

Pero si nos fijamos, esto solo protege el servidor, que pasa si nos atacan nuestra pagina web? Al fin y al cabo, recrear una peticion legitima de un navegador es muy complicado, ademas de que quien "acepta" estas peticiones es el servidor web en si mismo, por lo que el firewall que hemos mencionado NO puede acceder del todo, hacerlo seria contraproducente para nosotros.
Como lo solucionamos? Utilizando dos servidores web, Cloudflare, sucuri, incapsula, stormwall y otros provedores hacen lo siguiente.
Servidor web(proxy) -> Tu servidor web.
Si lo extendemos un poco mas, lo podemos ligar con el esquema que hicimos antes.
Edge -> firewall -> servidor proxy -> servidor web -> tu servidor web.
Entonces, como podemos determinar en nuestro servidor proxy que las peticiones sean legitimas? Para ello, las empresas usan distintos metodos (bajo mi punto de vista, son bastante rudimentarios y siempre acaban afectando al usuario legitimo .. )
1) Verificar que NO es un bot, para ello el servidor proxy envia un desafio al cliente que puede hacer alguna de las siguientes tecnicas:
a) Cargar javascript y crear una cookie con el valor resuelto por nuestro codigo javascript, de forma que nuestro proxy verifique que los valores son correctos.
Esto fue bastante eficaz durante bastante tiempo, pero los crackers aprendieron a emular el javascript y a dia de hoy, es sencillo en la mayoria de los casos saltarse este tipo de chequeos (el ejemplo mas comun, es el modo UNDER ATTACK de cloudflare, que basicamente lo que hace es ejecutar javascript y realizar unas operaciones que resultan en 2 o 3 cookies).
b) Hacer que el usuario resuelva un puzzle o captcha, es la forma mas eficaz hasta el momento ya que los bots por lo general no son capaces de resolver un captcha complejo, es decir, el captcha no es la unica parte complicada, tienes que OBTENER el captcha y finalmente enviarle la respuesta al proxy, saltarse esta verificacion necesita basicamente que el atacante programe de forma dedicada un metodo que se salte tu firewall.
2) Comprobar los headers, muchos bots envian las peticiones malformadas, saltandose headers como pueden ser: Accept, Accept-Encoding ... mirar que estos estan presentes es una forma de verificar que el usuario es legitimo y no un bot.
3) Comprobar el SSL, ya que todos los navegadores deben de ser capaces de usar todo tipo de SSL no es malo verificar este paso.
4) Limitar las peticiones que envia cada sesion en cierto tiempo.
Y otros detalles que, al fin y al cabo dependen del ingenio que tenga la persona xD, yo personalmente he programado hace un par de dias uno de estos servidores para mitigar ataques y los resultados me han encantado.
(https://i.gyazo.com/39d60e6860fac9926d87db5ffaa10afb.png)