Técnicas de evasión del sistema de detección de intrusos

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

Las técnicas de evasión de sistemas de detección de intrusiones son modificaciones que se realizan a los ataques para evitar que sean detectados por un sistema de detección de intrusiones (IDS). Casi todas las técnicas de evasión publicadas modifican los ataques de red. El artículo de 1998 Inserción, evasión y denegación de servicio: cómo eludir la detección de intrusiones en la red popularizó la evasión de IDS y analizó tanto las técnicas de evasión como las áreas en las que la interpretación correcta era ambigua según el sistema informático atacado. Los programas 'fragroute' y 'fragrouter' implementan las técnicas de evasión analizadas en el artículo. Muchos escáneres de vulnerabilidades web, como 'Nikto', 'whisker' y 'Sandcat', también incorporan técnicas de evasión de IDS.

La mayoría de los sistemas de detección de intrusos (IDS) han sido modificados para detectar o incluso revertir técnicas básicas de evasión, pero la evasión de IDS (y su lucha contra la misma) siguen siendo campos activos.

Obfuscation

Se puede evadir un IDS ofuscando o codificando la carga útil del ataque de forma que el equipo de destino lo revierta, pero el IDS no. De esta forma, un atacante puede explotar el host final sin alertar al IDS.

Codificación

Los protocolos de capa de aplicación como HTTP permiten codificaciones múltiples de datos que se interpretan como el mismo valor. Por ejemplo, la cadena "cgi-bin" en una URL se puede codificar como "%63%67%69%2d%62%69%6e" (es decir, en hexadecimal). Un servidor web los verá como la misma cadena y actuará en consecuencia. Un IDS debe conocer todas las codificaciones posibles que aceptan sus hosts finales para hacer coincidir el tráfico de red con firmas maliciosas conocidas.

Los ataques a protocolos cifrados como HTTPS no pueden ser leídos por un IDS a menos que el IDS tenga una copia de la clave privada utilizada por el servidor para cifrar la comunicación. El IDS no podrá hacer coincidir el tráfico cifrado con las firmas si no tiene esto en cuenta.

Polimorfismo

Los sistemas de identificación basados en firmas suelen buscar patrones de ataque comunes para hacer coincidir el tráfico malicioso con las firmas. Para detectar ataques de desbordamiento de búfer, un sistema de identificación puede buscar evidencia de deslizamientos de NOP que se utilizan para debilitar la protección de la aleatorización del diseño del espacio de direcciones.

Para ofuscar sus ataques, los atacantes pueden usar un shellcode polimórfico para crear patrones de ataque únicos. Esta técnica generalmente implica codificar la carga útil de alguna manera (por ejemplo, mediante la operación XOR de cada byte con 0x95) y luego colocar un decodificador frente a la carga útil antes de enviarla. Cuando el objetivo ejecuta el código, ejecuta el decodificador que reescribe la carga útil en su forma original, que luego el objetivo ejecuta.

Los ataques polimórficos no tienen una única firma detectable, lo que los hace muy difíciles de detectar para los sistemas de detección de intrusos basados en firmas e incluso para algunos sistemas de detección de intrusos basados en anomalías. Shikata ga nai ("no se puede evitar") es un codificador polimórfico popular en el marco Metasploit que se utiliza para convertir el código malicioso en un código polimórfico difícil de detectar mediante retroalimentación aditiva XOR.

Evasión

Los atacantes pueden evadir el sistema de detección de intrusos creando paquetes de tal manera que el host final interprete correctamente la carga útil del ataque mientras que el sistema de detección de intrusos interpreta el ataque incorrectamente o determina demasiado rápido que el tráfico es benigno.

Fragmentación y paquetes pequeños

Una técnica básica es dividir la carga útil del ataque en varios paquetes pequeños, de modo que el sistema de detección de intrusos deba volver a ensamblar el flujo de paquetes para detectar el ataque. Una forma sencilla de dividir los paquetes es fragmentándolos, pero un adversario también puede simplemente crear paquetes con cargas útiles pequeñas. La herramienta de evasión de "bigotes" denomina a la creación de paquetes con cargas útiles pequeñas "empalme de sesión".

