Minería de Datos: Intrusiones de Red
Transcription
Minería de Datos: Intrusiones de Red
Minería de Datos: Intrusiones de Red Manuel Antolín Ayuso Miguel Ángel Barcenilla Mancha NIA: 100051666 [email protected] NIA: 100038909 [email protected] 1. RESUMEN En este documento se ha utilizado la herramienta de minería de datos WEKA para diseñar un detector de intrusiones de red. Categorías y Descriptores H.2.8 [Database Applications]: Data mining. [2] Términos Generales Algoritmos, Medición, Documentación, Diseño, Fiabilidad, Experimentación, Seguridad, Verificación. Palabras clave Minería, datos, weka, modelo, predicción, intrusiones, red. 2. INTRODUCCIÓN 2.1 Minería de datos El objetivo de la minería de datos es construir un sistema computacional que sea capaz de encontrar y modelar el conocimiento oculto (información no evidente, desconocida a priori y potencialmente útil) que a los seres humanos nos resulta difícil ver. Comprende de una serie de técnicas, algoritmos y métodos que imitan la cualidad humana del aprendizaje: ser capaz de extraer nuevos conocimientos a partir de las experiencias (datos de entrenamiento). 3. LOS DATOS DE ESTUDIO 3.1 Origen de los datos Los datos que se van a utilizar en este estudio son una pequeña selección del conjunto de datos del concurso KDD 1999, en donde se usó una versión reducida de la amplia variedad de intrusiones militares simuladas en un entorno de red, proporcionadas por DARPA Intrusion Detection Program Evaluation en 1998, que tenían como objetivo evaluar el estudio y la investigación en la detección de intrusiones. Los Laboratorios Lincoln crearon un entorno para adquirir un volcado de datos TCP durante nueve semanas, en una red de área local (LAN) que simulaba la típica red de las Fuerzas Aéreas de EE.UU salpicada con múltiples ataques. El conjunto bruto de datos de entrenamiento, obtenidos durante las primeras 7 semanas, ocupaban cerca de cuatro gigabytes, lo que equivale aproximadamente a cinco millones de registros de conexión. Del mismo modo, los datos de test dado se obtuvieron durante las dos últimas semanas y rondaban dos millones de registros de conexión [7]. 3.2 Tipos de ataques Una conexión es una secuencia de paquetes TCP con un inicio y final bien definidos, como flujos de datos entre dos direcciones IP. Todas las conexiones se etiquetan como normales o como un tipo específico de ataque. Cada conexión consta de unos 100 bytes [7]. El fin de la minería de datos es la explotación de grandes volúmenes de datos con vistas al descubrimiento de información previamente desconocida y que pueda servir de ayuda en el proceso de toma de decisiones, formando parte del conjunto de tecnologías de la Inteligencia de Negocio (realización eficiente de todas las actividades relacionadas con la generación, extracción, organización, análisis, compartición y distribución del conocimiento de una organización) [8]. DoS (denial-of-service): denegación de servicio. Hace que un servicio o recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecargando los recursos computacionales de su sistema [9]. 2.2 Intrusiones de red R2L: acceso no autorizado desde una máquina remota; Se puede definir intrusión como cualquier conjunto de acciones que tratan de comprometer la integridad, confidencialidad o disponibilidad de un recurso. U2R: acceso no autorizado a privilegios de superusuario. La detección de intrusos es la capacidad de detectar ataques en una red, incluyendo dispositivos y computadores. 2.3 Aprendizaje de un detector de intrusiones El software para detectar intrusiones protege a una red de usuarios no autorizados. La tarea de aprendizaje de un detector de intrusiones consiste en construir un modelo de predicción (un clasificador) capaz de distinguir entre la conexiones malignas, llamadas intrusiones o ataques, y conexiones normales. Para ello se va a utilizar la minería de datos. Los ataques se dividen en cuatro categorías principales: Probing: vigilancia y otros tipos de sondeo de redes. Es importante señalar que los datos de test no tienen la misma probabilidad de distribución que los de entrenamiento, y que incluyen tipos de ataque no especificados. Esto hace que la tarea sea más realista. Algunos expertos creen que la mayoría de los ataques son variantes de ataques conocidos y la "firma" de estos pueden ser suficientes para capturar las nuevas variantes. Las bases de datos contienen un total de 24 tipos de ataque, con 14 tipos adicionales en los datos de test [7]. Tabla 3.2-1: Tipos de ataque en datos de entrenamiento [3][7] rootkit Escenario de varios días donde un usuario instala componentes de un rootkit. UR2 ipsweep Sondeo con barrido de puertos o mandando pings a múltiples direcciones de host. Probing nmap Escaneo de redes mediante la herramienta nmap. Probing portsweep Barrido de puertos para determinar qué servicios se apoyan en un único host. Probing satan Herramienta de sondeo de redes que busca debilidades conocidas. Probing Ataque Descripción Tipo back Ataque contra el servidor web Apache cuando un cliente pide una URL que contiene muchas barras. DoS land Envío de TCP/SYN falso con la dirección de la víctima como origen y destino, causando que se responda a sí mismo continuamente. DoS neptune Inundación por envíos de TCP/SYN en uno o más puertos. DoS pod Ping de la muerte: manda muchos paquetes ICMP muy pesados. DoS smurf El atacante envía un ping, que parece proceder de la víctima, en broadcast a una tercera parte de la red, donde todos los host responderán a la víctima. DoS teardrop Usa el algoritmo de fragmentación de paquetes IP para enviar paquetes corruptos a la víctima. DoS ftp_write Usuario FTP remoto crea un archivo .rhost y obtiene un login local. R2L guess_passwd Trata de adivinar la contraseña con telnet para la cuenta de visitante R2L imap Desbordamiento remoto del búfer utilizando el puerto imap. R2L multihop Escenario de varios días donde el atacante primero accede a una máquina que luego usa como trampolín para atacar a otras máquinas. Los atributos de “mismo host'” tienen en cuenta sólo las conexiones en los dos últimos segundos que tengan el mismo destino que la conexión actual, y las estadísticas relacionadas con el protocolo, los servicios, etc. R2L Los de “mismo servicio” examinan sólo las conexiones en los dos últimos segundos que tienen el mismo servicio que la conexión actual. phf Script CGI que permite ejecutar comandos en una máquina con un servidor web mal configurado. R2L spy Analizador de protocolos LAN por la interfaz de red. R2L warezclient Los usuarios descargan software ilegal publicado a través de FTP anónimo por el warezmaster. R2L warezmaster Subida FTP anónima de Warez (copias ilegales de software). R2L Desbordamiento de la pila del búfer. UR2 buffer_overflow . 3.3 Atributos loadmodule Ataque furtivo que reinicia la IFS para un usuario normal y crea un shell de root. UR2 perl Establece el id de usuario como root en un script de perl y crea un shell de root. UR2 Cada registro de conexión está compuesto de 42 atributos, lo que supone unos 100 bytes por registro. Salvatore J. Stolfo , profesor del departamento de Ciencias de la Computación de la Universidad de Columbia de New York, define los atributos de alto nivel que ayudan a la hora de distinguir conexiones normales de los ataques. Un tema de investigación actual son los algoritmos útiles para la minería de porciones de datos no estructurados. Stolfo usa el dominio del conocimiento para añadir atributos que busquen un comportamiento sospechoso en porciones de datos, como el número de intentos de acceso fallidos, y se denominan “atributos de contenido'”. Los atributos de “mismo host” y "mismo servicio" están denominados atributos de tráfico basados en tiempo. Algunos ataques de Probing escanean los puertos con un intervalo de tiempo mucho mayor de dos segundos, por ejemplo una vez por minuto. Por lo tanto, los registros también fueron clasificados por host de destino, produciendo una serie de atributos denominados “tráfico basado en host”. En los registros de R2L y U2R parece que no hay patrones secuenciales frecuentes, a diferencia de la mayoría de los ataques de DOS y de Probing. Esto se debe a que los ataques de DOS y Probing conllevan muchas conexiones con un mismo hosts en un período muy corto de tiempo, pero los ataques de R2L y U2R están contenidos dentro de un paquete de datos y suelen consistir en una única conexión. Una lista completa de la serie de atributos definidos para los registros de conexión se da en los siguientes tres cuadros [7]. Tabla 3.3-1. Atributos básicos de las conexiones TCP. Tabla 3.3-3. Atributos con ventana de dos segundos. Atributo Atributo Descripción Tipo count Número de conexiones a la misma máquina que la conexión actual en los dos últimos segundos Continuo Descripción Tipo duration Longitud (número de segundos) de la conexión. Continuo protocol_type Tipo de protocolo (tcp...) Discreto service Tipo de servicio de destino (HTTP, Telnet, SMTP…) Discreto src_bytes Número de bytes de datos de fuente a destino Continuo dst_bytes Número de bytes de datos de destino a la fuente. Continuo flag Estado de la conexión (SF, S1, REJ…) Discreto land 1 si la conexión corresponde mismo host/puerto; 0 de otro modo. Discreto wrong_fragment Número de fragmentos erróneos. Continuo urgent Número de paquetes urgentes. Continuo Los siguientes atributos se refieren a las conexiones de mismo host. serror_rate Porcentaje de conexiones que tienen errores “SYN”. Continuo rerror_rate Porcentaje de conexiones que tienen errores “REJ”. Continuo same_srv_rate Porcentaje de conexiones con el mismo servicio. Continuo diff_srv_rate Porcentaje de conexiones con diferentes servicios. Continuo srv_count Número de conexiones al mismo servicio que la conexión actual en los dos últimos segundos Continuo Los siguientes atributos se refieren a las conexiones de mismo servicio. srv_serror_rate Porcentaje de conexiones que tienen errores “SYN”. Continuo srv_rerror_rate Porcentaje de conexiones que tienen errores “REJ”. Continuo srv_diff_host_rate Porcentaje de conexiones a diferentes hosts. Continuo Tabla 3.3-2. Atributos especiales. Atributo Descripción Tipo hot Número de indicadores “hot”. Continuo num_failed_logins Número de intentos de acceso fallidos. Continuo logged_in 1 si acceso exitoso; 0 de otro modo. Discreto num_compromised Número de condiciones “sospechosas”. Continuo root_shell 1 si se obtiene superusuario para acceso a root; 0 de otro modo. Discreto su_attempted 1 si se intenta el comando “su Discreto root”; 0 de otro modo. num_root Número de accesos a root. Continuo num_file_creations Número de operaciones de creación de ficheros. Continuo num_shells Número de Shell prompts. Continuo num_access_files Número de operaciones de Continuo control de acceso a ficheros. 4. HERRAMIENTAS DE TRABAJO 4.1 Software WEKA [5] WEKA, acrónimo de Waikato Environment for Knowledge Analysis, es un entorno para experimentación de análisis de datos que permite aplicar, analizar y evaluar las técnicas más relevantes de análisis de datos, principalmente las provenientes del aprendizaje automático, sobre cualquier conjunto de datos del usuario. Es un software compuesto de un conjunto de librerías JAVA que ha sido desarrollado en la universidad de Waikato (Nueva Zelanda) bajo licencia GPL, lo cual ha impulsado que sea una de las suites más utilizadas en el área en los últimos años. Para ello únicamente se requiere que los datos a analizar se almacenen con un cierto formato, conocido como ARFF (Attribute-Relation File Format) [6]. Para éste estudio se ha utilizado su versión 3.5.6. 4.2 Características técnicas del sistema num_outbound_cmds Número de comandos de salida en una sesion ftp. Continuo El ordenador donde se ha ejecutado el software de WEKA presenta las siguientes características: is_hot_login 1 si el login pertenece a la lista “hot”; 0 de otro modo. Discreto -CPU: Intel Pentium 4 a 2,80 GHz con 512 MB de memoria RAM. is_guest_login 1 si el acceso es un “guest” 'login; 0 de otro modo. Discreto -Sistema Operativo: Microsoft Windows XP Professional Versión 2002. Service Pack 2 5. PREPARACIÓN DE LOS DATOS 5.1 Selección de los datos En la página de la competición KDD 1999 [7] se proporcionan los siguientes conjuntos de datos: -kddcup.data.gz: Datos de entrenamiento originales (743 MB descomprimido). -kddcup.data_10_percent.gz: Subconjunto del 10% de los datos de entrenamiento (75 MB descomprimido). -kddcup.testdata.unlabeled.gz: Datos de test originales sin etiquetar (430 MB descomprimido). -kddcup.testdata.unlabeled_10_percent.gz: Subconjunto del 10% de los datos de test sin etiquetar (45 MB descomprimido). -corrected.gz: Subconjunto anterior con los datos correctamente etiquetados (ataques correspondientes especificados) (48 MB descomprimido). Se debe tener en cuenta que la herramienta WEKA tiene que manejar grandes conjuntos de datos y que al usar la máquina virtual de java se dispone de una memoria limitada. Por este motivo hay que tomar un conjunto de datos que sea lo bastante grande como para poder hacer un análisis que se considere lo suficientemente bueno, pero que a la vez sea lo necesariamente pequeño para que WEKA pueda manejarlo con cierta soltura sin llegar a colapsar el equipo. Ateniéndose a estas circunstancias se descartan los conjuntos de datos originales, quedándose los subconjuntos del 10%. Entre los datos de test etiquetados y sin etiquetar se han elegido directamente los etiquetados, pues con WEKA se puede hacer una predicción del tipo de ataque a la vez que se compara con el ataque real, proporcionando estadísticas de la calidad de la predicción y de sus errores. De esta forma se dispone de un conjunto de 494021 instancias de datos de entrenamiento y 311029 instancias de datos de test corregidos, que siguen siendo demasiado grandes como para poder trabajar con ellos. @relation NOMBRE_RELACION @attribute at1 tipo @attribute at2 {valor1, valor2, …} … @attribute atN {valor1, valor2, …} @data dato11,dato21...,datoN1 … dato1M,dato2M...,datoNM Figura 5.2-1. Estructura del fichero arff. Los atributos pueden ser principalmente de dos tipos: numéricos de tipo real o entero (real o integer), y simbólicos (especificando los valores posibles que pueden tomar entre llaves) [6]. En este caso, los atributos de tipo continuo se han puesto en WEKA como de tipo integer, los discretos booleanos (que toman valores 0 o 1) como simbólicos ({0,1}), y el resto de atributos discretos, con sus valores correspondiente. Para crear el archivo arff se ha tenido que hacer primero un pequeño programa en java que busque, entre los datos de entrenamiento y los de test, los diferentes valores que pueden tomar los atributos protocol_type, service y flag, ya que no se proporcionaban. También se han tenido que obtener los tipos de ataque que aparecen en los datos de test pero no en los de entrenamiento, para añadírselos a las cabeceras de ambos conjuntos para que sean compatibles entre sí. Los valores que pueden tomar estos atributos son finalmente los siguientes: Tabla 5.2-1. Posibles valores de los atributos simbólicos. Atributo Valores protocol_type tcp, udp, icmp service http, mtp, smtp, finger, domain, domain_u, auth, telnet, ftp, eco_i, ntp_u, ecr_i, other, private, pop_3, ftp_data, rje, time, link, remote_job, gopher, ssh, name, whois, login, imap4, daytime, ctf, nntp, shell, IRC, nnsp, http_443, exec, printer, icmp, efs, courier, uucp, klogin, kshell, echo, discard, systat, supdup, iso_tsap, hostnames, csnet_ns, pop_2, sunrpc, uucp_path, netbios_ns, netbios_ssn, netbios_dgm, sql_net, vmnet, bgp, Z39_50, ldap, netstat, urh_i, X11, urp_i, pm_dump, tftp_u, tim_i, red_i flag SF, S1, REJ, S2, S0, S3, RSTO, RSTR, RSTOS0, OTH, SH El conjunto que más limita es el de datos de entrenamiento, pues con él se tiene que construir el modelo de clasificación, lo que consume mucha memoria. El proceso de clasificación de los datos de test suele ser mucho más rápido. Probando con diferentes tamaños de conjuntos de datos se han elegido finalmente un subconjunto de 20585 instancias de datos de entrenamiento y 10034 de test, pues con estos conjuntos se pueden utilizar casi todos los algoritmos de minería de datos. La elección de estos sub-subconjuntos se ha hecho muestreando los datos (cogiendo por ejemplo uno de cada 24 en el caso de los de entrenamiento), para tener unas muestras heterogéneas. 5.2 Acondicionamiento al formato WEKA Una vez que se han elegido los datos, se tienen que pasar a formato WEKA. Los datos de entrada sobre los que operarán los algoritmos, deben estar codificados en un formato denominado Attribute-Relation File Format (extensión "arff"). El formato de un fichero arff sigue la estructura siguiente: class (ataque) back, buffer_overflow, ftp_write, guess_passwd, imap, ipsweep, land, loadmodule, multihop, neptune, nmap, normal, perl, phf, pod, portsweep, rootkit, satan, smurf, spy, teardrop, warezclient, warezmaster, snmpgetattack, named, xlock, xsnoop, sendmail, saint, apache2, udpstorm, xterm, mscan, processtable, httptunnel, worm, mailbomb, sqlattack, snmpguess, ps Una vez se tienen las cabeceras hechas, se añaden los datos al final de las mismas (muestreados como se ha comentado anteriormente), deshaciéndose del punto final de cada instancia. 6. DISTRIBUCIÓN DE LOS DATOS DE ENTRENAMIENTO Cuando se introducen los datos de entrenamiento en WEKA, la herramienta de visualización permite representar gráficas en 2D que relacionan atributos. En la figura 6-1 se ve con qué frecuencia aparece cada tipo de ataque en los datos de entrenamiento. Observando la segunda gráfica (Figura 6-2) se puede ver que el tipo de ataque depende mucho del tipo de protocolo que se use. Por ejemplo todos los ataques ‘smurf’ usan ‘icmp’, los ‘teardrop’ ‘udp‘ y los de tipo ‘back’, ‘tcp’, por lo que este atributo es muy importante para aumentar la calidad de la predicción. Con el atributo ‘service’ pasa algo muy parecido. Figura 6-2. Gráfica protocol_type - class. En la tercera gráfica (Figura 6-3), se observa a su vez cómo casi todos los ataques ‘teardrop’ tienen un número de fragmentos erróneos superior al resto de ataques. Figura 6-1. Frecuencia de aparición de cada ataque. Como ya se dijo, los ataques de tipo R2L y U2R están contenidos dentro de un paquete de datos y suelen consistir en una única conexión. Se comprueba ésto en la Figura 6-1, viendo que casi todos ellos, o no aparecen (como ‘buffer_overflow’, ‘ftp_write’, ‘multihop’, ‘perl’, ‘rootkit’ y ‘spy’) o constan de una única aparición (como ‘guess_passwd’, ‘imap’, ‘loadmodule’, ‘phf’ y ‘warezmaster’). Con los ataques que no aparecen en ninguna ocasión, predecir su aparición en los datos de test es prácticamente imposible, al no haber aprendido bien el modelo a detectarlos. Los ataques de denegación de servicio (DoS) aparecen casi todos en muchas ocasiones (‘back’ 91 veces, ‘pod’ 10 veces, ‘teardrop’ 40 veces o ‘land’ con tan solo una aparición), destacando los que se basan en inundación que sobresalen ampliamente del resto, con las 4467 apariciones de ‘neptune’ y ‘smurf’ con 11700 conexiones, siendo el ataque más frecuente de todos. Los ataque de sondeo (probing) tienen varias ocurrencias cada uno: ‘ipsweep’ (46), ‘nmap’ (8), ‘portsweep’ (47), ‘satan’ (66). Figura 6-3. Gráfica wrong_fragment - class. Finalmente se ve que las conexiones buenas son muchas, pero no llegan a ser las más frecuentes, ganándolas en número los ataques de inundación. Con los atributos especiales también se ve cómo se distribuyen los datos. Todos los ataques ‘warezclient’ y ‘back’ tienen un ‘logged_in’ exitoso (Figura 6-4). Figura 6-4. Gráfica logged_in - class. Figura 6-6. Gráfica srv_rerror_rate - class. Respecto a los atributos basados en tiempo de “mismo host'”, viendo la quinta gráfica (Figura 6-5), se puede observar que los ataque de tipo ‘smurf’ y ‘satan’ presentan un número elevado de conexiones a la misma máquina que la conexión actual en los dos últimos segundos. Lo mismo se puede hacer con muchos de los atributos restantes, donde algunos aportan mucha información simplemente mirando las gráficas y con otros no será tan fácil de ver simple vista. Así se intuye cómo puede influir un atributo en la clasificación que hará el modelo de predicción resultante, y decidir si merece la pena su utilización respecto al coste computacional que suponga incluirlo. Se verifica así qué algunos ataques de Probing, como ‘satan’, escanean los puertos con un intervalo de tiempo mucho mayor de dos segundos. Con ésto se puede afirmar que los atributos de “mismo host” van a ser de gran utilidad para detectar este tipo de ataques. 7. CLASIFICACION DE LOS DATOS El problema de la clasificación es el más frecuente en la práctica. Para clasificar los datos se ha utilizado la herramienta de minería de datos llamada WEKA, ya mencionada. De esta forma, se van a construir varios modelos que permitan predecir los ataques en función de los atributos de entrada (aprendizaje). 7.1 Modos de Evaluación: Clasificador [6] Para medir la efectividad del algoritmo de clasificación, se va a comparar la clase predicha con la clase real de las instancias. Existen diversos modos de realizar la evaluación: Use training set: evaluación del clasificador sobre el mismo conjunto sobre el que se construye el modelo predictivo para determinar el error, que en este caso se denominado ‘error de resustitución’. Supplied test set: evalúa sobre un conjunto independiente. Permite cargar un conjunto nuevo de datos. Sobre cada dato se puede realizará una predicción de clase para contar los errores. Figura 6-5. Gráfica count - class. Los atributos basados en tiempo de "mismo servicio", (Figura 6-6) también son útiles para detectar ataques de tipo ‘portsweep’, ‘satan’ Cross-Validation: evaluación con validación cruzada. Se dividen las instancias en tantas carpetas como indica el parámetro ‘Folds’, y en cada evaluación se toman las instancias de cada carpeta como datos de test, y el resto como datos de entrenamiento para construir el modelo. Los errores calculados serán el promedio de todas las ejecuciones Percentage split: se dividen los datos en dos grupos, de acuerdo con el porcentaje indicado (%). El valor indicado es el porcentaje de instancias para construir el modelo, que seguidamente es evaluado sobre las que se han dejado aparte. En este estudio se ha utilizado la opción “Supplied test set” para poder obtener un porcentaje de acierto y con ello evaluar modelo. 7.2 Selección y configuración de los clasificadores Para poder realizar un buen estudio se tiene que seleccionar entre distintos tipos de algoritmos que pertenecen al aprendizaje inductivo supervisado. Para ello se han utilizado los siguientes datos en todas las pruebas: 7.2.1.3 Algoritmo: PART Algoritmo que crea una serie de reglas utilizando los atributos más significativos para cada tipo de ataque. Este clasificador, a pesar de que es bastante simple, da muy buen resultado. Algunas de las reglas que crea son las siguientes: PART decision list - Nº de instancias de los datos de entrenamiento: 20585 - Nº de instancias de los datos de test: 10034 - Atributos: 42 7.2.1 Algoritmos basados en Reglas Algoritmos que aprenden modelos basados en reglas. Mediante los datos de entrenamiento, aprende una serie de reglas y con ellas predice un resultado u otro [4]. Dependiendo del algoritmo que se seleccione, se conseguido mayor o menor eficacia. Se han obtenido los siguientes resultados: 7.2.1.1 Algoritmo: ZeroR Este algoritmo es muy simple, asigna a todos los resultados a la clase mayoritaria [4]. Se puede ver que no se obtiene un buen resultado con este clasificador: En este caso, el ataque llamado ‘smurf’ se ha producido la mitad de las veces (56.83 % aprox) en los datos de entrenamiento. - Tiempo para crear el modelo: 0 segundos. - ZeroR estima que el valor de todas las intrusiones es: smurf - Instancias clasificadas correctamente: 5294 (52.7606 %) - Instancias clasificadas incorrectamente: 4740 (47.2394 %) 7.2.1.2 Algoritmo: OneR Este es un clasificador de los más sencillos y rápidos. Sus resultados pueden ser muy buenos en comparación con algoritmos mucho más complejos. Selecciona el atributo que mejor explica la clase de salida.[6] Para este caso, el ataque seleccionado para realizar la mejor predicción posible es: src_bytes: < 0.5 < 3.0 < 7.5 < 8.5 < 17.5 < 18.5 < 28.5 < 518.0 < 523.0 < 1018.0 < 1033.0 < 1222.0 < 1259.0 < 1475.0 < 1482.5 < 47517.0 < 57765.0 >= 57765.0 neptune satan normal ipsweep normal ipsweep teardrop normal smurf normal smurf normal warezclient normal pod normal back normal Figura 7.2.1.2-1. Modelo OneR con atributo src_bytes - Tiempo para crear el modelo: 1.17 segundos - Instancias clasificadas correctamente: 8934 (89.0373 %) - Instancias clasificadas incorrectamente: 1100 (10.9627 %) srv_count > 302: smurf (11688.0/1.0) same_srv_rate <= 0.45 AND src_bytes <= dst_host_diff_srv_rate <= 0.15: neptune (4453.0/1.0) 0 AND num_compromised > 0 AND src_bytes > 26408: back (91.0) wrong_fragment > 0 AND protocol_type = udp: teardrop (40.0) same_srv_rate <= 0.13 AND dst_host_same_src_port_rate <= 0.1: satan (59.0) dst_host_srv_diff_host_rate > 0.43 AND wrong_fragment <= 0 AND dst_bytes <= 220: ipsweep (41.0) srv_rerror_rate > 0.33 AND dst_bytes <= 89: portsweep (45.0) srv_serror_rate <= 0.5 AND wrong_fragment <= 0 AND src_bytes <= 332 AND num_failed_logins <= 0 AND src_bytes > 22: normal (239.0/3.0) wrong_fragment <= 0 AND logged_in = 1 AND dst_bytes <= 2518 AND dst_host_srv_rerror_rate = 0.01 AND service = ftp_data: warezclient (25.0/1.0) wrong_fragment <= 0 AND logged_in = 1 AND hot <= 20: normal (22.0/1.0) … Figura 7.2.1.3-1. Modelo PART - Número total de reglas: 25 - Tiempo para crear el modelo: 8.56 segundos. - Instancias clasificadas correctamente: 9174 (91.4291 %) - Instancias clasificadas incorrectamente: 860 (8.5709 %) Se puede ver que alcanza un 91 % de acierto en un tiempo bastante razonable. 7.2.2 Algoritmos basados en Árboles Algoritmos que aprenden mediante la generación de árboles de decisión [4]. 7.2.2.1 BFTree Algoritmo que crea un árbol de decisión en función del atributo con mayor ganancia de información. En este caso, el atributo con mayor ganancia de información es srv_count (es el nodo raíz). Con este clasificador se han obtenido unos resultados parecidos a los del algoritmo PART: - Tamaño del árbol: 65 - Tiempo para crear el modelo: 50.11 segundos. - Instancias clasificadas correctamente: 9164 (91.3295 %) - Instancias clasificadas incorrectamente: 870 (8.6705 %) Se puede observar que es más lento y se consigue el mismo resultado. 7.2.2.2 J48 7.3 Comparación de los clasificadores El algoritmo J48 de WEKA es una implementación del algoritmo C4.5, uno de los algoritmos de minería de datos más utilizado. Se trata de un refinamiento del modelo generado con OneR [6]. En este caso el nodo raíz coincide con el seleccionado por el anterior algoritmo (srv_count), pero se obtiene un mejor resultado: En la siguiente tabla (Tabla 7.3-1) se comparan los datos obtenidos con los diferentes algoritmos de clasificación. Tabla 7.3-1. Comparativa de algoritmos de clasificación. Algoritmo tmodelo tclasificacion Aciertos - Tamaño del árbol: 69 - Tiempo para crear el modelo: 7.25 segundos. - Instancias clasificadas correctamente: 9178 (91.4269 %) - Instancias clasificadas incorrectamente: 856 (8.5310 %) ZeroR 0s Muy Bajo 52.760 % OneR 1.17s Bajo 89.037 % PART 8.56s Bajo 91.429 % Supone una mejora moderada en las prestaciones, y consigue una probabilidad de acierto ligeramente superior en un tiempo mucho menor al del anterior clasificador. BFTree 50.11s Medio 91.329 % J48 7.25s Medio 91.427 % IBK 0.02s Muy Alto 91.743 % MultiLayerPerceptrón Excesivo - - NaiveBayes 1.3s Medio 71.098 % 7.2.3 Algoritmo del vecino más cercano Este tipo de algoritmo selecciona el ejemplo almacenado más parecido y lo elije como salida. Con este método se obtiene un resultado un poco mejor que los anteriores pero es mucho más lento a la hora de clasificar, puesto que necesita comparar con todos los datos conocidos [8]. 7.2.3.1 IBK Con este algoritmo, WEKA utiliza el paradigma de aprendizaje perezoso (lazy), es decir no construyen un modelo [4]. En este caso, el número de vecinos más cercanos que selecciona como óptimo es 1. De esa forma puede obtenerse el resultado: - Tiempo para crear el modelo: 0.02 segundos. - Instancias clasificadas correctamente: 9206 (91.74281 %) - Instancias clasificadas incorrectamente: 828 (8.2519 %) En este algoritmo no se realiza ningún modelo, simplemente compara unos datos con otros y por ello tarda mucho en realizar los resultados finales. Los algoritmos ZeroR y NaiveBayes no consiguen un porcentaje de aciertos aceptable, por lo que no se consideran adecuados para este estudio. OneR consigue un porcentaje de aciertos bastante alto, aunque no de los mejores, pero a cambio de un coste computacional muy bajo. Con los algoritmos PART y J48 se obtiene un resultado muy bueno y parecido entre ambos, con más o menos el mismo coste. El BFTree consigue un porcentaje ligeramente menor que éstos dos, tardando mucho más tiempo en construir el modelo, por lo cual es peor algoritmo. El mayor porcentaje de aciertos se logra con el algoritmo IBK, pero con un coste computacional a la hora de clasificar demasiado alto. 7.2.4 Algoritmo basado en redes neuronales Son algoritmos bastantes más complicados, prueba de ello es que no se ha podido realizar ningún modelo con un número elevado de datos de entrenamiento. 7.2.4.1 MultiLayerPerceptrón El resultado que se ha obtenido con este clasificador ha sido el mismo que con cualquiera de los métodos anteriores pero tardando mucho tiempo. Incluso con la posibilidad que ofrece WEKA de seleccionar solamente los atributos más importantes, este algoritmo tiene un coste computacional excesivamente alto. 7.2.5 Algoritmo basado en el paradigma del aprendizaje de Bayes Se ha hecho mención este tipo de algoritmos porque alguna de sus variantes tiene la característica de que se ve gravemente afectada por atributos irrelevantes a la hora de realizar el aprendizaje. 7.2.5.1 NaiveBayes 8. CONCLUSIONES Después de haber realizado un estudio exhaustivo y haber llegado a ciertas conclusiones, hay que destacar que WEKA da la posibilidad de elegir los atributos más importantes a la hora de construir los modelos de clasificación. Esta opción no se ha probado demasiado debido a la dificultad temporal que conlleva eliminar los valores en los datos de test. Pero se ha realizado un pequeño análisis sobre porqué WEKA piensa que algunos de esos atributos son los mejores: Tabla 8-1. Atributos más significativos. Atributo Justificación protocol_type El tipo de protocolo es bastante importante, puesto que unos protocolos son más vulnerables que otros. service Con el servicio ocurre lo mismo que con el tipo de protocolo. src_bytes El número de bytes de datos de fuente a destino es significativo puesto que normalmente los ataques suceden con paquetes pequeños. Como se puede ver en los resultados, es uno de los que peor resultado tiene: - Tiempo para crear el modelo: 1.3 segundos. - Instancias clasificadas correctamente: 7134 (71.0983 %) - Instancias clasificadas incorrectamente: 2900 (28.9017 %) dst_bytes Por la mismo que el anterior el número de bytes de datos de destino a la fuente también es importante. 9. REFERENCIAS flag Estado de la conexión (SF, S1, REJ…), muchos ataques se suelen realizar cuando se está en un estado conocido. [2] ACM Inc. ACM Computing Classification System [V.1998] http://www.acm.org/class/1998/ land 1 si la conexión es siempre hacia/desde un mismo host/puerto; 0 de otro modo. wrong_fragment Cuando el número de fragmentos erróneos es elevado, puede deberse a que se está produciendo un ataque. urgent Lo mismo ocurre con este atributo (Numero de paquetes urgentes). count Es posible que si alguien esté intentando conectarse a una maquina puede deberse a que está intentando entrar o atacar esa máquina. [1] ACM Inc. ACM SIG Proceedings Templates http://www.acm.org/sigs/pubs/proceed/template.html [3] Lincoln Laboratory. Short Attack Descriptions - 1999 DARPA Intrustion Detection Evaluation http://www.ll.mit.edu/IST/ideval/docs/1999/attackDBShortForm.html [4] “Mi página de Weka”: Documentación a cerca de la herramienta WEKA. http://www.dsic.upv.es/~cferri/weka/ [5] Página de documentación Weka. Universidad de Waikato. http://www.cs.waikato.ac.nz/~ml/weka/index.html [6] SCALAB, Grupo de Invetigación. Software de Aprendizaje Automático - Tutorial Weka. http://scalab.uc3m.es/~docweb/aa/software.html En cuanto al algoritmo de clasificación, destaca por su sencillez y su alto porcentaje de aciertos el algoritmo basado en reglas PART. [7] University of California, Irvine. KDD Cup 1999 Data http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html Por último, si se tuviese que seleccionar un segundo clasificador, sería el J48 intentando eliminar algunos atributos para poder así obtener resultados más rápidamente o poder complicar un poco más otros algoritmos de clasificación. [8] Villena, J. Apuntes y documentación de Inteligencia en redes de Comunicaciones (5º Curso Ing. de Telecomunicación). http://www.it.uc3m.es/jvillena/irc/indice.html [9] Wikipedia. Ataque de denegación de servicio http://es.wikipedia.org/wiki/Ataque_de_denegaci%C3%B3n _de_servicio