Anomaly-Based Network Intrusion Detection System L. J. G. Villalba, Senior Member, IEEE, A. L. S. Orozco and J. M. Vidal Abstract— This paper presents a system for detecting intrusions when analyzing the network traffic payload looking for malware evidences. The system implements the detection algorithm as a Snort preprocessor component. Since they work together, a highly effective system against known attacks has been achieved (based on Snort rules) and a highly effective system against unknown threats (which was the main aim of the designed system). As the majority of such systems, the proposal consists of two phases: a training phase and a detection phase. During the training phase a statistical model of the legitimate network usage is created through Bloom Filters and N-grams techniques. Subsequently, the results obtained by analyzing a dataset of attacks are compared with such model. This will allow a set of rules to be developed which will be able to determine whether the packets payloads contain malware. In the detection phase, the traffic to analyze is compared with the model created in the training phase and the results obtained when applying rules. The performed experiments showed really satisfactory results, with 100% malware detection and just 0.15% false positives. Keywords— Anomaly, Bloom Filter, IDS, Intrusion Detection System, Malware, N-Gram, NIDS, Payload, Preprocessor, Network Intrusion Detection System, Snort. A I. INTRODUCCIÓN CTUALMENTE, cualquier experto en seguridad podría afirmar que uno de los principales problemas de la seguridad de las redes es la proliferación de malware, especialmente malware nuevo así como específico para alguna red determinada. Podríamos nombrar algunas causas de este hecho: incremento del tamaño de las redes, aumento del valor de la información contenida en dichas redes, mejora tanto de las prestaciones de las conexiones a Internet como de la capacidad de procesamiento de las computadoras conectadas a las mismas, etc. Sea cual sea la causa hay un dato indiscutible: cada día es mayor el número de malware nuevo que surge. Ante esta problemática han surgido diversos sistemas basados en reglas para detectar el envío de malware (así como para detectar otros tipos de ataques). Sin embargo, estos sistemas tienen el inconveniente de ir un paso por detrás de los desarrolladores de malware. Diariamente salen a la luz nuevos especímenes que no comparten características con el malware ya conocido por lo que no existen reglas que sean capaz de identificarlo, lo que lo convierte en indetectable hasta que es demasiado tarde, puesto que lógicamente es necesario detectar previamente un determinado malware para poder determinar algunas características del mismo a partir de las que se pudiese obtener alguna regla que lo identificase. Por esta razón han surgido también diversos proyectos que se han propuesto L. J. G. Villalba, Universidad Complutense de Madrid (UCM), Madrid, España, [email protected] A. L. S. Orozco, Universidad Complutense de Madrid (UCM), Madrid, España, [email protected] J. M. Vidal, Universidad Complutense de Madrid (UCM), Madrid, España, [email protected] evitar este inconveniente de manera que la detección del malware no dependa de un análisis detallado del mismo, sino que, por ejemplo, se base en la comparación con algún modelo construido o por el paso de unos determinados filtros para poder reconocerlos, de manera que se pueda detectar malware nuevo desde el primer momento de su propagación. Visto el interés en este campo se decidió realizar un sistema de detección de intrusiones en red (Network Intrusion Detection System ó NIDS). Dados los buenos resultados obtenidos se decidió continuar mejorando el sistema con un conjunto de ideas que por cuestiones de plazos no pudieron ser implementadas para dicha versión inicial. Aunque ésta consistía en un trabajo conjunto entre Snort [1] y el algoritmo diseñado, para esta última versión se decidió construir el sistema integrándolo dentro de Snort, de manera que fuese un preprocesador dinámico del mismo. A pesar de que dicho proceso fue inicialmente costoso debido principalmente a la escasez de documentación relativa puede afirmarse que los beneficios obtenidos han compensado dicho esfuerzo: con este tipo de diseño se puede aprovechar el proceso de reensamblado de paquetes (lo cual incrementa las prestaciones del sistema desarrollado), así como la detección por firmas que realiza Snort. Además, al poder integrarse dentro de Snort (uno de los NIDS con mayor difusión), la instalación y uso del preprocesador desarrollado es mucho más amigable para aquellos usuarios que ya han trabajado con Snort y a su vez su difusión puede ser mayor. Si bien actualmente hay desarrollada una primera versión inicial con resultados satisfactorios, se está trabajando en un conjunto de mejoras que han surgido de la experiencia hasta la fecha. Este artículo se estructura en cinco secciones, siendo la primera la presente introducción. La sección segunda presenta el estado del arte de los NIDS basados en el análisis de la carga útil. La sección tercera especifica el sistema de detección de intrusos diseñado. La sección cuarta contiene los resultados de la experimentación realizada. Finalmente, la sección quinta resume las principales conclusiones extraídas de este trabajo e indica líneas futuras de investigación. II. TRABAJOS RELACIONADOS Los NIDS basados en el análisis de la carga útil detectan el código malicioso analizando la carga útil de los paquetes que circulan por la red. Constan típicamente de una fase de entrenamiento y otra de detección. La fase de entrenamiento se realiza con tráfico limpio que represente estadísticamente al tráfico usual del sistema, creándose un patrón de dicho tráfico. Por otro lado, durante la fase de detección, el tráfico a analizar se modela y se compara con este patrón para determinar si puede ser clasificado como peligroso. A continuación, se explican varias propuestas que realizan el análisis de la carga útil para la detección de código malicioso. En general, todas son variantes de PAYL [2], una de las primeras propuestas que usó esta técnica con éxito. El sistema PAYL clasifica el tráfico basándose en 3 características: el puerto, el tamaño del paquete y la dirección del flujo (entrada o salida). Mediante estos 3 parámetros clasifica la carga útil creando una serie de patrones para definir lo que sería un comportamiento normal dentro de cada clase. PAYL utiliza 1gram para el análisis de estos patrones debido a la enorme cantidad de patrones que se crearán durante el entrenamiento del sistema. La razón de usar un tamaño de n-gram tan bajo es para evitar un tamaño de memoria demasiado grande. Aun así, los resultados con 1-gram son significativos. Poseidon [3] se desarrolló para corregir los errores que surgen en la construcción de modelos en PAYL cuando se aplica clustering sobre el tamaño de los paquetes. El funcionamiento del sistema es similar al de PAYL, si bien añade algunas mejoras, especialmente el uso de mapas auto organizativos (SOM) para clasificar el tráfico. Así, los paquetes son procesados por medio del SOM que da como salida las diferentes clases en que deben clasificarse los paquetes. En este modelo, en lugar de clasificar los paquetes atendiendo al puerto, dirección y tamaño de los mismos, se clasifican teniendo en cuenta el puerto, la dirección y las clases devueltas por SOM. Con esto se consigue reducir considerablemente el número de clases mejorándose los resultados obtenidos por PAYL. La combinación de múltiples clasificadores de una clase [4] [5] es una técnica, también basada en PAYL, desarrollada para eliminar la vulnerabilidad del sistema original ante los ataques mimicry [6] [7]. El sistema tiene varios detectores de una sola clase o detectores Support Vector Machine (SVM). La precisión del sistema aumenta a medida que aumente el número de detectores. Los detectores de una clase sólo distinguen dos posibilidades: pertenencia o no a la clase. El entrenamiento de cada detector sólo se hace con muestras de la clase que va a detectar. De ahí la necesidad de tener varios detectores para abarcar diferentes clases. PCNAD [8] surge para corregir el defecto de PAYL de no poder procesar los paquetes grandes en las redes rápidas con la suficiente velocidad. La característica principal de este sistema es que no analiza toda la carga útil de los paquetes, dividiéndolos y reduciéndolos para realizar los patrones y las comparaciones. De esta forma se consigue procesar todo el tráfico en redes rápidas. Para la creación de los patrones y la posterior comparación del tráfico se usa el mismo sistema que en PAYL, es decir, se usa 1-gram y se guarda la frecuencia de aparición de los distintos bytes de cada clase. Se realiza un patrón para cada servicio que tiene el terminal, por lo cual se debe entrenar el sistema en cada máquina en que se ejecute. Para dividir la carga útil se usa el algoritmo de particionado CPP: el tráfico se va procesando con una ventana de 1-gram. Para cada 1-gram se ejecuta el rabin fingerprint, es decir, se obtiene un número entero que lo representa. A continuación, se mira si este número cumple una condición asignada previamente. Por ejemplo, que el módulo 1000 del número esté entre 100 y 200. Los 1-gram cuyos fingerprints cumplan dicha condición serán los que delimiten las particiones de la carga útil que se analizarán. A la hora de construir los perfiles de cada servicio se define un parámetro n que determina el número de particiones de la carga útil que se analizarán (se procesarán las n primeras particiones de cada paquete). Con un valor adecuado de n, el perfil obtenido mediante el análisis de las particiones es muy similar al obtenido si se hubiera utilizado toda la carga útil. Durante la fase detección los paquetes también son divididos mediante el algoritmo CPP y se usan sus n primeras particiones para realizar las comparaciones con los perfiles, teniendo n el mismo valor que en la fase de entrenamiento. Para realizar las comparaciones de los perfiles se usa, al igual que en PAYL, la distancia reducida de Mahalanobis. Anagram [9] es otra evolución de PAYL desarrollada para corregir las deficiencias que tenía el sistema original. Al igual que en PAYL, el sistema se basa en n-grams para procesar los paquetes y crear los patrones de comportamiento. Sin embargo, usa Bloom Filters para poder dividir los paquetes en n-grams de tamaños mayores que 1 sin que el coste en espacio y rendimiento del sistema se vea perjudicado. El Bloom Filter es una estructura para almacenar de forma binaria la aparición o no de un determinado n-gram pero no el número de veces que aparece, es decir, en este caso no se almacena la frecuencia de distribución de cada byte sino su aparición dentro de los paquetes. Durante la fase de entrenamiento se rellenan dos Bloom Filters: uno con el tráfico normal y legítimo de la red, y otro con los n-grams que aparecen en virus conocidos. El proceso para rellenar esta última estructura debe ser supervisado debido a la utilización de ataques. Es por esto que se dice que el entrenamiento del sistema es semisupervisado. Durante la fase de detección se obtienen los ngrams de cada paquete y se comprueba si aparecen en alguno de los dos Bloom Filters. A continuación, se asigna una puntuación a este paquete teniendo en cuenta los n-grams que no aparecen en el patrón del tráfico legítimo y los que aparecen en el patrón del código malicioso. Si esta puntuación supera un determinado umbral, el paquete se considera un ataque. El uso de n-grams más grandes permite una mayor precisión ya que se tienen en cuenta las dependencias entre bytes. Por otro lado, al no tener en cuenta la frecuencia de aparición de los n-grams pueden detectarse ataques ocultos entre tráfico legítimo. Aunque mejora los resultados de PAYL requiere de un entrenamiento muy controlado, puesto que no tolera ruido durante dicho entrenamiento. La búsqueda del gen de auto replicación [10] [11] considera que una de las características que define a la mayoría de programas maliciosos es que intentan auto replicarse para expandirse por la red. Los métodos para que un programa pueda reproducirse son conocidos y relativamente pocos (alrededor de 50). Esta técnica analiza el código de los programas buscando estos métodos (gen de auto replicación) para detectar código malicioso. La principal dificultad es que las instrucciones de auto replicación pueden estar ocultas entre el resto de instrucciones o, aún peor, estar cifradas. Por tal motivo la búsqueda del gen de auto replicación puede entenderse como la búsqueda de una serie de palabras dentro de un array de letras teniendo en cuenta los siguientes puntos: • Todas las palabras se posicionan a lo largo de un string y deben leerse de izquierda a derecha, en orden de ejecución. • Las palabras pueden estar fragmentadas. Por ejemplo, si se busca la palabra REPLICACION, ésta puede estar dividida en dos partes: RE y PLICACION. Esto implica que una vez encontrada la primera letra (R) hay que ser capaz de ver si con el resto de letras se puede completar la palabra. Para ello existen diversas técnicas de descifrado. • El código malicioso puede llegar parcialmente codificado y decodificarse en un orden determinado. Por ello, durante el proceso de decodificación se tienen que hacer diversas interrupciones para analizar la composición de la imagen del ejecutable. Random Forest [12] es una técnica híbrida que combina detección por patrones con detección por anomalías. Aunque también detecta código malicioso está pensado para detectar cualquier ataque o intrusión que pueda sufrir una red. Este sistema se caracteriza por la utilización de random forest para la clasificación del tráfico durante las fases de entrenamiento y detección. El algoritmo de clasificación del tráfico se basa en la creación de múltiples árboles de decisión. Estos árboles tienen características discriminantes en cada uno de sus nodos de forma que una muestra recorrerá el árbol desde la raíz hasta alguna de las hojas. En cada nodo intermedio la muestra se evalúa y elige el camino que mejor se ajuste a sus características. Las hojas del árbol son las diferentes clases en las que se dividirá el tráfico, es decir, que cuando una muestra llega a una hoja, ésta define la clase a la que pertenece. La ventaja de usar árboles de decisión para la clasificación es la rapidez en que se procesa el tráfico. Sin embargo, para mantener esta rapidez y no saturar el sistema, los árboles no deben ser muy grandes ni complejos. En caso contrario, se obtendría poca precisión a la hora de clasificar. Para solucionar este problema se usa el algoritmo de random forest que consiste en crear varios árboles de decisión distintos pero similares en cuanto a las características usadas en sus nodos. Para clasificar, una muestra se introduce en cada uno de estos árboles y una vez obtenido los resultados se calcula la moda, es decir, se calcula la hoja más repetida que ha alcanzado la muestra en los árboles. Esta hoja será la clase a la que pertenezca la muestra. El algoritmo se caracteriza por dos parámetros fundamentales: el número de árboles que compondrán el bosque y las características que se usarán en los nodos para discriminar las muestras. Además, para aumentar el rendimiento y la precisión del sistema se usan otras técnicas como: • El mecanismo outlier, que se encarga de medir el grado de pertenencia de una muestra a una clase determinada. Se basa en el cálculo de un tipo de distancia entre la muestra y todas las clases. Se usa en el módulo de detección de anomalías. • El algoritmo de selección de características se encarga de determinar cuáles serán las características que usen los árboles para clasificar los paquetes. Para ello analiza todas las características disponibles, las evalúa otorgándoles una puntuación y elige las más apropiadas, es decir las de mejor puntuación. Normalmente se define un umbral para determinar si una característica es buena. • Las técnicas de sampling se encargan de equilibrar las muestras de ataques usadas en el aprendizaje para obtener mayor precisión en la detección posterior. Se intenta que la frecuencia de aparición sea parecida para entrenar al sistema contra los ataques poco comunes que suelen ser los más peligrosos. Los sistemas inmunológicos artificiales [13] [14] [15] imitan el sistema biológico inmunitario (SBI), es decir, tratan una intrusión en un sistema informático de la misma forma que los seres vivos tratan sus infecciones. El SBI es capaz de detectar organismos extraños y eliminarlos sintetizando unas proteínas llamadas anticuerpos que tienen, a su vez, varios tipos de detectores. Cuando un anticuerpo detecta un intruso se multiplica para ser más efectivo hasta que la amenaza es eliminada. Después de esto la mayoría de los anticuerpos mueren, aunque algunos permanecen creando una memoria inmunitaria para poder reaccionar rápidamente en caso de contraer de nuevo la infección. Las técnicas que se engloban dentro de este tipo de sistemas intentan imitar este comportamiento para detectar el código malicioso. Rate Limiting [16] detectan comportamiento anómalo en las conexiones basándose en la premisa de que un host infectado tratará de conectarse a muchas máquinas diferentes en un período corto de tiempo. Estas propuestas detectan PortScans colocando a aquellas conexiones que exceden cierto umbral en una cola. El Método de Máxima Entropía [17] estima la distribución del tráfico benigno usando una estimación de máxima entropía. En el período de entrenamiento se agrupan los paquetes en clases distintas y se determina una distribución para cada clase. Luego se observa la distribución de los paquetes en tiempo real y se compara con la distribución base. Se dispara una alarma cuando una clase supera un umbral de diferencia. PHAD [18] utiliza algunos campos del encabezado tales como direcciones IP, puertos, protocolos y banderas TCP. Durante la etapa de entrenamiento se le asigna una puntuación a cada valor de cada uno de los campos del encabezado y luego se suman para obtener una puntuación total de anomalía para cada paquete. Los primeros n paquetes con mayor puntuación son considerados peligrosos. NIDES [19] es un detector estadístico que compara los perfiles de tráfico recolectados durante un gran período de tiempo con los recolectados en un corto período sobre datos en tiempo real, disparando una alarma si hay una desviación importante. Otros trabajos relevantes son: [20] [21] [22] [23] [24] [25] [26]. III. APAP APAP (Advanced Payload Analyser Preprocessor) [27] es un sistema de detección de intrusiones que opera sobre redes en busca de anomalías estadísticas en la carga útil de los paquetes con respecto al tráfico habitual de la red, considerando dichas anomalías una amenaza potencial para el sistema al que brinda protección. Su objetivo es identificar los paquetes con contenido malintencionado antes de que se produzca su llegada al sistema víctima. APAP consta de dos fases: una fase de entrenamiento y una fase de detección. Durante la fase de entrenamiento se construye la representación del tráfico habitual y legítimo de la red, así como la representación del tráfico malicioso. En la fase de detección se aplican las características de los paquetes monitorizados a la base de reglas y se obtiene su etiquetado. Al igual que Anagram, APAP incorpora en su diseño el uso de la técnica n-gram y el de las estructuras Bloom Filter. La técnica n-gram, frecuentemente utilizada en el procesamiento del lenguaje natural, tiene por objetivo predecir, dentro de una sucesión de elementos, el siguiente elemento conociendo los anteriores y las distintas frecuencias de aparición. Una de sus múltiples variantes consiste en utilizar esta técnica para resumir una cierta cantidad de datos, que de otra manera sería imposible almacenar o analizar, debido a limitaciones de almacenamiento en memoria o de tiempo de cómputo. El sistema actúa como una ventana de tamaño n por la que pasan los bytes de la carga útil del paquete de forma secuencial. Cada secuencia de n bytes consecutivos que tenga el paquete, se procesa como si fuese una entidad propia. El resultado de procesar el paquete completo viene determinado por la unión de los resultados obtenidos al analizar cada uno de los valores en los que ngram haya podido descomponer su carga útil. Esta técnica permite resumir el contenido de los paquetes y buscar dependencias y similitudes entre ellos. La principal ventaja de su uso es el bajo consumo de recursos y su facilidad de implementación. Sin embargo, la generación de muchas ventanas n-gram y el uso de valores n muy altos requiere de alguna técnica auxiliar que permita resumir la información en memoria y agilice su direccionamiento. Los Bloom Filter son estructuras de datos probabilísticas utilizadas para determinar si un dato pertenece a un conjunto de datos o no. Anagram adoptó por primera vez el uso de este tipo de estructuras como una mejora frente a PAYL para permitir trabajar con ventanas n-gram de tamaños mayores. La Figura 1 muestra en detalle las distintas etapas de APAP. Filter que modela el tráfico legítimo es lo suficientemente representativo. El principal indicio del final del entrenamiento es que cualquier traza adicional con que se pretenda sobreentrenar el sistema produzca cambios no significativos. Para ello se trabaja con la media de los porcentajes de error entre los valores del Bloom Filter en el momento actual del entrenamiento y los valores que se generan tras aplicar un nuevo paso de entrenamiento. En la Figura 2 se muestra la evolución del porcentaje de error en uno de los experimentos de APAP realizados con los datasets de tráfico publicados por la agencia norteamericana DARPA en el año 1999. En la gráfica el eje Y representa el porcentaje de error medio y el eje X el número de pasos del entrenamiento base llevados a cabo. Se ve claramente cómo el porcentaje de error medio tiende a disminuir, y cómo al llegar a un determinado valor, en este caso el 2%, se produce un estado de saturación. Esa característica es el indicio del final del entrenamiento base, ya que la realización de nuevos pasos de entrenamiento no aporta nueva información relevante al Bloom Filter que representa el tráfico legítimo. pct error medio 45 40 35 30 25 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Figura 2. Porcentaje de error medio en el entrenamiento base. Figura 1. Esquema de las fases del sistema APAP. La Fase de Entrenamiento es una de las partes más importantes de APAP. En ella se definen las estructuras de datos que van a permitir la diferenciación del tráfico legítimo de las anomalías y se procede a su relleno. A partir de ellas se crean las reglas con las que el detector identifica las amenazas. La fase de entrenamiento consta, a su vez, de diferentes etapas. Inicialización: En esta fase se inicializan las estructuras que son empleadas para representar el tráfico limpio y el tráfico malicioso. Entrenamiento Base: En el entrenamiento base se construye el modelo de tráfico legítimo. Para su elaboración es necesaria una colección de trazas representativas de tráfico limpio, es decir, trazas que correspondan al modo de uso habitual y legítimo de la red a proteger. A partir de ellas se procede al relleno de las estructuras que las van a representar. El entrenamiento base concluye cuando el contenido del Bloom Entrenamiento de Referencias: Una vez que el entrenamiento base ha terminado de rellenar el Bloom Filter que representa el modo de uso legítimo de la red, se procede a llevar a cabo el entrenamiento de referencias. El conjunto de valores K es definido en APAP como un conjunto de valores que permiten representar de una manera simplificada el contenido del Bloom Filter. La motivación a la hora de elegir esta representación es la siguiente: trabajar directamente con Bloom Filters rellenos de tráfico legítimo y con el contenido de los ataques requiere un enorme coste computacional, tanto en rendimiento como en consumo de memoria. Aunque esa opción puede ser la más precisa a nivel de resultados, no es en absoluto deseable para un sistema que pretende tomar decisiones en tiempo real. Entrenamiento Determinar-K: Una vez establecidos los valores K de referencia del Bloom Filter del tráfico legítimo, se generan las reglas que permiten identificar las anomalías. Para generar dichas reglas se emplea un conjunto de trazas de entrenamiento correspondiente a tráfico malicioso. El primer paso a realizar es la generación de las propias K de los ataques. En función de las características del modelado del tráfico legítimo y del malicioso se establecen las reglas de detección. La Fase de Detección analiza el tráfico entrante paquete a paquete. Para cada uno de ellos procesa su carga útil mediante el desplazamiento de una ventana n-gram. A partir de los valores obtenidos, genera una estructura Bloom Filter que almacena sus frecuencias de aparición y establece sus propios valores K. Una vez definidas los valores K, se aplican las reglas de detección generadas en la fase de entrenamiento. Si el valor de la frecuencia acumulada por alguna de ellas es superado por el valor de su K correspondiente del entrenamiento, el sistema considera la carga útil del paquete cómo anómala, emitiendo una alerta. IV. EXPERIMENTACIÓN REALIZADA Para poder evaluar APAP se han utilizado las trazas de tráfico capturadas por la agencia norteamericana DARPA en el año 1999 y publicadas por el MIT Lincoln Laboratory [28]. En la actualidad esta colección representa un estándar funcional para la evaluación de NIDS permitiendo contrastar los resultados con los de otras propuestas de detección. Para la comparación de APAP con otras propuestas similares se ha tomado como referencia los resultados obtenidos por estrategias similares: PAYL [2], Poseidon [3], Anagram [9] y McPAD [5]. El entrenamiento base con las trazas de tráfico de DARPA del año 1999 concluye con un error aproximado del 2%. La Figura 3 muestra que la tasa de verdaderos positivos de APAP es del 100% y una tasa de falsos positivos del 0,15%. Esta penalización es compensada por una mayor reducción del consumo de tiempo de ejecución y memoria y por la incorporación de un sistema que facilita su escalabilidad. diversas propuestas de mejora del sistema propuesto, continuación de lo expuesto en [29] [30] [31]. Asimismo, se está trabajando en su fortalecimiento frente a diferentes técnicas de evasión [32]. AGRADECIMIENTOS Los autores agradecen el apoyo brindado por el "Programa de Financiación de Grupos de Investigación UCM validados de la Universidad Complutense de Madrid – Banco Santander". REFERENCIAS [1] Snort 2.1 Intrusion Detection (Second Edition), pp. 99-164, 2004. [2] K. Wang, S. J. Stolfo. Anomalous Payload-based Network Intrusion Detection. Proceedings of the Seventh International Symposium on Recent Advances in Intrusion Detection (RAID), Sophia Antipolis, France. Lecture Notes in Computer Science, Springer, Vol. 3224, pp. 203-222, September 2004. [3] D. Bolzoni, S. Etalle, P. Hartel, E. Zambon. POSEIDON: a 2-tier Anomaly-Based Network Intrusion Detection System. Proceedings of the Fourth IEEE International Workshop on Information Assurance (IWIA), London, United Kingdom, pp. 144-156, April 2006. [4] R. Perdisci, G. Gu, W. Lee. Using an Ensemble of One-Class SVM Classifiers to Harden Payload-based Anomaly Detection Systems. Proceedings of the Sixth IEEE International Conference on Data Mining (ICDM), Hong Kong, pp. 488-498, December 2006. [5] R. Perdisci, D. Ariu, P. Fogla, G. Giacinto, W. Lee. McPAD: A Multiple Classifier System for Accurate Payload-Based Anomaly Detection, Computer Networks, Vol. 53 (6), pp. 864-881, April 2009. [6] D. Wagner, P. Soto. Mimicry Attacks on Host-Based Intrusion Detection Systems. Proceedings of the Ninth ACM Conference on Computer and Communications Security (CCS), Washington, DC, USA, pp. 255-264, November 2002. [7] C. Parampalli, R. Sekar, R. Johnson. A Practical Mimicry Attack Against Powerful System-Call Monitor. Proceedings of the ACM Symposium on Information, Computer and Communications Security (ASIACCS), Tokyo, Japan, pp. 255–264, March 2008. [8] S. A. Thorat, A. K. Khandelwal, B. Bruhadeshwar, K. Kishore. Payload Content based Network Anomaly Detection, Proceedings of the First International Conference on the Applications of Digital Information and Web Technologies (ICADIWT), Ostrava, Czech Republic, pp. 127132, August 2008. [9] K. Wang, J. J. Parekh, S. J. Stolfo. Anagram: A Content Anomaly Detector Resistant to Mimicry Attack. Proceedings of the Ninth International Symposium on Recent Advances in Intrusion Detection (RAID), Hamburg, Germany. Lecture Notes in Computer Science, Springer, Vol. 4219, pp. 226-248, September 2006. Figura 3. Comparativa de APAP con otras propuestas. V. CONCLUSIONES Y TRABAJO FUTURO A la vista de los resultados, APAP es una buena alternativa a las estrategias actuales de detección de anomalías en la carga útil del tráfico de una red. Esto es debido a que además de ofrecer una tasa de aciertos del 100% y una tasa muy baja de falsos positivos, plantea una estrategia innovadora para la reducción de los costes de modelado de la red. Esta ventaja permite su funcionamiento en tiempo real sobre redes con mucha densidad de tráfico. Por otro lado, el uso de reglas va a permitir una fácil escalabilidad del sistema, permitiendo al operador adaptarse a nuevos entornos de red mediante la aplicación de pequeños cambios sobre el sistema desplegado. En resumen, APAP supone una solución sencilla y efectiva para hacer frente a las amenazas desconocidas que pretenden atentar contra la seguridad de una red. Actualmente existen [10] V. A. Skormin, D. H. Summerville, J. S. Moronski. Detecting Malicious Codes by the Presence of Their “Gene of Self-replication”. Proceedings of the Second International Workshop on Mathematical Methods, Models, and Architectures for Computer Network Security, St. Petersburg, Russia. Lecture Notes in Computer Science, Springer, Vol. 2776, pp 195-205, September 2003. [11] Y. Zhang, T. Li, J. Sun, R. Qin. An FSM-Based Approach for Malicious Code Detection Using the Self-Relocation Gene, Proceedings of 4th International Conference on Intelligent Computing (ICIC), Shanghai, China. Lecture Notes in Computer Science, Springer, Vol. 5226, pp 364-371, September 2008. [12] J. Zhang, M. Zulkernine, A. Haque. Random-Forests-Based Network Intrusion Detection Systems. IEEE Transactions on Systems, Man, and Cybernetics—Part C: Applications and Reviews, Vol. 38, No. 5, pp. 649-659, September 2008. [13] M. Z. Shafiq, S. A. Khayam, M. Farooq, Improving Accuracy of Immune-Inspired Malware Detectors by using Intelligent Features. Proceedings of the Tenth Annual Conference on Genetic and Evolutionary Computation (GECCO), Atlanta, Georgia, USA, pp. 119126, July 2008. [14] Artificial Immune System based General Purpose Intrusion Detection System (AISGPIDS). Technical Report, FAST National University of Computer & Emerging Sciences, Islamabad Pakistan, pp. 1-29, January 2009. [15] S. B. Medhdi, A. K. Tanwani, M. Farooq. IMAD: In-Execution Malware Analysis and Detection. Proceedings of the Eleventh Annual Conference on Genetic and Evolutionary Computation Conference (GECCO), Montreal, Quebec, Canada, pp. 1553-1560, July 2009. [16] J. Jung, V. Paxson, A. W. Berger, H. Balakrishnan, Fast Portscan Detection Using Sequential Hypothesis Testing. Proceedings of the IEEE Symposium on Security and Privacy, Oakland, CA, pp. 211-225, May 2004. [17] Y. Gu, A. McCallum, D. F. Towsley. Detecting Anomalies in Network Traffic Using Maximum Entropy Estimation. Proceedings of the Fifth ACM SIGCOMM Conference on Internet Measurement (IMC), Berkeley, California, USA, pp. 345-350, October 2005. [18] M. V. Mahoney, P. K. Chan, PHAD: Packet Header Anomaly Detection for Identifying Hostile Network Traffic. Florida Institute of Technology Technical Report CS-2001-04, 2001. [19] D. Anderson, T. Frivold, A. Valdes. Next-generation Intrusion Detection Expert System (NIDES): A Summary. Computer Science Laboratory, SRI International, Computer Science Laboratory, Technical Report SRI-CSL-95-07, May 1995. [20] P. S. Almeida, C. Baquero, N. Preguica, D. Hutchison. Scalable Bloom Filters, Information Processing Letters, Vol. 101, No. 6, pp. 255–261, March 2007. [21] M. Z. Shafiq, S. M. Tabish, M. Farooq, On the Appropriateness of Evolutionary Rule Learning Algorithms for Malware Detection, Proceedings of the International Workshop on Learning Classifier Systems (IWLCS), held in conjunction with Genetic and Evolutionary Computation Conference (GECCO), Montreal, Canada, pp. 2609-2616, July 2009. [22]M. Z. Shafiq, S. M. Tabish, M. Farooq, S. A. Khayam. Embedded Malware Detection Using Markov n-Grams, Proceedings of the Fifth International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA), Paris, France. Lecture Notes in Computer Science, Springer, Vol. 5137, pp 88-107, July 2008. [23]F. Putze, P. Sanders, J. Singler. Cache-, Hash- and Space-Efficient Bloom Filters, Proceeding of the 6th International Workshop on Experimental Algorithms (WEA), Rome, Italy. Lecture Notes in Computer Science, Springer, Vol. 4525, pp. 108–121, June 2007. [24] A. Pagh, R. Pagh, S. Srinivasa Rao. An Optimal Bloom Filter Replacement. Proceedings of the Sixteenth Annual Symposium on Discrete Algorithms, Vancouver, British Columbia, pp. 823-829, January 2005. [25] M. Z. Shafiq, S. M. Tabish, F. Mirza, M. Farooq, PE-Miner: Mining Structural Information to Detect Malicious Executables in Realtime, in Proceedings of the Twelfth International Symposium on Recent Advances in Intrusion Detection (RAID), Saint-Malo, France. Lecture Notes in Computer Science, Springer, Vol. 5758, pp. 121-141, September 2009. [26] B. Chazelle, J. Kilian, R. Rubinfeld, A. Tal. The Bloomier Filter: An Efficient Data Structure for Static Support Lookup Tables. Proceedings of the Fifteenth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA), Philadelphia, USA, pp. 30-39, January 2004. [27] L. J. García Villalba, J. D. Mejía Castro, A. L. Sandoval Orozco, J. Martínez Puentes. Malware Detection System by Payload Analysis of Network Traffic (Poster Abstract). Proceedings of the Fifteenth International Symposium on Recent Advances in Intrusion Detection (RAID), Amsterdam, The Netherlands. Lecture Notes in Computer Science, Vol. 7462, pp. 397-398, September 2012. [28] J. McHugh. Testing Intrusion Detection Systems: A Critique to the 1998 and 1999 DARPA Intrusion Detection System Evaluations as Performed by Lincoln Laboratory. ACM Transactions on Information and System Security, Vol.3 (4), pp. 262-294, November 1999. [29] J. A. Pinto, L. J. García Villalba. Trie Data Structure to Compare Traffic Payload in a Supervised Anomaly Detection System (Poster Abstract). Proceedings of the Fifteenth International Symposium of Research in Attacks, Intrusions, and Defenses (RAID), Amsterdam, The Netherlands. Lecture Notes in Computer Science, Springer, Vol. 7462, pp. 386-387, September 2012. [30] H. Villanúa Vega, J. Maestre Vidal, J. D. Mejía Castro, L. J. García Villalba. Improvement of an Anagram Based NIDS by Reducing the Storage Space of Bloom Filters (Poster Abstract). Proceedings of the Fifteenth International Symposium of Research in Attacks, Intrusions, and Defenses (RAID), Amsterdam, The Netherlands. Lecture Notes in Computer Science, Springer, Vol. 7462, pp. 393-394, September 2012. [31] J. Maestre Vidal, H. Villanúa Vega, J. D. Mejía Castro, L. J. García Villalba. Concurrency Optimization for NIDS (Poster Abstract). Proceedings of the Fifteenth International Symposium of Research in Attacks, Intrusions, and Defenses (RAID), Amsterdam, The Netherlands. Lecture Notes in Computer Science, Springer, Vol. 7462, pp. 395-396, September 2012. [32] J. Maestre Vidal, J. D. Mejía Castro, A. L. Sandoval Orozco, L. J. García Villalba. Evolutions of Evasion Techniques against network Intrusion Detection Systems. Proceedings of the Sixteenth International Conference on Information Technology (ICIT), Amman, Jordania. Mayo 2013. Luis Javier García Villalba, IEEE Senior Member, received a Telecommunication Engineering degree from the Universidad de Málaga (Spain) in 1993 and holds a M.Sc. in Computer Networks (1996) and a Ph.D. in Computer Science (1999), both from the Universidad Politécnica de Madrid (Spain). Visiting Scholar at COSIC (Computer Security and Industrial Cryptography, Department of Electrical Engineering, Faculty of Engineering, Katholieke Universiteit Leuven, Belgium) in 2000 and Visiting Scientist at IBM Research Division (IBM Almaden Research Center, San Jose, CA, USA) in 2001 and 2002, he is currently Associate Professor of the Department of Software Engineering and Artificial Intelligence at the Universidad Complutense de Madrid (UCM) and Head of Complutense Research Group GASS (Group of Analysis, Security and Systems, http://gass.ucm.es/) which is located in the Faculty of Information Technology and Computer Science at the UCM Campus. His professional experience includes research projects with Hitachi, IBM, Nokia and Safelayer Secure Communications. His main research interests are Computer Networks and Computer Security. Dr. García Villalba is an Associate Editor in Computing for IEEE Latin America Transactions since 2004. He is also an Associate Editor in other journals such as IET Communications, IET Networks, IET Wireless Sensor Systems, International Journal of Ad Hoc and Ubiquitous Computing, among others. Ana Lucila Sandoval Orozco received a Computer Science Engineering degree from the Universidad Autónoma del Caribe (Colombia) in 2001. She holds a Specialization Course in Computer Networks (2006) from the Universidad del Norte (Colombia), and holds a M.Sc. in Research in Computer Science (2009) and a Ph.D. in Computer Science (2014), both from the Universidad Complutense de Madrid (Spain). She is currently a Research Assistant at Complutense Research Group GASS. Her main research interests are Computer Networks and Computer Security. Jorge Maestre Vidal received a Computer Science Engineering degree from the Universidad Complutense de Madrid (Spain) in 2012. He holds an MSc in Research in Computer Science from the Universidad Complutense de Madrid (Spain) in 2013. He is currently a PhD Student at the Universidad Complutense de Madrid (Spain) and a Research Assistant at Complutense Research Group GASS. His main research interests are in the field of the anomaly-based network intrusion detection systems.