Por sí solos, los paquetes pequeños no evadirán ningún sistema de detección de intrusos que reensamble los flujos de paquetes. Sin embargo, los paquetes pequeños pueden modificarse aún más para complicar el reensamblaje y la detección. Una técnica de evasión consiste en hacer una pausa entre el envío de partes del ataque, con la esperanza de que el sistema de detección de intrusos se agote antes de que lo haga el equipo de destino. Una segunda técnica de evasión consiste en enviar los paquetes desordenados.

Fragmentos superpuestos y segmentos TCP

Otra técnica de evasión es crear una serie de paquetes con números de secuencia TCP configurados para superponerse. Por ejemplo, el primer paquete incluirá 80 bytes de carga útil, pero el número de secuencia del segundo paquete será 76 bytes después del inicio del primer paquete. Cuando el equipo de destino reensambla el flujo TCP, debe decidir cómo manejar los cuatro bytes superpuestos. Algunos sistemas operativos tomarán los datos más antiguos y otros tomarán los datos más nuevos. Si el IDS no reensambla el TCP de la misma manera que el objetivo, puede ser manipulado para que omita una parte de la carga útil del ataque o vea datos benignos insertados en la carga útil maliciosa, rompiendo la firma del ataque. Esta técnica también se puede utilizar con la fragmentación de IP de manera similar.

Ambigüedades

Algunas técnicas de evasión de IDS implican manipular deliberadamente los protocolos TCP o IP de una manera que el equipo de destino manejará de forma diferente que el IDS. Por ejemplo, el puntero urgente TCP se maneja de forma diferente en diferentes sistemas operativos. Si el IDS no maneja estas violaciones de protocolo de una manera coherente con sus hosts finales, es vulnerable a técnicas de inserción y evasión similares a las mencionadas anteriormente.

Ataques de baja ancho de banda

Los ataques que se extienden a lo largo de un largo período de tiempo o que afectan a una gran cantidad de direcciones IP de origen, como el escaneo lento de nmap, pueden ser difíciles de distinguir del tráfico benigno. Un descifrador de contraseñas en línea que prueba una contraseña para cada usuario todos los días se verá casi idéntico a un usuario normal que haya escrito mal su contraseña.

Denegación del servicio

Debido a que los sistemas de detección de intrusos pasivos son inherentemente de apertura en caso de fallo (en lugar de cierre en caso de fallo), lanzar un ataque de denegación de servicio contra el sistema de detección de intrusos en una red es un método factible para eludir su protección. Un adversario puede lograr esto explotando un error en el sistema de detección de intrusos, consumiendo todos los recursos computacionales del sistema o activando deliberadamente una gran cantidad de alertas para disfrazar el ataque real.

CPU agotamiento

Los paquetes capturados por un IDS se almacenan en un búfer del núcleo hasta que la CPU esté lista para procesarlos. Si la CPU tiene una carga elevada, no puede procesar los paquetes con la suficiente rapidez y este búfer se llena. Los paquetes nuevos (y posiblemente maliciosos) se descartan porque el búfer está lleno.

Un atacante puede agotar los recursos de CPU del IDS de varias maneras. Por ejemplo, los sistemas de detección de intrusiones basados en firmas utilizan algoritmos de comparación de patrones para comparar los paquetes entrantes con las firmas de ataques conocidos. Naturalmente, algunas firmas son más costosas en términos computacionales que otras. Aprovechando este hecho, un atacante puede enviar tráfico de red especialmente diseñado para obligar al IDS a utilizar la máxima cantidad de tiempo de CPU posible para ejecutar su algoritmo de comparación de patrones en el tráfico. Este ataque de complejidad algorítmica puede sobrecargar el IDS con una cantidad relativamente pequeña de ancho de banda.

Un sistema de detección de intrusos que también supervisa el tráfico cifrado puede dedicar una gran parte de sus recursos de CPU a descifrar los datos entrantes.

Memoria de agotamiento

