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