Ya en algunos posts anteriores hemos insistido en lo útil que puede resultar visualizar los datos para entender el comportamiento de un código malicioso; de hecho, hemos visualizado capturas de tráfico de botnets utilizando OpenGraphiti. Hoy vamos a utilizar las funciones para graficar capturas de tráfico que tiene Wireshark.
Si bien Wireshark es una de las herramientas más comunes para análisis de tráfico de red mediante el uso de filtros detectar alguna actividad maliciosa, existen otras herramientas parecidas como Dhshell o CapTipper que tienen funcionalidades similares. Pero lo interesante es esta serie de opciones para análisis gráficos en Wireshark, para a partir de un rápido vistazo detectar el comportamiento detrás de la captura de tráfico.
En este caso vamos a utilizar dos capturas de tráfico diferentes relacionadas con un código malicioso del tipo botnet: una del sistema infectado y otra del sistema utilizado como C&C. Vale la pena recordar que se trata de una red de equipos infectados por códigos maliciosos y que pueden ser controlados remotamente por un atacante y sin que el usuario se percate de esto.
Comportamiento del lado del atacante
Dentro de las opciones de Wireshark podemos encontrar la opción de hacer un gráfico de flujo, es decir, una representación de la interacción entre las direcciones IP en una captura de tráfico. Cada dirección tiene un eje vertical y las flechas horizontales indican el tipo y la dirección de los paquetes intercambiados.
En la siguiente imagen graficamos la captura de tráfico realizada desde una máquina comprometida y utilizada como C&C de una botnet.
De la inspección visual del gráfico anterior, vemos cómo de una serie de direcciones IP diferentes se hacen peticiones TCP a una misma dirección IP que corresponde con la dirección del equipo utilizado como C&C. En este caso si el tráfico de red corresponde a un equipo que no tendría por qué recibir peticiones de equipos externos, puede ser una señal para detectar un comportamiento que podría resultar sospechoso.
Lo que pasa en el equipo de la víctima
Ahora, si se utiliza el mismo gráfico anterior pero para visualizar el tráfico de un equipo zombi, encontramos que el comportamiento es bastante diferente. La siguiente imagen es una porción de la captura de red de un equipo infectado con Dorkbot.
En un período de tiempo similar al caso anterior y a pesar de que hay más ejes paralelos, es decir más direcciones IP con las que se conecta, vemos cómo la mayoría se concentra con una sola. Si bien la anterior imagen es solo una porción, es fácilmente identificable entre cuáles direcciones IP hay una mayor cantidad de conexiones.
Además del gráfico anterior, también es posible hacer una línea de tiempo para ver la cantidad de paquetes intercambiados. La siguiente imagen realizada con la opción IO Graph de Wireshark muestra el tráfico del equipo infectado con Dorkbot, en donde la línea negra corresponde a la cantidad de paquetes que pasan por el equipo host. Es importante tener en cuenta que el eje vertical utiliza una escala logarítmica para facilitar visualizar la cantidad de paquetes en cada unidad de tiempo.
Las barras azules corresponden a la cantidad de paquetes que vienen desde la dirección IP del C&C y las barras violetas a la cantidad de paquetes que salen desde el equipo infectado hacia el C&C. Con este análisis, ratificamos lo que mencionamos en el gráfico anterior: que la mayoría del tráfico es entre dos equipos.
Independientemente de la herramienta que utilicemos para identificar patrones maliciosos en las capturas de tráfico, es importante tener en cuenta que un análisis visual puede servirnos como una primera aproximación para enfocar la búsqueda de información más específica dentro de la captura de tráfico completa.
Créditos imagen: ©U.S. Fish and Wildlife Service Headquarters/Flickr