Para poder hacer coincidir ciertas firmas, un IDS debe mantener un estado relacionado con las conexiones que está monitoreando. Por ejemplo, un IDS debe mantener "bloques de control TCP" (TCB), fragmentos de memoria que rastrean información como números de secuencia, tamaños de ventana y estados de conexión (ESTABLECIDO, RELACIONADO, CERRADO, etc.) para cada conexión TCP monitoreada por el IDS. Una vez que se consume toda la memoria de acceso aleatorio (RAM) del IDS, se ve obligado a utilizar memoria virtual en el disco duro, que es mucho más lenta que la RAM, lo que genera problemas de rendimiento y pérdida de paquetes similares a los efectos del agotamiento de la CPU.

Si el IDS no realiza la recolección de basura de los TCB de forma correcta y eficiente, un atacante puede agotar la memoria del IDS iniciando una gran cantidad de conexiones TCP muy rápidamente. Se pueden realizar ataques similares fragmentando una gran cantidad de paquetes en una mayor cantidad de paquetes más pequeños o enviando una gran cantidad de segmentos TCP desordenados.

fatiga del operador

Para que las alertas generadas por un sistema de detección de intrusos tengan algún valor, es necesario actuar en consecuencia. Un atacante puede reducir la "disponibilidad" de un sistema de detección de intrusos abrumando al operador humano con una cantidad desmesurada de alertas mediante el envío de grandes cantidades de tráfico "malicioso" destinado a generar alertas en el sistema de detección de intrusos. El atacante puede entonces realizar el ataque real utilizando el ruido de alerta como cobertura. Las herramientas "stick" y "snot" fueron diseñadas para este propósito. Generan una gran cantidad de alertas de sistemas de detección de intrusos mediante el envío de firmas de ataque a través de la red, pero no activan alertas en sistemas de detección de intrusos que mantienen el contexto del protocolo de aplicación.

Referencias

  1. ^ a b c d e f g h Cheng, Tsung-Huan; Lin, Ying-Dar; Lai, Yuan-Cheng; Lin, Po-Ching (2012). "Evasion Techniques: Sneaking through Your Intrusion Detection/Prevention Systems". Encuestas " Tutoriales ". 14 4): 1011 –1020. CiteSeerX 10.1.1.299.5703. doi:10.1109/surv.2011.092311.00082. S2CID 1949199.
  2. ^ a b Corona, Igino; Giacinto, Giorgio; Roli, Fabio (2013). "Ataques adversarios contra sistemas de detección de intrusiones: taxonomía, soluciones y temas abiertos". Ciencias de la información. 239: 201–225. doi:10.1016/j.ins.2013.03.022.
  3. ^ a b c d e f h i j k l Ptacek, Thomas H.; Newsham, Timothy N. (1998-01-01). "Inserción, evasión y negación del servicio: Detección de intrusión en red en eluding". CiteSeerX 10.1.1.119.399. {{cite journal}}: Cite journal requires |journal= (Ayuda)
  4. ^ a b c Chaboya, D. J.; Raines, R. A.; Baldwin, R. O.; Mullins, B. E. (2006-11-01). "Detección de Intrusión de Redes: Métodos Automatizados y Manuales Prone to Attack and Evasion". Política de seguridad de IEEE. 4 (6): 36–43. doi:10.1109/MSP.2006.159. ISSN 1540-7993. S2CID 11444752.
  5. ^ "Polymorphic XOR Additive Feedback Encoder". rapid7.com.
  • Evasiones en IDS/IPS, Abhishek Singh, Virus Bulletin, abril de 2010.
  • Inserción, Evasión y Denegación de Servicio: Detección de Intrusión de Redes Eluding Thomas Ptacek, Timothy Newsham. Technical Report, Secure Networks, Inc., enero de 1998.
  • Evasión IDS con Unicode Eric Packer. última actualización 3 de enero de 2001.
  • Página de inicio Fragroute
  • Código fuente Fragrouter
  • Nikto home page outdated, see: https://cirt.net/nikto2
  • Phrack 57 phile 0x03 mencionando el puntero Urgente TCP
  • Página de inicio de Whisker
  • Página de inicio de Sandcat
  • Preprocesador de flujo de Snort para reajustar el paquete
  • Evasiones en el blog salvaje sobre evasiones encontradas en las fugas de Shadow Brokers
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save