{\scshape\LARGE Escuela de Ingeniería Informática \par}
\vspace{0.2cm}
{\scshape TRABAJO DE FIN DE GRADO \par}
\vspace{0.5cm}
{Grado en Ingeniería Informática \par}
{Mención en Tecnologías de la Información\par}
\vspace{1.5cm}
{\scshape\LARGE\textbf Sistemas de Detección de Intrusos Basados en Técnicas de Machine Learning\par}
\vspace{1.5cm}
\end{centering}
\begin{flushright}
Autor:\\
D. Gonzalo Valdezate Álvarez\\
\vspace{0.2cm}
Tutor:\\
D. Valentín Cardeñoso Payo
\end{flushright}
\end{titlepage}
\clearpage
Resumen: \\
El número de dispositivos que utilizan Internet, así como las tareas que se realizan a través de él, aumenta cada día. También lo hacen los ataques contra la disponibilidad, integridad y confidencialidad de estos equipos. Los Sistemas de Detección de Intrusos (IDS) son uno de los mecanísmos de seguridad más efectivos para proteger sistemas en red contra ataques informáticos, se tenga o no conocimiento previo de ellos. Destaca la aplicación de la Inteligencia Artificial y, más concretamente, del aprendizaje automático en este tipo de programas. La mayor parte de estos IDS analizan el tráfico de la red y su comportamiento normal de forma que pueden activar una alarma cuando parte de dicho tráfico difiere de lo habitual. De esta forma se puede detectar algunos tipos de ataque aunque nunca se hayan realizado antes. En este documento analizaremos qué algoritmos de aprendizaje automático son más adecuados para detectar determinados tipos de ataques basándonos en este principio.\\%TODO
\\
\indent Palabras clave: \\
Sistemas de Detección de Intrusos, IDS, Machine Learning, Ciberseguridad.
\clearpage
\tableofcontents
\clearpage
\section{Introducción}
En la actualidad el uso de Internet se ha convertido en algo común en todos los aspectos de la vida. La inmensa mayoría de procesos cuya información se almacenaba antes en papel se han modificado para realizarse a través de la red y utilizar únicamente el formato digital. Datos personales de gran importancia (tales como números de cuenta, salarios, informes médicos o transacciones bancarias) se transmiten y almacenan en los equipos conectados a Internet Es por ello que los ataques a los equipos que soportan estas operaciones y almacenan estos datos han ido creciendo exponencialmente. También lo han hecho la forma en la que nos protegemos de ellos. No obstante, estos ataques cambian y se adaptan constantemente a las nuevas tecnologías. Una de las mejores formas de proteger una red, ya sea frente a ataques conocidos como frente a aquellos de los que aún no se tenga constancia, son los Sistemas de Detección de Intrusos (\textit{IDS}, por sus siglas en inglés). \\
\\
Los Sistemas de Detección de Intrusos son programas informáticos utilizados para detectar accesos no autorizados o maliciosos a un ordenador o una red. Esto se realiza mediante el análisis de los paquetes recibidos por una determinada interfaz de red. Cuando el IDS detecta un paquete o conjunto de paquetes que puedan corresponderse a un ataque informático, genera una alarma, que típicamente tendrá que ser atendida por un técnico en seguridad. Lo deseable sería que el programa reaccionase únicamente ante paquetes correspondientes a ataques, pero esto es imposible. El IDS nunca sabrá a ciencia cierta si un paquete corresponde a un ataque o no; deberá utilizar una serie de técnicas para tratar de determinarlo. En función del tipo de sistema, será deseable una mayor o menor sensibilidad frente a paquetes sospechosos.\\%TODO
\\
El objetivo de este documento es determinar en qué medida los algoritmos de Machine Learning pueden aplicarse a la detección de intrusiones y qué algoritmos son más apropiados para detectar qué tipos de ataques en función de unas determinadas métricas. %TODO
Para ello se realizará un estudio práctico aplicando una serie de algoritmos de Machine Learning a un Dataset que contenga la información correspondiente a un conjunto de paquetes de red. Parte de los mismos corresponderán al uso legítimo de la red de la red y parte a ataques informáticos. Los paquetes correspondientes a ataques estarán marcados de antemanos para poder evaluar la eficacia de cada algoritmo. Así, se pretende determinar qué algoritmos son más adecuados en función de qué métricas se consideren más importantes (Tasa de falsos positivos, tasa de falsos negativos, precisión...) y de qué tipo de ataques sea prioritario detectar. El Dataset será seleccionado de entre los disponibles en Internet para esta finalidad.
\section{Ataques contra sistemas en red}
%TODO. Clasificación de los principales tipos de ataques contra sistemas en red
\section{Sistemas de Detección de Intrusos}
Como se ha dicho, los IDS son mecanismos de seguridad software cuya funcionalidad consiste en detectar accesos ilegítimos a una red o equipo. La detección de intrusos se basa en la premisa de que el comportamiento de los intrusos difiere del de un usuario legítimo \cite{stallings}. Existen diferentes tipos de IDS en función de qué datos analizan y de qué tipo de técnicas utilizan para detectar posibles ataques.\\%TODO IDS como medida disuasoria
Los IDS pueden monitorizar información de toda una red o únicamente de un equipo. Aquellos que monitorizan únicamente el dispositivo en el que están instalados se denominan \textbf{Sistemas de Detección de Intrusos basados en Host} (HIDS, por sus siglas en inglés). Los HIDS pueden monitorizar, además de los paquetes que llegan a una determinada interfaz de red, elementos muy diferentes, como archivos de log o procesos en ejecución, por lo que son bastante dependientes de la veracidad de esta información \cite{paper2}. Por otro lado, los \textbf{IDS basados en Red} (NIDS) son instalados en equipos situados en determinados puntos de una red informática para monitorizar el tráfico de red que transcurre por la misma. Estos sistemas pueden analizar dicho tráfico utilizando muy diversas técnicas para determinar si su propósito es ilegitimo. Tienen el inconveniente de que, obviamente, solo pueden detectar aquellos ataques que utilizan la red y solo mientras la están utilizando. En este documento nos centraremos en el estudio de los NIDS, por ser los más utilizados y los que mejores resultados proporcionan \cite{paper3}.\\%TODO NIDS basados en análisis de paquetes o basados en análisis de flujo. Definición de flujo
De manera complementaria a la clasificación anterior, los IDS pueden clasificarse en función de las técnicas que utilizar para determinar si un paquete o conjunto de paquetes corresponde a un ataque.
\begin{itemize}
\item Los \textbf{IDS basados en firmas} analizan el contenido de los paquetes y lo comparan con una base de datos de firmas conocidas correspondientes a ataques ya documentados. Un paquete o conjunto de paquetes se descompone ene una serie de características que en conjunto determinan una firma. Si la firma de parte del tráfico de red se corresponde con alguna de las de la base de datos, éste se marcará como malicioso \cite{paper2}. Este tipo de IDS no sirve para detectar ataques de los que no se tenga constancia previa, aunque cuando genera una alarma se tiene la seguridad de que se ha detectado un ataque, no existen falsos positivos.
\item Los \textbf{IDS basados en anomalías} tratan de modelar el tráfico legítimo y habitual de una red. Cuando un paquete o flujo de paquetes difiere de este modelo se marca como malicioso y se genera una alerta. Este tipo de IDS sí que puede detectar ataques que nunca se hayan visto antes, aunque puede generar alarmas para paquetes legítimos o dejar pasar paquetes que no lo son. Puesto que es necesario crear un modelo del comportamiento de la red, estos programas no pueden instalarse y funcionar directamente en una, deben de proporcionarse mecanismos para la construcción de ese modelo. Es aquí donde juegan un papel importante las técnicas de Machine Learning, puesto que proporcionan una herramienta para que el IDS aprenda el comportamiento normal de una red e identifique cualquier anomalía que se salga de éste.
\end{itemize}
Teniendo en cuenta estos conceptos podemos concretar más el propósito del estudio realizado en este documento. Este será únicamente determinar qué algoritmos de Machine Learning son más adecuados, en un NIDS basado en anomalías, a la hora de construir un modelo del tráfico de red y de detectar anomalías en el mismo. En estos casos la detección de ataques suele considerarse como un problema de clasificación \cite{paper3}, ya que su objetivo es clasificar cada paquete como normal o malicioso. %TODO, cita pertenece a bibliogr de paper 3
\section{Machine Learning y algoritmos de clasificación}%TODO revisar clasificadores híbridos (por paper1). Que son las fases de entrenamiento (que es aprender) y prediccion. Aprendizaje supervisado y no-supervisado. (paper3)r
\section{Metodología}
En esta sección se detallará más en profundidad la metodología que se utilizará para la realización del estudio práctico y los pasos realizados para su implementación.\\
De esta forma, el primer paso será seleccionar las métricas que se tendrán en cuenta para determinar la idoneidad de un algoritmo de Machine Learning para la clasificación de un paquete o conjunto de paquetes de red como correspondientes al uso legítimo de la red o como correspondiente a un ataque.\\
En segundo lugar, se seleccionara un Dataset con una captura del tráfico de una determinada red, en la que cada paquete aparezca marcado como legítimo o correspondiente a un ataque. Existen Datasets disponibles en Internet que cumplen éstas características. Se estudiarán y se seleccionará uno en función de la cantidad de información que contenga, la variedad de los ataques que muestre y cómo de recientes sean sus datos. También se realizará un análisis y una presentación de las principales características relevantes del Dataset, la distribución de los ataques respecto al número total de entradas, etc. A continuación se seleccionarán los atributos de dicho Dataset que se desea tener en cuenta para la detección de ataques, en caso de que se considere conveniente desechar alguno.\\%TODO selección de atributos. Demasiados pueden empeorar el rendimiento del clasificador (por paper3)
%TODO. Ver paper 4 para la elección del dataset. (de momento no se a utilizado)
En tercer lugar, se seleccionará un conjunto de algoritmos de clasificación basados en Machine Learning para ser considerados en el experimento. Se seleccionarán en función de su efectividad como algoritmos de clasificación generales y de su uso en otros estudios similares.\\%TODO revisar clasificadores híbridos (por paper1)
%TODO revisar este punto, ya que puede haberse hablado ya de los algoritmos concretos
Finalmente, se aplicará cada uno de los algoritmos a los datos del Dataset. Se dividirá el Dataset en dos partes. Una fracción pequeña del mismo se utilizará para entrenar al algoritmo de clasificación, es decir, para permitirle formarse un modelo del tráfico legítimo de la red a partir de las etiquetas de cada paquete. La fracción restante se utilizará para ver la eficacia de ese algoritmo a la hora de clasificar una vez creado el modelo. Para cada algoritmo se recogerán los resultados y se calcularán las métricas de rendimiento mencionadas anteriormente. También se tratará de calcular esas métricas para cada uno de los principales tipos de ataque marcados en el Dataset. Se comparará esta información entre los diferentes algoritmos y se tratará de extraer conclusiones sobre la eficacia de éstos en cada caso. %TODO fase de entrenamiento y fase de prueba
%TODO tras una primera pasada a todos estos pasos podría reconsiderarse probar otro algoritmo o combinación de algoritmos
\subsection{Métricas a considerar}
Existen diferentes métricas que se pueden considerar a la hora de determinar la idoneidad de un algoritmo de clasificación. Para este estudio consideraremos las siguientes \cite{paper3}:
\begin{itemize}
\item Verdadero Positivo (VP): representa el número de paquetes correspondientes a ataques clasificados correctamente como tales.
\item Verdadero Negativo (TN): representa el número de paquetes normales clasificados correctamente como legítimos.
\item Falso Negativo (FN): representa el número de paquetes de ataques clasificados erróneamente como legítimos.
\item Falso Positivo (FP): representa el número de paquetes legítimos clasificados erróneamente como maliciosos.
\item Precisión (P): Representa la fracción de los paquetes clasificados como ataques que realmente lo eran. Es una de las métricas de rendimiento más básicas en un algoritmo de clasificación. Se calcula mediante la siguiente fórmula:
\begin{equation}
P = VP/(VP + FP)
\end{equation}
\end{itemize}
Se deseará por tanto un algoritmo de clasificación que maximice las tasas de precisión, VP y VN; y que minimice las de FP y FN. La importancia de cada una de estas métricas dependerá del tipo de sistema que se esté considerando. En general en un IDS se priorizará minimizar la tasa de FN frente a la de FP. No obstante, una elevada tasa de falsos positivos puede implicar un exceso de trabajo por parte de los técnicos en seguridad a la hora de comprobar las alarmas. Es por ello que la prioridad relativa de una u otra métrica dependerá también de cómo de crítica es la seguridad del sistema.\\
También debería ser posible, para un mismo algoritmo, modificar su sensibilidad para configurar cuánta desviación respecto al comportamiento normal de la red debe presentar un paquete para generar una alarma. Incluso sería posible crear diferentes tipos de alarma en función del grado de desviación.\\%TODO. Revisar. Este párrafo no tiene por qué incluirse aquí. \\
Finalmente, existe otra métrica a la hora de tener en cuenta si es conveniente aplicar un algoritmo de clasificación a un IDS: el tiempo que tarda el algoritmo en crear un modelo del sistema y, sobre todo, en clasificar los paquetes una vez creado el modelo.\\
\subsection{Dataset a analizar}
\subsection{Algoritmos de ML a considerar}
\subsection{Implementación}
\section{Análisis de los resultados}
\section{Conclusiones y trabajo posterior}
\bibliographystyle{plain}
\begin{thebibliography}{}
\bibitem{paper1} Chih-Fong Tsai, Yu-Feng Hsu, Chia-Ying Lin, Wei-Yang Lin (2009). \textit{Intrusion detection by machine learning: A review}. Elsevier. %TODO eliminar? se usa realmente?
\bibitem{paper2} Syam Akhil Repalle, Venkata Ratnam Kolluru (2017). \textit{Intrusion Detection System using AI and Machine Learning Algorithm}. Koneru Lakshmaiah Educational Foundation, Andhra Pradesh, India.
\bibitem{paper3} Mohammad Almseidin, Maen Alzubi, Szilveszter Kovacs, Mouhammad Alkasassbeh (2017). \textit{Evaluation of Machine Learning Algorithms for Intrusion Detection System}. Mutah University, Amman, Jordan.
\bibitem{stallings} Stallings, W. (2006). \textit{Cryptography and network security principles and practices}. USA: Prentice Hall.