Ataques contra redes TCP-IP
Seguridad en redes TCP/IP
Durante la década de los 60, dentro del marco de la guerra fría, la Agencia de Proyectos de Investigación Avanzada del Departamento de Defensa de los Estados Unidos (DARPA) se planteó la posibilidad de que un ataque afectara a su red de comunicaciones y financió equipos de investigación en distintas universidades con el objetivo de desarrollar una red de ordenadores con una administración totalmente distribuida.
Como resultado de la aplicación de sus estudios en redes de conmutación de paquetes, se creó la denominada red ARPANET, de carácter experimental y altamente tolerable a fallos. Más adelante, a mediados de los 70, la agencia empezó a investigar en la interconexión de distintas redes, y en 1974 estableció las bases de desarrollo de la familia de protocolos que se utilizan en las redes que conocemos hoy en día como redes TCP/TP.
Actividades previas a la realización de un ataque
Utilización de herramientas de administración
La fase de recogida de información podría empezar con la utilización de todas aquellas aplicaciones de administración que permitan la obtención de información de un sistema como, por ejemplo, ping, traceroute, whois, finger, rusers, nslookup, rcpinfo, telnet, dig, etc.
Búsqueda de huellas identificativas
La utilización de estas técnicas se conoce con el nombre de fingerprinting, es decir, obtención de la huella identificativa de un sistema o equipo conectado a la red.
Exploración de puertos
La exploración de puertos puede permitir el reconocimiento de los servicios ofre-cidos por cada uno de los equipos encontrados en la red escogida. Con esta infor-mación, el atacante podría realizar posteriormente una búsqueda de exploits que le permitiera un ataque de intrusión en el sistema analizado
Previamente a la planificación de un posible ataque contra uno o más equipos de una red TCP/IP, es necesario conocer el objetivo que hay que atacar. Para realizar esta primera fase, es decir, para obtener toda la información posible de la víctima, será necesario utilizar una serie de técnicas de obtención y recolección de información.
Escuchas de red
Desactivación de filtro MAC
Para evitar que cualquier máquina se pueda apropiar de información fraudulenta, las tarjetas Ethernet incorporan un filtro que ignora todo el tráfico que no les pertenece, descartando aquellos paquetes con una dirección MAC que no coincide con la suya. La desactivación de este filtro se conoce con el nombre de modo promiscuo.
Suplantación de ARP
El objetivo de un ataque de suplantación de ARP es poder capturar tráfico ajeno sin necesidad de poner en modo promiscuo la interfaz de red. Envenenando la tabla de ARP de los equipos involucrados en la comunicación que se quiere capturar se puede conseguir que el conmutador les haga llegar los paquetes. Si el engaño es posible, cuando las dos máquinas empiecen la comunicación enviarán sus paquetes hacia la máquina donde está el sniffer. Éste, para no descubrir el engaño, se encargará de encaminar el tráfico que ha interceptado.
Herramientas disponibles para realizar sniffing
Una de las aplicaciones más conocidas, en especial en sistemas Unix, es Tcpdump. Este programa, una vez ejecutado, captura todos los paquetes que llegan a nuestra máquina y muestra por consola toda la información relativa a los mismos. Se trata de una herramienta que se ejecuta desde la línea de comandos y que cuenta con una gran cantidad de opciones para mostrar la información capturada de formas muy diversas. Tcpdump es una herrami¬enta muy potente y es la base para muchos otros sniffers que han aparecido posteriormente.
Otra herramienta muy conocida es Ettercap. Esta aplicación, que también funciona desde consola, ofrece un modo de ejecución interactivo en el que se muestran las conexiones accesibles desde la máquina donde se encuentra instalado y que permite seleccionar cual¬quiera de ellas para la captura de paquetes. Ettercap es una aplicación muy potente que permite utilizar la mayor parte de las técnicas existentes para realizar tanto sniffing como eavesdropping y snooping.
Un sniffer no es más que un sencillo programa que intercepta toda la información que pase por la interfaz de red a la que esté asociado. Una vez capturada, se podrá almacenar para su análisis posterior.
Fragmentación IP
Fragmentación en redes Ethernet
Los fragmentos pueden incluso fragmentarse más si pasan por una red con una MTU más pequeña que su tamaño.
Para que el equipo de destino pueda reconstruir los fragmentos, éstos deben contener la siguiente información:
• Cada fragmento tiene que estar asociado a otro utilizando un identificador de fragmento común. Éste se donará desde un campo de la cabecera IP, conocido como identificador IP (también llamado ID de fragmento).
• Información sobre su posición en el paquete inicial (paquete no fragmentado).
• Información sobre la longitud de los datos transportados al fragmento.
• Cada fragmento tiene que saber si existen más fragmentos a continuación. Esto se indica en la cabecera, dejando o no activado el indicador de más fragmentos (more fragments, MF) del datagrama IP.
Fragmentación para enmascaramiento de datagramas IP
Para solucionar el uso de la fragmentación fraudulenta y garantizar una correcta inspección de paquetes, es necesaria la implementación del proceso de fragmenta¬ción y el reensamblado de datagramas en dispositivos de prevención y detección. Esta solución puede suponer un coste adicional, ya que significa tener que exami¬nar y almacenar cada fragmento. Aunque puede resultar muy costoso en cuanto a recursos (tiempo, proceso y memoria), será la única forma de asegurar que la inspección del paquete se ha realizado de forma correcta.
La fragmentación divide los datagramas IP en fragmentos de menor longitud y se realiza en el nivel inferior de la arquitectura para que sea posible recomponer los datagramas IP de forma transparente en el resto de niveles. El reensamblado realiza la operación contraria.
El proceso de fragmentación y reensamblado se irá repitiendo a medida que los datagramas vayan viajando por diferentes redes.
Ataques de denegación de servicio
IP Flooding
El ataque de IP Flooding se basa en una inundación masiva de la red mediante datagramas IP.
Smruf
Este tipo de ataque de denegación de servicio es una variante del ataque anterior (IP Flo¬oding), pero realizando una suplantación de las direcciones de origen y destino de una petición ICMP del tipo echo-request.
TCPL/SYN Flooding
El ataque de TCP/SYN Flooding se aprovecha del número de conexiones que están esperando para establecer un servicio en particular para conseguir la denegación del servicio.
Teardrop
El ataque Teardrop intentará realizar una utilización fraudulenta de la fragmenta¬ción IP para poder confundir al sistema operativo en la reconstrucción del datagra¬ma original y colapsar así el sistema
Snork
El ataque Snork se basa en una utilización malintencionada de dos servicios típicos en sistemas Unix: el servicio CHARGEN (CHARacter GENerator, generador de caracteres) y el servicio ECHO, consiste en el cruce de los servicios ECHO y CHARGEN, me¬diante el envío de una petición falsa al servicio CHARGEN, habiendo colocado previamente como dirección de origen la dirección 1:1) de la máquina que hay que atacar (con el puerto del servicio ECHO como puerto de respuesta). De esta forma, se inicia un juego de ping-pong infinito.
Ping of death
El ataque de denegación de servicio "ping de la muerte"(ping of death) es uno de los ataques más conocidos y que más artículos de prensa ha generado. Al igual que otros ataques de denegación existentes, utiliza una definición de longitud máxima de datagrama IP fraudulenta
Ataques distribuidos
Así pues, podemos definir los ataques de denegación de servicio distribuidos como un ataque de denegación de servicio en el que existen múltiples equipos sincronizados de forma distribuida que se unen para atacar un mismo objetivo.
Definimos denegación de servicio como la imposibilidad de acceder a un recurso o servicio por parte de un usuario legítimo. Es decir, la apropiación exclusiva de un recurso o servicio con la intención de evitar cualquier acceso a terceras partes
Deficiencias de programación
Desbordamiento de buffer
Un ataque de desbordamiento de buffer se basa en la posibilidad de escribir información más allá de los limites de una tupla almacenada en la pila de ejecución. A partir de esta tupla, asociada a una llamada a función dentro del programa, se puede conseguir corromper el flujo de la ejecución modificando el valor de regreso de la llamada a la función. Si este cambio en el flujo de ejecución es posible, se podrá llevar la ejecución a una dirección de memoria arbitraria (introducida en los datos de la pila a partir del mismo ataque) y ejecutar un código malicioso.
Cadenas de formato
Los ataques que explotan deficiencias de programación mediante cadenas de for-mato se producen en el momento de imprimir o copiar una cadena de caracteres desde un buffer sin las comprobaciones necesarias.
La mayor parte de estas deficiencias de programación pueden suponer un agujero en la seguridad de la red debido a situaciones no previstas como, por ejemplo:
• Entradas no controladas por el autor de la aplicación, que pueden provocar acciones malintencionadas y ejecución de código malicioso.
• Uso de caracteres especiales que permiten un acceso no autorizado al servidor del servicio.
• Entradas inesperadamente largas que provocan desbordamientos dentro de la pila de
ejecución y que pueden implicar una alteración en el código que hay que ejecutar.