Inicio arrow Artículos arrow Seguridad arrow Violaciones de sistemas (I - Ataques de denegación de servicio)
Menú Principal
Lo más leído
Consigue Firefox
Usuarios
957 registrados
1 hoy
1 esta semana
58 este mes
Último: czar...
Formulario de acceso



... Regenerar clave
... Registro
Violaciones de sistemas (I - Ataques de denegación de servicio) Imprimir E-Mail
sábado, 09 de septiembre de 2006

Un ataque de denegación de servicio o DoS (Denial of Service) es aquel ataque que provoca que un recurso concreto o un servicio de red se vuelva inaccesible a los usuarios propietarios. Por regla general, este tipo de ataque termina con la pérdida de la conectividad de la red en la máquina atacada, ya sea por el consumo abultado de ancho de banda necesario para llevar a cabo la operación o por la propia sobrecarga de los recursos de la máquina afectada. 


Denegación de servicio de aplicación

El ataque sobre una aplicación con el fin de conseguir una denegación de servicio se hace siempre explotando una vulnerabilidad de la misma. Una de las vulnerabilidades más utilizadas es el Desbordamiento de búfer (buffer overflow), que suele producirse mediante la copia de un paquete de datos en un área de memoria más pequeña que los datos a copiar. Como consecuencia de esto, se produce la sobreescritura de otras áreas de memoria que, si están dentro del flujo lógico de ejecución,  hacen que el programa comience a realizar acciones imprevisibles. Esto se hace posible cuando las áreas de memoria destinadas a programa y a datos no tienen separación, lo cual puede llevar a la elaboración y copia de algún tipo de código malicioso en alguna de esas áreas.

Cuando el programa en cuestión tiene privilegios especiales, se puede producir un acceso no permitido a todos los recursos del sistema. Esto se consigue con una utilización correcta de este tipo de error mediante código preparado para este fin (shellcode), lo que trae consigo la consecución satisfactoria del ataque DoS.

La única forma de prevenir este ataque cuando las aplicaciones usadas son desarrolladas por terceros es parcheando dichos programas con código destinado a corregir el error o errores descubiertos.


Denegación de servicio de red

A través de la explotación de diversas vulnerabilidades de la pila TCP/IP nos podemos encontrar con otros tantos tipos de ataques de denegación de servicio.

  • Denegación de servicio distribuida o DDoS (Distributed Denial of Service)

La finalidad de este ataque es saturar la red objetivo. Se efectúa mediante la instalación de varios agentes remotos que se instalan sobre sendos ordenadores. Por regla general, dichos ordenadores se localizan en distintos lugares de la red y pueden llegar a formar conjuntos de millones de máquinas (sin que necesariamente se estén utilizando con el consentimiento del propietario). Mediante la coordinación simultánea de todas las máquinas atacantes se consigue saturar de peticiones y de tráfico todo el canal, hasta terminar con la caída de una aplicación concreta o de parte del sistema. La técnica es muy eficaz y sencilla de llevar a cabo y hay muy poco que hacer si el sistema atacado no está protegido de antemano. Es más, aunque el sistema esté medianamente protegido, el hardware de conexión al exterior (routers, hubs, ...) puede ser perfectamente vulnerable a estos ataques, con lo que la finalidad del mismo (crear una red no disponible) se llevaría a cabo sin necesidad de traspasar estas puertas de enlace. Por ejemplo, un ataque típico DDoS podría ser aquel que se produce con la finalidad de terminar con la actividad de un servidor web. Por medio de solicitudes masivas a una determinada página, se terminaría con la caída del servidor o la imposibilidad de acceso de otros usuarios por simple saturación del ancho de banda, consiguiendo así el objetivo buscado.

La forma de prevenir este tipo de ataques es mediante filtros sobre el servidor que prevengan las peticiones masivas, aunque poco se puede hacer si el ataque consigue el desbordamiento del hardware. Por ejemplo, la prevención de un ataque sobre el servidor web Apache se haría a través del uso del módulo mod_evasive , desde el que estableceríamos una regla por la cual, si se producen sesenta conexiones por segundo a una página, se filtraría el servicio a esa IP concreta (mediante DOSWhitelist se establecen rangos de direcciones excluídas de la regla):

<IfModule mod_evasive.c>
    DOSHashTableSize    3097
    DOSPageCount        1
    DOSSiteCount        60
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   900
    #bots de Google
    DOSWhitelist 66.249.65.*
    DOSWhitelist 66.249.66.*
</IfModule>

  • SYN Flooding (inundación de SYNs)

TCP normal El ataque SYN Flooding se aprovecha de una vulnerabilidad en la forma en que se crean las conexiones TCP. Dichas conexiones se establecen en tres pasos (TCP Three Way Handshake):

    • Desde el emisor se manda un paquete con el flag TCP SYN activado.
    • El receptor responde con otro paquete, esta vez con los flags TCP SYN y ACK activos.
    • Finalmente, el emisor envía otro paquete con el flag TCP ACK activado.

