Dado que las botnets son una de las amenazas preferidas por los ciberdelincuentes para afectar usuarios, muchas de las tareas que realizamos en nuestro Laboratorio de Investigación tienen que ver con entender qué es lo que este tipo de amenaza está haciendo en el equipo y cómo lo logra.
El problema con este tipo de códigos maliciosos es que cada vez son más complejos en su estructura, en la cantidad de C&C que contactan y en general en la variedad de componentes utilizados para lograr el objetivo malicioso. Esta complejidad se ve reflejada en el uso de varias capas de servidores, múltiples descargas de otros códigos maliciosos, reportes simultáneos a diferentes C&C e incluso muchas veces nos encontramos con que se trata de botnets rentadas a diferentes actores por determinados períodos de tiempo para realizar algún tipo de actividad maliciosa.
Con el objetivo de lograr entender el funcionamiento de estas amenazas, Sebastían García, Investigador de la Czech Technical University presentó durante la pasada Virus Bulletin Internacional Conference realizada en Praga una herramienta para modelizar el comportamiento de una botnet. Stratosphere IPS Project es una herramienta de software libre que utiliza técnicas de machine learning para detectar y bloquear comportamientos maliciosos en el tráfico de red.
Más allá de poner en funcionamiento la herramienta, es importante entender los modelos implementados en ella, ya que son la base para una correcta implementación e incluso sirven de base para realizar un modelo propio.
Dentro del presentado para entender el comportamiento de una botnet, hay un primer componente que lo modeliza a partir de la captura del tráfico de red. Este modelo parte de un archivo pcap y con el uso de ARGUS se convierte en un archivo de flujo bidireccional que servirá de base para el modelo. La segunda parte se basa en el uso de cadenas de Markov para obtener un método de identificación y detección de una botnet.
Vamos a explicar con un poco más de detalle todo esto.
Construyendo el modelo de comportamiento de una botnet
La construcción de este modelo se basa en tres características diferentes extraídas del archivo de flujo que arroja ARGUS. Dos de estas características son la cantidad de bytes transmitidos por flujo y la duración de cada uno de estos. Una de las características de las botnets es que una vez que tienen un equipo infectado o zombi, el C&C se comunica periódicamente para enviar o recibir información, y es precisamente el cálculo de este período el tercer dato utilizado en el modelo.
El cálculo de esta tercer característica se hace a partir de la diferencia entre la ocurrencia de dos intercambios de datos entre dos direcciones IP diferentes. Dependiendo de la botnet que se esté analizando, estos períodos pueden ir desde minutos hasta horas.
El siguiente paso es discretizar cada una de las características. Por ejemplo, en el caso del período, se evalúa si el comportamiento es altamente periódico, débilmente periódico o no tiene lo es; además, puede darse el caso de que no se tengan los suficientes datos para evaluar esta característica, por lo tanto serían cuatro categorías diferentes. En el caso del tamaño y la duración se asignan tres categorías diferentes a cada característica. Combinando estas diferentes categorías nos da en total de 36 estados posibles.
Cada uno de esos estados se evalúa en el archivo de ARGUS para aquellos flujos que tengan la misma dirección IP de origen y destino, el mismo puerto e igual protocolo utilizado. De esta manera se obtiene una descripción para cada uno de los estados de una comunicación entre un equipo infectado y un centro de comando y control.
A partir de este modelo de comportamiento se pueden identificar patrones que describan el comportamiento de una botnet y que se pueda utilizar para comparar con patrones desconocidos, y determinar su similitud con un comportamiento malicioso.
Método de detección de botnets
Con la información obtenida del modelo de comportamiento se puede identificar si un determinado comportamiento observado en una captura de red particular corresponde al comportamiento de una botnet. Para esto se utiliza un modelo basado en cadenas de Márkov, un proceso estocástico en el que la probabilidad de que ocurra un evento depende solamente del evento inmediatamente anterior.
En este caso, se asocia al hecho que cada familia de códigos maliciosos va a tener un comportamiento particular dependiendo del objetivo perseguido, que puede ser robo de información, monitoreo de actividades, envío de spam o muchas otras actividades maliciosas.
A partir de la obtención de un modelo de un código malicioso conocido, se puede utilizar para compararlo con el comportamiento de otras amenazas. Si bien es muy probable que no se obtenga un 100% de coincidencia entre dos amenazas diferentes, si es posible con un margen de incertidumbre aceptable llegar a clasificar e identificar cuándo el tráfico de una red contiene actividad de una botnet específica.
Este tipo de análisis resulta ser bastante interesante para lograr el entendimiento del funcionamiento de una botnet. Los invitamos a revisar esta poderosa herramienta de análisis a partir de la cual se pueden obtener resultados que ayuden con la identificación de este tipo de amenazas.