Redes más seguras con Machine Learning: Una prueba de concepto

lunes, 17 de julio de 2017

Las tecnologías de Machine Learning (ML) pueden aportar (y aportan) mucho valor al mundo de la seguridad. Una de las aplicaciones directas conocidas de estas técnicas es la detección de anomalías de tráfico de red. Hacen referencia a comportamientos no esperables de acuerdo al funcionamiento habitual de la red. Por ejemplo, situaciones en las que se genere gran cantidad de tráfico repentino o muy diferente al habitual. El arte de estas técnicas consiste precisamente en determinar qué es diferente, habitual y disponer de los mecanismos adecuados para detectarlo. En el gráfico se puede ver un ejemplo simple en el que se representa el número de flujos recibidos en un determinado momento. En rojo se señalan picos que representan anomalías en el tráfico de la red.



En la detección de anomalías en general se distingue entre dos enfoques.
  • El basado en firmas se centra en buscar patrones de ataques conocidos. Una de las desventajas de este enfoque es que sólo detectaría los ya definidos con firmas, lo que obviamente limita la capacidad de detección de nuevos ataques. 
  • Por otro lado, la detección de anomalías en general define el comportamiento normal y considera anomalías todo aquello que se desvíe lo suficiente de este comportamiento. Esto permite solventar las limitaciones referentes a la detección de nuevos ataques que presentaba el enfoque anterior, aunque resulte más propenso a falsos positivos como contraprestación.

Por sus características, los algoritmos de ML pueden ayudar en el proceso de detección de anomalías. La idea es que permitan detectar de forma automática aquellos comportamientos que un experto calificaría como anómalos en el comportamiento de la red. Para ilustrar este proceso se muestra en esta entrada de una forma práctica y sencilla de qué manera se pueden aplicar los algoritmos de ML para la detección de anomalías en red.

Netflow

Para el ejemplo en particular, se trabaja con Netflow, que es un protocolo de red desarrollado por Cisco (1996) y que extrae estadísticas sobre el tráfico. La versión 9 de este protocolo viene recogida en el RFC 3954. Algunos de los campos más destacados incluyen la fecha y hora de comienzo y finalización del flujo, dirección IP de origen y destino, puerto origen y destino, tipo de protocolo, flags, bytes y paquetes de entrada y salida, entre otros. Dadas las grandes cantidades de tráfico que pueden circular por la red, Netflow puede ser útil para dar visibilidad sobre lo que está sucediendo en la red. Un sistema recolector de este tipo de tráfico consta de tres componentes principales:
  • Exportador (probe): Agrega los paquetes en flujos y los exporta a uno o más colectores.
  • Colector: Recibe, almacena y preprocesa los flujos recibidos.
  • Analizador: Analiza la información de los flujos según el propósito.
Paralelamente, de forma muy general, la aplicación de ML se puede traducir en tres etapas: la recolección de datos, la aplicación de los algoritmos de ML (data science) y el análisis de los resultados.

A continuación, y a modo de introducción se explica uno de estos casos concretos basados en la prueba de concepto creada en colaboración con la unidad de LUCA y seguridad en redes. Este fue el ejemplo básico mostrado en un Talk titulado precisamente: Redes más seguras con Machine Learning y el área de MSS y Network Security.



Recolección de datos

Para aplicar los algoritmos de ML es fundamental contar con un buen conjunto de datos sobre el que aplicar el aparataje matemático de los algoritmos. Para ello es necesario recolectar tanto tráfico normal como anómalo. Obtener buenos conjuntos de datos etiquetados no es sencillo. Existen algunos conjuntos de datos disponibles, y estos conjuntos pueden ser útiles para realizar pruebas, pero en determinados casos pero suelen tener algunas limitaciones, como por ejemplo ser tráfico simulado o sintético, no encontrarse actualizados, etc.

En este caso hemos generado nuestro propio tráfico limpio o libre de anomalías, montando un entorno muy simple como el que se ve en la figura, en el que mediante un port mirror del switch se hace llegar al netflow probe el tráfico del que queremos generar las estadísticas. El tráfico Netflow se envía a una máquina en Amazon donde se encuentra el colector y desde donde posteriormente se realizarán los procesos de data science y ML.


En un entorno en el que el colector se sitúe en la misma máquina que el probe, esto se puede llevar a cabo con los siguientes comandos:

De esta forma se obtienen los ficheros CSV que contienen los valores para los diferentes campos de Netflow correspondientes al tráfico normal de la red.