SYNFloodDurante el ataque, dicha secuencia no se llega a completar. El cliente envía el paquete SYN pero no llega nunca a responder al paquete ACK, ocasionando que la pila TCP/IP quede a la espera de respuesta durante cierta cantidad de tiempo. Creando un número adecuado de peticiones sin respuesta se llegará a un punto en que el servidor atacado ya no admita más conexiones y quede a la espera de forma indefinida, completamente inutilizado. Para la consecución del ataque se utilizan los llamados "inundadores de SYNs", desde los cuales se configuran y establecen los puertos a atacar y las direcciones desde las cuales se ataca, siendo estas últimas ficticias y aleaotorias, para evitar la detección.

Si el atacante queda a la espera de la liberación de una de ellas para mandar un paquete SYN malicioso (que puede consistir en el envío de un comando al servicio rsh) y que tiene como finalidad última el control de la máquina atacada, el ataque se convierte entonces en IP Spoofing, técnica que revisaremos en el siguiente capítulo.

La prevención de este ataque suele realizarse mediante la configuración de ciertas opciones en el núcleo de software del Sistema Operativo o bien filtrando los paquetes SYN. Veamos un ejemplo de configuración de iptables para filtrar los paquetes SYN:

-N syn-flood
-A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
-A syn-flood -j LOG --log-prefix "SYN flood: "
-A syn-flood -j DROP

  • UDP Flooding (inundación UDP)

La forma de llevar a cabo esta denegación de servicio consiste en explotar de forma eficiente la forma de trabajo que tiene el protocolo UDP. Mediante el envío de paquetes de forma masiva a dos o más máquinas (el protocolo UDP establece una relación directa entre máquinas) se consigue la saturación de la red en la que estén operando dichas máquinas y la caída de los recursos de los ordenadores atacados. Como el protocolo UDP no tienen mecanismos de protección frente a una posible congestión, pasado un periodo de tiempo, dicho protocolo se adueñará de todo el tráfico, pues tiene preferencia sobre TCP.

Lo más habitual es utilizar este tipo de ataque entre máquinas utilizando el servicio echo, de forma que se generen mensajes echo de elevado tamaño, con el fin de saturarlo todo. El atacante enviará paquetes UDP al puerto 19 (chargen) de uno de los ordenadores atacados, mientras da la dirección IP y el puerto origen  7 (echo) de otra víctima.

Al igual que con el anterior ataque, podemos prevenir el UDP Flooding escribiendo reglas en el cortafuegos que eviten el tráfico no deseado. Filtraremos por completo todo el tráfico UDP y permitiremos la entrada sólo a los servicios en ejecución. Por ejemplo, esta regla permitiría las peticiones al servidor de DNS:

-A INPUT -p udp -m udp --dport 1024:65535 --sport 53 -j ACCEPT

  • Fragmentación de paquetes

Algunas implementaciones del protocolo TCP/IP no logran reensamblar de forma adecuada los fragmentos IP y descubren una vulnerabilidad que es aprovechada para lanzar este tipo de ataque de denegación de servicio. Los dos ataques más conocidos relacionados con este tipo de vulnerabilidad son Teardrop y Land. Un ataque típico muy cubierto por los sistemas operativos actuales es conseguir la denegación de servicio mandando más datos que el tamaño máximo de un paquete IP y explotar así la administración errónea de la defragmentación de ICMP. Es el llamado "ping de la muerte".

En principio, los posibles ataques de denegación de servicio basados en la fragmentación de paquetes son combatidos mediante la aplicación de parches que cubren las vulnerabilidades en el momento de producirse.

  • Smurfing

Este ataque se aprovecha del protocolo ICMP para llevar a cabo sus fines. Desde el ordenador atacante se manda un mensaje ICMP ECHO (ping) a una dirección de broadcast que, por definición, será mandado a todos los ordenadores de la red. Durante el ataque, se toma la dirección del ordenador atacado, con lo cual se simula ser la víctima, y se inunda la red de mensajes de solicitud de respuesta ICMP ECHO REQUEST, que serán respondidos por todos los ordenadores integrantes de la red con sendos mensajes ICMP ECHO REPLY. A priori, toda la red se verá afectada por este ataque, ya que el tráfico generado es tan abultado que todo ordenador conectado a esa red en el momento del ataque sufrirá las consecuencias del mismo.

Dada la técnica utilizada para llevar a cabo el ataque (difusión de mensajes de broadcast), es fácil contrarrestar un ataque de estas características con un cortafuegos bien configurado. Por ejemplo, con iptables se definiría una regla similar a la siguiente para evitar este tipo de ataques:

-A INPUT -p icmp -j DROP


Comentario[s]

Sólo los usuarios registrados pueden escribir comentarios.
Por favor, valídate o regístrate.

Powered by AkoComment 2.0!

 
< Anterior   Siguiente >