4.5 DETECTANDO GUSANOS
Conclusión del proveedor de soluciones: La tecnología actual de detección de gusanos es un proceso retroactivo y manual. Esta sección de nuestro extracto del capítulo del libro «Seguridad de red: conózcalo todo» explica cómo es posible que un sistema extraiga automáticamente cadenas sospechosas de la red de un cliente.
Descarga el .pdf del capítulo aquí.
Sería negligente terminar este capítulo sin prestar atención al problema de la detección de gusanos. Un gusano (como Code Red, Nimda, Slammer) comienza con un exploit enviado por un atacante para apoderarse de una máquina. El exploit suele ser un ataque de desbordamiento de búfer, que se produce al enviar un paquete (o paquetes) que contienen un campo que tiene más datos de los que puede manejar el búfer asignado por el receptor para el campo. Si la implementación del receptor es descuidada, los datos adicionales más allá del tamaño de búfer asignado pueden sobrescribir los parámetros clave de la máquina, como la dirección de retorno en la pila.
Por lo tanto, con un poco de esfuerzo, un desbordamiento del búfer puede permitir que la máquina atacante ejecute código en la máquina atacada. El nuevo código luego elige varias direcciones IP aleatorias 2 y envía paquetes similares a estas nuevas víctimas. Incluso si solo una pequeña fracción de las direcciones IP responde a estos ataques, el gusano se propaga rápidamente.
La tecnología actual de detección de gusanos es a la vez retroactivo (es decir, solo después de que un nuevo gusano sea detectado y analizado por primera vez por un ser humano, un proceso que puede llevar días, se puede iniciar el proceso de contención) y manual (es decir, requiere la intervención humana para identificar la firma de un nuevo gusano). Tal tecnología está ejemplificada por Code Red y Slammer, que requirieron días de esfuerzo humano para identificar, luego de lo cual se aplicaron estrategias de contención en forma de apagado de puertos, aplicación de parches y filtrado basado en firmas en enrutadores y sistemas de detección de intrusos.
Hay dificultades con estas tecnologías actuales.
1. Respuesta lenta: Hay un proverbio que habla de cerrar la puerta del establo después de que el caballo se ha escapado. Las tecnologías actuales se ajustan a este paradigma porque cuando se inician las estrategias de contención del gusano, el gusano ya ha infectado gran parte de la red.
2. Esfuerzo constante: Cada nuevo gusano requiere una gran cantidad de trabajo humano para identificar, publicar avisos y finalmente tomar medidas para contener el gusano. Desafortunadamente, toda la evidencia parece indicar que no hay escasez de nuevos exploits. Y lo que es peor, la simple reescritura binaria y otras modificaciones de los ataques existentes pueden evitar el bloqueo simple basado en firmas (como en Snort).
Por lo tanto, existe una necesidad apremiante de una nueva estrategia de detección y contención de gusanos que sea en tiempo real (y, por lo tanto, pueda contener al gusano antes de que pueda infectar una fracción significativa de la red) y que pueda hacer frente a nuevos gusanos con un mínimo de intervención humana. (Es probable que sea inevitable alguna intervención humana para al menos catalogar los gusanos detectados, realizar análisis forenses y ajustar los mecanismos automáticos). En particular, el sistema de detección debe ser agnóstico del contenido. El sistema de detección no debe depender de la entrada externa de firmas de gusanos suministradas manualmente.
En cambio, el sistema debería automáticamente extraer firmas de gusanos, incluso para los nuevos gusanos que puedan surgir en el futuro.
¿Pueden los algoritmos de red abordar este problema? Creemos que puede. Primero, observamos que la única forma de detectar gusanos nuevos y gusanos viejos con el mismo mecanismo es abstraer las propiedades básicas de los gusanos.
Como primera aproximación, defina un gusano para que tenga las siguientes características abstractas, que de hecho son discernibles en todos los gusanos que conocemos, incluso aquellos con características tan variadas como Code Red (carga útil masiva, usa TCP y ataques al conocido HTTP port) y MS SQL Slammer (carga útil mínima, usa UDP y ataques al puerto MS SQL menos conocido).
1. Gran volumen de tráfico idéntico: Estos gusanos tienen la propiedad de que, al menos en una etapa intermedia (después de un período de cebado inicial pero antes de la infección completa), el volumen de tráfico (agregado a través de todas las fuentes y destinos) que transporta el gusano es una fracción significativa del ancho de banda de la red.
2. Aumento de los niveles de infección: El número de fuentes infectadas que participan en el ataque aumenta constantemente.
3. Sondeo aleatorio: Una fuente infectada propaga la infección al intentar comunicarse con direcciones IP aleatorias en un puerto fijo para buscar servicios vulnerables.
Tenga en cuenta que la detección de estas tres características puede ser crucial para evitar falsos positivos. Por ejemplo, una lista de correo popular o una multitud flash podrían tener la primera característica pero no la tercera.
Un enfoque algorítmico para la detección de gusanos conduciría naturalmente a la siguiente estrategia de detección, que detecta automáticamente cada una de estas características abstractas con poca memoria y pequeñas cantidades de procesamiento, funciona con flujos asimétricos y no utiliza sondeo activo. Los mecanismos de alto nivel 3 son:
1. Identifique grandes flujos en tiempo real con pequeñas cantidades de memoria: Se pueden describir mecanismos para identificar flujos con grandes volúmenes de tráfico para cualquier definición de flujo (por ejemplo, fuentes, destinos). Un simple giro en esta definición es darse cuenta de que el contenido de un paquete (o, más eficientemente, un hash del contenido) puede ser un identificador de flujo válido, que por trabajo previo puede identificar en tiempo real (y con poca memoria) un alto volumen de contenido repetido. Una idea aún más específica (que distingue a los gusanos del tráfico válido como de igual a igual) es calcular un hash basado en el contenido y en el puerto de destino (que permanece invariable para un gusano).
2. Cuente el número de fuentes: Los mecanismos se pueden describir usando mapas de bits simples de pequeño tamaño para estimar el número de fuentes en un enlace usando pequeñas cantidades de memoria y procesamiento. Estos mecanismos se pueden utilizar fácilmente para contar las fuentes correspondientes a altos volúmenes de tráfico identificados por el mecanismo anterior.
3. Determine el sondeo aleatorio contando el número de intentos de conexión a las partes no utilizadas de la dirección IP: Se podría mantener una representación simple y compacta de porciones del espacio de direcciones IP que se sabe que no se utilizan. Un ejemplo es la llamada lista Bogon, que enumera los prefijos de 8 bits no utilizados (se puede almacenar como un mapa de bits de tamaño 256). Un segundo ejemplo es un espacio secreto de direcciones IP (se puede almacenar como un prefijo único) que un ISP sabe que no se utiliza. Un tercero es un conjunto de direcciones de 32 bits no utilizadas (se puede almacenar como un filtro Bloom).
Por supuesto, los autores de gusanos podrían derrotar este esquema de detección violando cualquiera de estos supuestos. Por ejemplo, un autor de gusano podría vencer el Supuesto 1 utilizando una tasa de infección muy lenta y mutando el contenido con frecuencia. El supuesto 3 podría rechazarse utilizando direcciones que se sabe que se utilizan. Para cada uno de esos ataques existen posibles contramedidas. Más importante aún, el esquema descrito parece seguro que detectará al menos todos los gusanos existentes que conocemos, aunque difieren mucho en su semántica. En experimentos iniciales en UCSD como parte de lo que llamamos el sistema EarlyBird, también encontramos muy pocos falsos positivos en los que los mecanismos de detección se quejaron de tráfico inocuo.
Volviendo a la cita de Marcus Ranum al comienzo de este capítulo, la piratería debe ser emocionante para los piratas informáticos y atemorizante para los administradores de red, que claramente se encuentran en diferentes lados de las almenas. Sin embargo, la piratería también es un fenómeno emocionante para los profesionales de la algoritmo de red: hay mucho por hacer. En comparación con áreas más limitadas, como la contabilidad y la búsqueda de paquetes, donde las tareas básicas se han congelado durante varios años, la creatividad y la persistencia de los piratas informáticos prometen producir problemas interesantes en los años venideros.
En términos de la tecnología que se utiliza actualmente, los algoritmos de coincidencia de cadenas de conjuntos parecen útiles y pueden ser ignorados por los productos actuales. Sin embargo, se utilizan otras variedades de coincidencia de cadenas, como las coincidencias de expresiones regulares. Si bien las técnicas de emparejamiento aproximado son algo especulativas en términos de aplicaciones actuales, la historia pasada indica que pueden ser útiles en el futuro.
En segundo lugar, las soluciones de rastreo solo representan enfoques imaginativos del problema. Sus requisitos de cambios drásticos en el reenvío de enrutadores hacen que sea poco probable que se utilicen para la implementación actual en comparación con las técnicas que funcionan en el plano de control. A pesar de esta evaluación pesimista, las técnicas subyacentes parecen mucho más útiles en general.
Por ejemplo, el muestreo con una probabilidad inversamente proporcional a un límite superior aproximado en la distancia es útil para recopilar información de manera eficiente de cada uno de varios participantes sin una coordinación explícita. De manera similar, los filtros Bloom son útiles para reducir el tamaño de las tablas hash a 5 bits por entrada, a costa de una pequeña probabilidad de falsos positivos. Dada su belleza y potencial para la implementación de alta velocidad, estas técnicas sin duda deberían ser parte de la bolsa de trucos del diseñador.
Finalmente, describimos nuestro enfoque para la detección de gusanos independiente del contenido utilizando técnicas algorítmicas. La solución combina los mecanismos existentes descritos anteriormente en este libro. Si bien los resultados experimentales de nuestro nuevo método aún son preliminares, esperamos que este ejemplo le dé al lector una idea de las posibles aplicaciones de la algorítmica en el aterrador y emocionante campo de la seguridad de redes. La Figura 4.1 presenta un resumen de las técnicas utilizadas en este capítulo, junto con los principales principios involucrados.
Algoritmos de seguridad de red
Introducción
4.1 Búsqueda de múltiples cadenas en cargas útiles de paquetes
4.2 Coincidencia aproximada de cuerdas
4.3 Rastreo de IP mediante marcado probabilístico
4.4 Rastreo de IP a través del registro
4.5 Detección de gusanos
Acerca del libro
Los capítulos contienen conocimientos recopilados de reconocidos expertos de la industria sobre temas como la teoría y la práctica de la tecnología de seguridad de redes, técnicas de análisis y resolución de problemas y conceptos básicos de seguridad.
Impreso con permiso de Morgan Kaufmann, una división de Elsevier. Copyright 2008. Seguridad de la red: conócelo todo por James Joshi. Para obtener más información sobre este título y otros libros similares, visite www.elsevierdirect.com.