3.3.1 ATAQUE DE DEAUTENTICACIÓN
6. DISEÑO DE LAS PRUEBAS
6.3. ANÁLISIS MULTIVARIANTE
Una vez se obtienen las observaciones de las distintas variables, es momento de analizar el gráfico de dispersión, y realizar un estudio de las dependencias con PCA, MEDA y oMEDA. Este análisis se lleva a cabo con la herramienta Matlab y con una serie de códigos que se presentan en el anexo x.
Para poder realizar el estudio con PCA primero se hace un pre‐procesamiento a los datos para que queden centrados en la media, para lo que se usa el código “preprocess2D.m”. De la ejecución de dicho código se obtienen los datos pre‐procesados con los que se puede realizar el estudio de dependencias. En primer lugar se observan los gráficos de dispersión con el código “plot_scores_pca.m” que muestra un gráfico como el que se ha explicado anteriormente. Si no hay una diferenciación clara en el gráfico de los distintos grupos de tráficos quiere decir que las variables utilizadas no tienen poder discriminativo, por lo que habrá que rediseñar el conjunto de variables capturadas. Si se obtienen los tráficos bien diferenciados se puede proceder con el estudio de MEDA. Para obtener el diagrama MEDA se usa el código “meda_pca.m” al que hay que introducirle como argumento los datos pre‐ procesados, las componentes principales a tener en cuenta, el tipo de pre‐procesamiento utilizado, un umbral para la discretización de la matriz MEDA, el tipo de gráfico a mostrar y las variables. El tipo de gráfico a mostrar podrá ser en niveles de grises dependiendo si existe mayor o menor dependencia o también puede ser directamente discretizado de forma que aparezca blanco donde no hay dependencia y negro donde sí la hay. En el gráfico obtenido con este código se pueden obtener resultados para la compresión del experimento
Finalmente, una vez se ha caracterizado el experimento, se puede continuar con oMEDA, cuyo código es “omeda_pca.m”, de forma que se realice un estudio concreto de algún aspecto de relevancia para el experimento. En el caso de este proyecto será interesante observar qué variables se incrementan desde el tráfico normal al producido con un ataque, de forma que quede bien claro la variable a tener en cuenta. También se puede ver la tendencia general de alguna agrupación en concreto o la comparación entre dos tipos de tráficos de ataques. Para la ejecución de oMEDA, se introduce por argumento un vector con el que se dan distintos pesos a las observaciones dependiendo desde donde hacia dónde se quiere ver la variación en las variables. Por ejemplo, si se quiere ver lo que cambia del tráfico normal al tráfico del ataque 1, se asignaría ‐1 a las observaciones de tráfico normal, 1 a las observaciones de tráfico de ataque 1 y 0 al resto de observaciones. Al ejecutarlo se obtiene el diagrama de bandas aclaratorio. Todos los códigos correspondientes tanto al análisis PCA, MEDA y oMEDA pertenecen a la “Exploratory Data Analysis Toolbox” de Matlab [9]”.
6.4. CLASIFICADORES
Una vez hemos explorado los datos y considerado que las variables capturadas tienen información discriminativa, se hace uso de una serie de códigos de Matlab para la aplicación de los clasificadores explicados anteriormente en este documento. A continuación se muestra el procedimiento a seguir en cada caso dependiendo del clasificador a utilizar. Primero se
realiza un entrenamiento del clasificador procediendo después a clasificar nuevas observaciones de la red. Una vez clasificadas las nuevas observaciones se realiza un estudio del error producido por cada uno de los clasificadores pudiendo así comparar la efectividad de unos y otros. La métrica del error es bastante sencilla pero efectiva y consiste en realizar una comparación entre la clase asignada por el clasificador a la nueva observación y la clase que debería haber sido asignada. Se suman todos los casos en los que el clasificador haya hecho bien su trabajo y se divide por el número total de nuevas observaciones clasificadas, obteniendo así un porcentaje de error del total. Siendo M el número total de nuevas observaciones a clasificar y C el número de nuevas observaciones bien clasificadas, el cálculo del error se realiza con la siguiente expresión:
% 100
Para el algoritmo del vecino más próximo y para el del K vecinos más próximos se utiliza el mismo código Matlab “knnclassify.m” (códigos correspondientes a los algoritmos basados en vecindad en el anexo III). A este código hay que introducir por argumento tanto los datos para la calibración (observaciones y etiquetas indicando la clase a la que pertenecen) como el número K y las nuevas observaciones a ser clasificadas con lo que se obtiene un vector que contiene las clases correspondientes a las nuevas observaciones clasificadas. Para la distinción de clases se va a utilizar el valor 1 para el tráfico normal, 2 para el tráfico correspondiente al ataque de deautenticación, 3 para el de re‐inyección de peticiones ARP y 4 para el de man‐in‐ the‐middle. Con este mismo código se puede realizar un estudio y comparación de los dos algoritmos simplemente cambiando los valores de K. Para K=1 se estará trabajando con el algoritmo del vecino más próximo y con un valor de K superior se estará trabajando con el algoritmo de los K vecinos más próximos por votación. Para el caso de los K vecinos más próximos se debería dividir las observaciones en dos grupos, uno para comprobar qué K es el más adecuado para este experimento y otro para el entrenamiento del clasificador. La importancia de ver qué valor de K es el óptimo para este experimento es fundamental porque la efectividad de la clasificación va a depender directamente de la elección de dicho valor y no hay un valor generalizado, ya que dependerá de la distribución de las observaciones. Se utilizará un conjunto de observaciones para el entrenamiento del clasificador. A continuación se tomará otro conjunto de observaciones con las que se evaluará el valor óptimo de K al realizar la clasificación gracias al estudio del error. Finalmente se procederá a la clasificación de una tercera tanda de observaciones, con las que, usando el valor óptimo obtenido de K se llegará al cálculo final del error.
En el caso del árbol de clasificación (códigos correspondientes en el anexo IV) primero se utiliza un comando para el entrenamiento del clasificador obteniendo así el árbol y después se hace uso de otro para la clasificación. El código para el entrenamiento es “classregtree.m” y el de clasificación “eval.m”, que usa el árbol obtenido por el anterior código para la clasificación de las nuevas observaciones.
Para el análisis discriminante lineal (códigos correspondientes en el anexo VI) se usa “classify.m” indicando “linear” entre los argumentos, y para el cuadrático simplemente se cambia “linear” por “quadratic”. Si el clasificador a utilizar es el bayesiano, la función es “NaiveBayes.fit.m” obteniendo así la red de Bayes (anexo VII) y evaluándola posteriormente
para las nuevas observaciones con la función “predict.m”. Si el clasificador a utilizar es pls‐da, se utiliza más de un código Matlab. El código para la creación del modelo pls‐da se encuentra bajo el nombre de “clasiPlsda.m” (anexo V) y de ese código se obtiene el modelo pls‐da de los datos de entrenamiento. Para poder evaluar las nuevas observaciones obteniendo la clasificación se usa el código “plspred.m” (perteneciente a la toolbox PLS‐DA [11])al que hay que introducir por argumento las nuevas observaciones y el modelo pls‐da obtenido con la función anterior. A la clasificación obtenida se le puede calcular el error pero de forma adicional se puede introducir como argumento a la función “plspred.m” las clases correspondientes de las nuevas observaciones y el código calcula el porcentaje de éxito, por lo que el de error será 100‐% (éxito).
CAPÍTULO III
PRUEBAS
Una vez realizadas todas las pruebas explicadas en el capítulo anterior se procede a la presentación de los resultados y conclusiones obtenidas con las correspondientes correcciones a lo largo del proceso.