Desde el Laboratorio de ESET Latinoamérica las muestras son analizadas con el fin de obtener información sobre su comportamiento. El análisis dinámico de red se realiza en gran parte con Wireshark y brinda información en cuanto a las conexiones que se llevan a cabo.

¿Qué es Wireshark?

Wireshark es una herramienta multiplataforma utilizada para realizar análisis sobre paquetes de red. La utilización de esta herramienta puede parecer de gran complejidad en un principio, pero es de gran utilidad una vez conocida su interfaz y su forma de operar. Existen diferentes usos para los cuales puede aplicarse Wireshark. Dentro del análisis dinámico de códigos maliciosos se la utiliza para detectar conexiones ocultas del propio malware con direcciones remotas para obtener otros archivos, para reportarse a un panel de control en caso de una botnet, entre otras variantes.

En primera instancia, para realizar un análisis dinámico de un código malicioso se procede a infectar un sistema en un entorno controlado. Por lo general, se recurre a una máquina virtual. De esta forma, es posible ejecutar Wireshark y seleccionar la interfaz de red de la máquina virtual para comenzar a capturar los paquetes de red. A continuación puede visualizarse una captura de cómo se realiza la mencionada tarea:

Interfaz de red

Utilización de filtros

Una vez iniciada la captura es posible filtrar los paquetes capturados de acuerdo a la necesidad de quien esté analizando el malware. Como primer tarea, es posible reconocer a que servidores se conectó a través de las peticiones DNS. Para observarlo con más comodidad es posible aplicar un filtro. Específicamente, si se escribe DNS en el campo de los filtros y se lo aplica, serán visibles todas las resoluciones de nombres en direcciones IP. En el caso del malware, permite reconocer con que servidores se conecta. A continuación puede observarse una captura:

Filtro DNS

Otro aspecto a tener en cuenta son las peticiones realizadas. Aplicando el filtro "http.request" es posible obtener todos los GET y POST que fueron realizados durante el periodo de captura. Este tipo de peticiones es muy utilizado por los códigos maliciosos, incluso para enviar información sobre el sistema infectado. A continuación, puede observarse una captura de un análisis real sobre un malware que obtiene datos y archivos desde un servidor remoto:

Request GET

Un caso particular han sido aquellos códigos maliciosos que utilizan el protocolo SMTP para propagarse a través de correo electrónico. En estos casos es posible visualizar dichos paquetes a través del filtro SMTP o incluso es posible filtrar los paquetes para observar, por ejemplo, el remitente del correo. Esto se realiza a través del filtro "smtp.req.parameter && contains "FROM"". De la misma forma, es posible visualizar aquellos paquetes que contienen el cuerpo del mensaje. Esta tarea puede realizarse a través de filtro "smtp.data.fragment". A continuación puede visualizarse una captura con uno de los filtros aplicado:

Mail From

Es importante resaltar que los filtros explicados anteriormente no son los únicos. Existen una gran variedad para aplicar de acuerdo a la necesidad. Otro punto a tener en cuenta es que a medida que se obtienen los paquetes de acuerdo al filtro aplicado, es posible obtener toda la secuencia del paquete completo si es necesario. Para ello, solo es necesario colocar el cursor sobre el propio paquete y en el menú contextual elegir la opción de “follow tcp stream”. De esa forma se podrá visualizar el paquete completo tal como se muestra en la siguiente imagen:

Follow TCP stream

Los filtros son de gran utilidad y pueden ser aplicados en conjunto como parte de operaciones lógicas. Pueden utilizarse sobre la captura o especificarse previamente para que solo capturen lo especificado en el propio filtro. Este tipo de herramientas no solo es utilizado en el análisis de malware sino también en el estudio de protocolos de red, la búsqueda de vulnerabilidades y demás aplicaciones.

Fernando Catoira
Analista de Seguridad