Para recolectar el tráfico con las anomalías, en nuestro caso nos hemos centrado en el malware para representar anomalías en red. El malware hoy en día, en su inmensa mayoría y en sus diferentes fases, generará tráfico particular que es susceptible de ser estudiado. En este caso, y como simple prueba de concepto, se han tomado ejemplos de http://www.malware-traffic-analysis.net que, aunque con las obvias restricciones puede suponer un buen punto de partida. Para el ejemplo concreto mostrado en este vídeo demostrativo, se ha seleccionado esta muestra de impacto en el tráfico durante una infección por exploit kit "pseudoDarkleech Rig-V sends Cerber ransomware".

En la figura se pueden ver algunos paquetes correspondientes al tráfico generado durante la infección. A partir de la línea 730 el comportamiento no sigue los patrones de tráfico habituales en una red. Se pueden observar paquetes UDP que en un breve intervalo de tiempo (menos de 2 segundos) proceden de una misma IP de origen y que se dirige a diferentes (y en muchos casos consecutivas) IP de destino públicas. Además, los puertos origen y destino son fijos.

Basándonos en esta simple observación se define una característica que cuenta el número de flujos en un intervalo de tiempo de 5 segundos que desde una misma IP origen se conectan a diferentes IP destino públicas, con tráfico de un determinado protocolo y usando un cierto puerto destino. De esta manera traducimos los datos de Netflow a valores numéricos que pueda entender el algoritmo. Lo que se espera es que para el tráfico normal este valor sea bajo y se consideran anomalías aquellos que tengan valores altos. Esto se trata tan solo de un simple ejemplo y se podrían definir más características. De hecho, definir características acertadas (además de la adecuada elección del dataset) es el arte que puede llevar a que los algoritmos de aprendizaje sirvan realmente en el mundo real.

Data science y aplicación de los algoritmos de ML

El proceso de data science es fundamental. La manipulación de los datos tiene un gran impacto en los resultados, por lo que es una etapa a la que debe de prestarse la atención necesaria. A partir de los datos de Netflow se realiza la extracción de características para los algoritmos de ML, es decir, convertir los datos en valores que el algoritmo pueda entender. Como trabajamos en un enfoque de anomalías, lo que se persigue es que las características definan cuál es el comportamiento normal del tráfico y por tanto, lo que se desvíe de ahí se considera anómalo. Como se ha mencionado, el conocimiento de los expertos es vital en esta etapa, para definir cuáles son las características que permiten distinguir entre los comportamientos normales y anómalos en la red.

Los algoritmos se suelen dividir entre supervisados o no supervisados, en función de si se tiene la información o no de si los datos son satisfactorios para el objetivo de aprendizaje (los datos están etiquetados o no). Se pueden usar redes neuronales, árboles de decisión, SVM, redes bayesianas, etc. Isolation Forest es un algoritmo no supervisado que se puede aplicar para detección de anomalías. Trabaja con varios árboles de decisión binarios. Resumiendo su funcionamiento, iría seleccionando características de modo aleatorio y eligiendo también aleatoriamente valores de las variables (entre el valor mínimo de la variable y el máximo) para particionar el espacio de búsqueda y generar ramas del árbol de decisión. De este modo, se categorizan como anomalías aquellas instancias que tienen menor profundidad en el árbol (menor longitud de la hoja a la raíz), puesto que se asume que las anomalías son más fáciles de aislar mediante el particionamiento recursivo del dataset. Más detalles se pueden concentrar en este estudio.

En este ejemplo se puede ver el proceso de particionado recursivo y construcción del árbol de decisión.



En ésta página  se pueden ver más explicaciones de cómo funciona éste algoritmo.

Análisis de los resultados

En ElevenPaths hemos montado una prueba de concepto sencilla que lleve estos conceptos a la práctica. Utilizando el ejemplo y la característica mencionada, se aplica el algoritmo Isolation Forest. En particular éste se ha instanciado para usar 100 árboles con un máximo de 256 muestras y se establece el valor del parámetro contamination a 0,0001. Este parámetro establece el umbral que determina qué se considera anomalía. El algoritmo devuelve un 1 en caso de que el flujo se considere normal y -1 si se considera anómalo.

Aplicando esto se ve que es posible detectar el malware, que ha obtenido un valor de 320 en la característica que cuenta el número de flujos y que sobresale como un valor fuera de lo normal. Sin embargo, existen otros flujos que eran normales y que el algoritmo considera anómalos; se trata de falsos positivos. Los resultados obtenidos (medidos entre 0 y 1) son 0.99 para los flujos normales caracterizados como tal y 0.0001 falsos positivos, lo que supone una tasa aceptable si esta prueba se realizara a otra escala.

Carmen Torrano
carmen.torrano@11paths.com
Innovación y Laboratorio 
en colaboración con el área de MSS & Network Security

1 comentario: