• Un ataque de denegación de servicio (DoS) se caracteriza por
intentar evitar el uso legítimo de un bien, servicio o recurso.
• Estos ataques están diseñados para denegar servicios a host
legítimos que tratan de establecer conexiones. Los ataques DoS son muy comunes entre hackers para anular las respuestas de los sistemas. • Ataques que se aprovechan del tratamiento erróneo de las pilas de TCP/IP y de errores concretos de servicios. • Existen ataques DoS como: • Ataques inundación (flood) • Ataques lógicos
Ataques de fuerza bruta o inundación (Flood)
Consiste en bombardear un sistema con un flujo continuo de
tráfico que acaba por consumir todos los recursos del mismo y el ancho de banda de la red del sistema atacado. Por ejemplo: SYN flooding Se provoca un bombardeo de falsas conexiones, de manera que el equipo atacado no sea capaz de aceptar más conexiones (legítimas). Provoca elevada utilización de CPU y memoria.
TCP/SYN flooding
• Características:
El ataque se aplica a cualquier puerto disponible que
acepte conexiones. Elección de dirección IP spoofed: • Sólo una dirección • Dirección de un rango • Aleatoriamente. • Funcionamiento:
El esquema del establecimiento de conexión TCP es,
• 1) C ----------------- NSc, Syn ----------------- >> S • 2) C <<------- NSc+1, Ack, Syn, NSs ---------- S • 3) C ------------------ NSs+1, Ack --------------->> S Conexión TCP establecida • C <<-------------------- Datos ------------------->> S Normalmente los pasos 1,2 y 3 se producen consecutiva y rápidamente. El servidor suele establecer un timeout de 75 segundos entre el paso 2 y la respuesta del cliente del paso 3. El ataque TCP Syn se basa en falsificar (spoof) el IP origen del paso 1, poniendo el IP de un host legal pero inalcanzable (unreacheable). Por tanto nadie responderá al paso 2, y el servidor deberá esperar 75 segundos en un estado muy incómodo, con su socket a medio abrir, sus bufferes reservados, etc... Además TCP suele tener una cola finita y no muy grande ( de 6 a 15 entradas) para estas conexiones en trámite, por lo que si enviamos varias decenas de estas peticiones de conexión TCP falsas colapsaremos la cola haciendo que el servidor tenga que rechazar el resto de peticiones “legales” que le estén llegando. Si además repetimos esa tanda de peticiones cada 80 segundos (un poco más de 75s, para que dé tiempo de que se desbloqueen las anteriores), conseguiremos parar el servicio TCP. Este ataque es difícil de evitar, ya que se basa en una debilidad intrínseca de TCP.
• Como detectarlo:
netstat -an: Muchas conexiones en estado SYN_RCVD
• Soluciones:
Incrementar capacidad de los servidores.
Protección firewall. Decrementar timeout para abortar intentos de conexión. Aumentar el número de conexiones aceptadas. Reducir el número de puertos que aceptan conexiones.
Ataques semánticos o lógicos
Consiste en enviar al equipo remoto una serie de datagramas
mal construidos para aprovechar alguna error conocido en dicho sistema. Son fáciles de evitar actualizando el Software a versiones que corrijan dichos fallos o añadiendo reglas al Firewall para filtrar paquetes mal construidos. Por ejemplo: Ping of Death
Ping of Death
Conocido como ping de la muerte [PI-1], este ataque se basa en
enviar un paquete de ping (ICMP echo request) de un tamaño muy grande. Teniendo en cuenta que el tamaño máximo de paquete en TCP/IP es de 64 Kbytes (65535 bytes), la implementación de la pila TCP/IP asigna un buffer en memoria de este tamaño. En el caso de que la información sea mayor, el buffer puede desbordarse. El resultado obtenido en muchas ocasiones es que el sistema destino deja de proveer servicio al bloquearse, ya sea rearrancándose (reboot) o incluso apagándose (shutdown). Lo que sucede realmente es que el paquete emitido es fragmentado, a nivel de IP, en las redes intermedias, los fragmentos van siendo encolados en el sistema destino hasta que se reciben los último pedazos (un paquete de 65536 bytes es suficiente), que son los que desbordan el buffer, provocando un comportamiento anómalo. En el momento de la aparición de este ataque (1996) muchas de las implementaciones TCP/IP, tanto de Unix, de Windows, como de los dispositivos de red fueron vulnerables. Simplemente mediante el envío de un paquete cuyo campo de datos sea mayor de (65507 bytes = 65535 – 20 –8) se puede llevar a cabo.
Actualmente:
- Debe tenerse en cuenta que los SS.OO. actuales no
permiten al cliente de ping enviarlo, obteniéndose respuestas como “ping: illegal packet size” (HP-UX) o “Bad value for option -l, valid range is from 0 to 65500” (Windows 2000).