nanspy worm analizado con wireshark

15
Nanspy Worm analizado con Wireshark Los lectores mas fieles del blog recordaran que en septiembre del 2007 , mi laptop fue infectada por el gusano Nanspy, un usuario me pidió colocar algunas pantallas del proceso de detección del gusano utilizando Wireshark y eso es lo que ha motivado este post, el cual además de ilustrar los pasos que me permitieron detectar la presencia de actividad anómala en mi laptop, también permite ver al Wireshark en acción y el uso de Follow TCP Stream una de las funciones muy útiles para en análisis de capturas en Wireshark. Como se describe en el post original a finales de Agosto del 2007 empecé a observar un comportamiento extraño en mi laptop (actividad en la tarjeta de red sin tener ninguna conexión a internet abierta), lo que me motivo a ejecutar Wireshark, tratando de encontrar las causas de este comportamiento extraño, prácticamente con solo iniciar la captura pude darme cuenta que algo anómalo estaba ocurriendo, ya que se observo el siguiente trafico. Lo que se observa en la figura anterior, es el típico comportamiento de un gusano tratando de encontrar victimas para infectar, la ip 192.168.0.148 es la dirección de la laptop y esta intentando establecer conexión con otros host que pertenecen al mismo rango (asumiendo que la mascara es 255.255.0.0), como se puede observar en la columna info, la laptop esta enviando paquetes con el bit SYN activado, en TCP es la primera acción para establecer contacto con el host de destino, algo mas que se observa en esta figura es que estos intentos son hacia el puerto 135, por la

Upload: gelman-mijail-cerda-urbina

Post on 24-Jul-2015

111 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Nanspy Worm Analizado Con Wireshark

Nanspy Worm analizado con Wireshark Los lectores mas fieles del blog recordaran que en septiembre del 2007, mi laptop fue

infectada por el gusano Nanspy, un usuario me pidió colocar algunas pantallas del

proceso de detección del gusano utilizando Wireshark y eso es lo que ha motivado este

post, el cual además de ilustrar los pasos que me permitieron detectar la presencia de

actividad anómala en mi laptop, también permite ver al Wireshark en acción y el uso de

Follow TCP Stream una de las funciones muy útiles para en análisis de capturas en

Wireshark.

Como se describe en el post original a finales de Agosto del 2007 empecé a observar un

comportamiento extraño en mi laptop (actividad en la tarjeta de red sin tener ninguna

conexión a internet abierta), lo que me motivo a ejecutar Wireshark, tratando de

encontrar las causas de este comportamiento extraño, prácticamente con solo iniciar la

captura pude darme cuenta que algo anómalo estaba ocurriendo, ya que se observo el

siguiente trafico.

Lo que se observa en la figura anterior, es el típico comportamiento de un gusano tratando de encontrar victimas para infectar, la ip 192.168.0.148 es la dirección de la laptop y esta intentando establecer conexión con otros host que pertenecen al mismo rango (asumiendo que la mascara es 255.255.0.0), como se puede observar en la columna info, la laptop esta enviando paquetes con el bit SYN activado, en TCP es la primera acción para establecer contacto con el host de destino, algo mas que se observa en esta figura es que estos intentos son hacia el puerto 135, por la configuración de mi red, ninguna de estas direcciones era alcanzable, de haberlo sido, se podría haber observado los siguientes pasos del gusano para tratar de infectar a otros hosts. Si esta hubiera sido una red corporativa, la probabilidad de infectar otros hosts hubiera sido muy alta, digo, si infecto a una maquina es muy probable que haya muchas maquinas mas vulnerables en la red. Habiendo visto esto, sabia que la maquina estaba infectada, en un tiempo posterior realice una nueva captura, pero esta vez con

Page 2: Nanspy Worm Analizado Con Wireshark

la intención de ver el comportamiento desde el momento que se iniciaba la pc, para ello encendí la maquina sin conexión a la red, ejecute Wireshark y luego conecte el cable de red, de esta manera pude capturar lo que ocurría desde el inicio, vale recordar que esta pc ya estaba infectada, es decir lo que aquí esta ilustrado es el comportamiento de la maquina infectada no el proceso de infección. A continuación se muestra la siguiente captura.

En esta captura se pueden observar al gusano en acción, los paquetes 3, 6 y 7 corresponden al TCP Hand-shake entre la laptop y la dirección 87.118.110.78 (en adelante la dirección sospechosa), es el procedimiento normal de cualquier conexión TCP, en el paquete 7 la conexión ya esta establecida y a continuación en el 8 se observa algo inquietante, la laptop hace una petición http HEAD y en el paquete 13 se observa la petición http GET, esta tratando de obtener de la dirección sospechosa el archivo gate.exe, esto no suena nada bien, para observar con mayor detalle selecciono el paquete trece y a continuación en el menú de Wireshark selecciono Analyze Follow TCP Stream, con este comando se despliega la data que finalmente es observable por la capa de aplicación de la pila TCP/IP en un stream en particular, en este caso estoy interesado precisamente en observar que paso con esta petición GET (y de paso tener mas detalles de la misma), el resultado del Follow TCP Stream se observa a continuación.

Page 3: Nanspy Worm Analizado Con Wireshark

Lo que puedo deducir de este seguimiento es que la laptop esta tratando de bajar una actualización del archivo gate.exe ya que se trata de un GET condicional, otra pista se observa en la cuarta línea donde se ve User-Agent: mmsvc32.exe, finalmente observo que mi maquina ya tiene instalado este archivo, porque la respuesta al GET fue un HTTP/1.1 304 Not Modified, que es gate.exe y mmsvc32.exe, en estos momentos no tengo ni idea, hay que seguir investigando. Bajando un poco más en el archivo de captura, encuentro otros GET sospechosos, a continuación esta la figura que muestra el resultado de ejecutar nuevamente Follow TCP Stream sobre los paquetes que muestran nuevas peticiones GET.

Aquí se observa algo muy similar, nuevamente la laptop reviso para ver si hay alguna actualización de los archivos bbot.exe y psvc.exe, nuevamente aparece la línea mmsvc32.exe, como en el caso anterior, los archivos ya existen en la pc porque la respuesta es 304 Not Modified. Poco después de estas interacciones, la laptop inicia nuevamente un SYN Scan, solo que esta vez ya no es sobre un rango de direcciones locales sino un rango de direcciones publicas, mmm, este gusano en realidad esta tratando de propagarse, a continuación la figura de estos intentos (afortunadamente fallidos) de infectar otro rango de direcciones

Page 4: Nanspy Worm Analizado Con Wireshark

Ahora cuento con información suficiente para investigar que esta pasando, una búsqueda de bbot.exe en google, me lleva hasta una pagina que me permite concluir que se trata de Nanspy, en la documentación encontrada se hace referencia a mmsvc32.exe (mm, donde había oído de este archivo?, por supuesto, lo vi en Wireshark), mi maquina esta infectada!. Esta fue la forma como utilice Wireshark para encontrar que estaba pasando con mi maquina, tal vez no sea la mejor manera, pero me sirvió, si observas un escaneo SYN como el de la figura reciente, investiga mas a fondo, lo mas seguro es que un gusano infecto tu PC.

Una de las características deseadas en un analizador de paquetes, es la capacidad de

visualizar los datos de manera gráfica, esto es especialmente crítico a la hora de

presentar un reporte con los hallazgos de un análisis a personas cuya especialidad no

son las redes. Una gráfica puede explicar mucho mejor una situación que una serie de

números sin sentido.

En este aspecto, mi opinión, es que Wireshark se queda un poco atrás, analizadores

comerciales como el sniffer pro de Network General, tiene muy buenas opciones de

Page 5: Nanspy Worm Analizado Con Wireshark

gráficos para generar reportes que se ven muy bien y que dicen mucho, sin embargo,

las opciones para graficar que tiene Wireshark, si bien no son muy vistosas, si son útiles

y vale la pena echarles un vistazo ya que pueden ayudar, tanto para el análisis, como

para el momento de presentar un reporte sobre los hallazgos.

Existen diferentes tipos de gráficos en Wireshark, como el flow graph que permite

visualizar gráficamente el flujo de una conexión tcp/ip (como la muestran en los libros),

o el TCP Stream Graph, que cuenta con algunos tipos de gráficos orientados más al

análisis, pero que también pueden ser utilizados para reportes, sin embargo, en esta

oportunidad, como el titulo lo indica, nos concentraremos en las graficas de entrada y

salida (IO Graphs), estas nos permiten visualizar, el tráfico total que esta pasando por

nuestro punto de medición en un momento dado.

Para activar esta gráfica, es necesario ir al menú statistics -> IO Graphs, como lo

muestra la figura abajo, esto por supuesto una vez que hemos realizado una captura, es

decir, la gráfica se generara a partir de paquetes previamente capturados.

En la siguiente figura, puede verse el resultado, sobre esta gráfica quiero hacer varias

observaciones, en primer lugar, como pueden observar, esta el área de la gráfica, en

esta en el eje x se muestra el tiempo, en este caso, la captura fue por

aproximadamente dos horas, por lo que para ver la gráfica como esta acá, se modifico

el campo tick interval a 1 Min (el default es 1 seg), en general este parámetro se puede

modificar de acuerdo al nivel de detalle que se desea tener. En el caso del eje Y,

también se modifico la unidad, del default (que es Packets/tick) a Bytes/Tick. En el caso

del eje Y, también esta una opción avanzada que permite unas opciones de análisis más

potentes y que probablemente analizemos en una segunda parte.

Page 6: Nanspy Worm Analizado Con Wireshark

Además de poder ajustar los ejes X y Y, para tener una mejor representación del tráfico, el verdadero potencial de estas gráficas, esta en la posibilidad de aplicar filtros, por ejemplo en el caso ilustrado en la figura anterior, se ha aplicado un filtro para ver cuanto del tráfico ilustrado en dicha gráfica es http, como se puede ver a la derecha de la pantalla, la gráfica 2 tiene aplicado el filtro http, los filtros que se utilizan acá, son filtros de visualización, aquí http es un filtro muy sencillo, pero en general se pueden utilizar filtros muy elaborados que permitan una mejor comprensión del problema que se esta analizando, para activar el filtro se presiona el botón correspondiente (Graph 2, en este caso) y como se puede ver en la figura, aparece con color rojo el tráfico http, la Graph 1, muestra el tráfico total en color negro. Se pueden generar hasta 5 gráficas, para activar/desactivar una gráfica, basta con presionar el botón correspondiente a dicha gráfica.

Finalmente menciono el botón Save, este esta disponible a partir de la versión 0.99.7 (la más reciente, que dicho de paso, si aun no has bajado, hazlo ya, puedes encontrarla en el sitio de wireshark. Esta opción permite salvar la gráfica, en varios formatos gráficos, en una prueba que hice me dio un error, pero igual salvo la gráfica.

Este no es ni por mucho un tutorial avanzado de gráficas de Wireshark, el propósito es dar a conocer esta opción (para aquellos que aun no la conocían), en futuros post se estará haciendo referencias a las gráficas IO, por lo que vale la pena conocerlas, por lo demás te animo a experimentar con ellas.

Para los que quieren ver aplicaciones de esta gráficas en acción, hay un par de recursos interesantes, lamentablemente en Ingles, para los que lo entienden, perfecto, los invito a revisarlos, para los que no, también los invito a ver este par de videos, verán que las gráficas IO de Wireshark, tienen mucho potencial, estos son videos de Laura Chappel, la fundadora de WiresharkU, así que insisto, vale la pena verlos, a continuación los enlaces:

IO Graphing

Advanced IO Graphing

Eso es todo por el momento, gracias a los estimados lectores que han permaneció fieles

Page 7: Nanspy Worm Analizado Con Wireshark

al blog pese a la larga ausencia y espero encontrarlos por acá en futuros posts, como siempre, los comentarios son bienvenidos.

Wireshark 101 - Estadísticas Parte I

Continuando con la serie de post sobre Wireshark, en esta oportunidad me gustaría

comentar sobre las estadísticas disponibles en Wireshark, estas tienen muchas

aplicaciones prácticas para conocer por ejemplo que protocolos hay presentes en la red,

o que hosts son los que estan consumiendo el mayor ancho de banda.

En esta primera parte, se describen dos tipos de estadística, reservando algunos más

para futuros postst, el primero de ellos es la opción Protocol Hierarchy y

Conversations, ambas disponibles desde el menú Statitiscs.

La opción de Protocol Hierarchy despliega todos los protocolos detectados en la captura,

indicando el porcentaje encontrado de cada uno, por ejemplo en la figura abajo,

muestra que para esta captura en particular, el 100% del trafico es ethernet, lo cual no

es de sorprender ya que ethernet es el protocolo dominante, aunque si se captura con

una máquina que tenga la capacidad de tener visibilidad en una red WLAN se

encontraria un porcentaje diferente.

En el caso ilustrado en esta figura, también se puede ver que el protocolo dominante es

IP con el 97.3%, el otro 0.3% corresponde a ARP (no mostrado en la figura). En el

siguiente nivel, el protocolo dominante es el TCP con 94.87%, el resto es tráfico UDP,

desglosando el TCP, se observa que el http ocupa casi el 10% del tráfico.

Page 8: Nanspy Worm Analizado Con Wireshark

Espero que este breve ejemplo sirva para ilustrar el potencial de esta estadística, para

identificar que protocolos son los que más están consumiendo el ancho de banda,

también podríamos detectar protocolos que en realidad no deberían estar presentes,

por ejemplo si se tiene restricción sobre algún protocolo específico, acá se puede

detectar con mayor facilidad y observar el impacto que tiene sobre la red.

La segunda estadística a describir en este post, es la de conversations, esta proporciona

información sobre las conversaciones presentes en la red, con quien se esta

comunicando cada host, en el caso especifico ilustrado se puede observar que se

detectaron 25 conversaciones ethernet, 197 conversaciones ipv4, 1141 conversaciones

tcp y 779 conversaciones udp.

En el ejemplo ilustrado se pueden ver las conversaciones de ipv4, para cada

conversación es posible ver la cantidad de packetes y byte transmitidos en cada

dirección, esto puede ayudar a identificar que hosts son los que están acaparando más

el ancho de banda, es posible ordenar en orden ascendente o descendente, en este

caso, se ordeno por la mayor cantidad de bytes (observar el pequeño triangulo en el

campo bytes), con un clic en cualquiera de los campos se ordena en base a ese

parámetro, otro click en ese mismo campo invierte el orden, por ejemplo otro click en

bytes, ordenara en forma ascendente.

En la parte inferior aparece un botón de copy, con este se copia el contenido de

estadísticas y se puede pegar en un documento de texto con todos los valores

separados por comas, por lo que posteriormente es posible abrir el archivo en excel o

en cualquier hoja de calculo, para genera gráficas, o hacer un análisis más a fondo.

Para que las estadísticas tengan sentido, es importante situar a wireshark en una

ubicación que haga sentido y hay que recordar que estas estadísticas serán útiles de

acuerdo al contexto de captura, por ejemplo, si únicamente se esta capturando tráfico

entre dos hosts, la estadística será valida para estos dos hosts, si se esta capturando

tráfico en un enlace de salida, esta estadística tendrá sentido en el contexto del tráfico

que esta pasando por ese enlace, el mensaje aquí es que hay que interpretar las

estadísticas de acuerdo a su contexto.

Page 9: Nanspy Worm Analizado Con Wireshark

Eso es todo por el momento, en al menos dos post futuros se discutirán más opciones

para analizar estadísticas de la red con Wireshark.

Wireshark 101 - Capturando tráfico utilizando una maquina en medio

Una de las claves en el uso de Wireshark, es donde ubicarlo para poder capturar tráfico,

en el artículo Wirshark 101 – Como capturar tráfico, se describen tres opciones

dependiendo de lo que se tenga disponible, un hub, un switch administrable o un

network tap.

Los anteriores, no son los únicos métodos de capturar tráfico, en el Wiki de Wireshark

se describen algunos más y en esta oportunidad quisiera profundizar en uno de estos

métodos, capturar tráfico, utilizando una maquina en medio (MIM - Machine in the

Middle), utilizando la opción de conexión de puentes (bridging) de Windows XP.

Con este método, una laptop con dos tarjetas de red, se convierte en un puente

(bridge), o en otras palabras en un switch de dos puertos, y podremos ver el tráfico que

pasa a través de cada tarjeta, y capturarlo con Wireshark, este escenario esta ilustrado

en la siguiente figura.

En la figura anterior, en a, se ilustra un escenario muy común, deseamos analizar el

tráfico entre una PC, y un servidor, que están conectadas a través de un switch no

administrable (o es un switch administrable, pero no tenemos acceso a configurarlo o

no soporta el port mirroring), la primera opción sería instalar el wireshark en la pc, o en

el servidor, pero en muchos casos esto no es posible, en esta situación, podemos

utilizar las conexiones de puente de XP, en una laptop con dos tarjetas de red, en este

caso, la laptop se convierte esencialmente en un switch de dos puertos, el

Page 10: Nanspy Worm Analizado Con Wireshark

único requisito es que el switch tenga dos puertos ethernet, en mi caso, probé la

configuración en una laptop con un ethernet integrado, y una tarjeta pcmcia.

La configuración de esta solución es bastante sencilla, se ingresa a conexiones de red,

se seleccionan las dos tarjetas con las que se hará el puente, se da un click con el botón

derecho y en el menú emergente, se selecciona, conexiones de puentes (o bridge

connections si el OS está en ingles), al dar este click aparece el siguiente mensaje.

Después de unos segundos, nuestro puente esta listo, y lo podemos comprobar ya que

en conexiones de red, muestra un nuevo elemento, como se ilustra en la siguiente

figura.

Finalmente, debemos configura wireshark para poder capturar el tráfico en esta

interface virtual, en las opciones de captura de wireshark, el puente aparece como una

interface adicional, en la siguiente figura, la interface del puente es la marcada como

Microsoft MAC Bridge Virtual NIC, capturando en modo promiscuo con esta interface, se

podrá ver el tráfico que pasa de una tarjeta a otra, en otras palabras, el tráfico que

queremos capturar.

Luego de la captura, podemos desactivar el puente, (click derecho sobre el icono del

puente en conexiones de red y click en desactivar), o eliminarlo definitivamente (click

derecho y luego la opción eliminar).

La opción de conexiones de puentes, esta disponible en Windows XP y Windows 2003,

supongo que también en Windows Vista, pero no he tenido la oportunidad de verificarlo,

si deseas conocer más sobre esta opción y diferentes usos prácticos para una red

casera, puedes consultarlo directamente en el sitio de Microsoft.

Wireshark 101 - Filtros de visualización Parte I Es tiempo de reanudar el tutorial sobre Wireshark, el silencio de las ultimas semanas ha

sido por cuestiones de trabajo, si bien no puedo prometer actualizaciones tan

frecuentes, al menos voy a hacer mi mejor esfuerzo.

En esta oportunidad es el turno de los filtros de visualización (display filters), estos son

los filtros que nos sirven para analizar el tráfico capturado, y son diferentes a los filtros

Page 11: Nanspy Worm Analizado Con Wireshark

de captura, en este caso, los filtros de visualización son más amplios y más potentes,

incluso son más fáciles de aplicar, y son de mucha utilidad, para analizar el tráfico

capturado.

En esta primera parte, quisiera mencionar los aspectos básicos de los filtros de

visualización, empezando por el área donde podemos escribir un filtro, esto se ilustra en

la siguiente figura:

Como puede verse en la figura, el área para escribir un filtro de captura es la ubicada

abajo de la barra de herramientas. Para los filtros de visualización Wireshark nos

proporciona una retroalimentación visual, si la expresión de filtrado que escribimos es

correcta, el área se colorea en verde (como el caso del filtro ilustrado en la figura

previa) si la expresión es incorrecta, el área se colorea en rojo, y al tratar de aplicarlo

obtendremos un mensaje de error.

Los operadores que podemos utilizar para construir expresiones de filtro son los

siguientes:

> ó gt Mayor que

< ó lt Menor que >= ó ge Mayor o igual que

<= ó le Menor o igual que == ó eq Igual a != ó ne No igual a Hay otro par de

operadores, contains y matches que los reservaremos para otra oportunidad.

Dicho lo anterior, solo nos resta empezar a escribir filtros de visualización, hay

búsquedas que pueden ser muy sencillas y similares a los filtros de captura, por

ejemplo:

arp - Para visualizar todos los paquetes de arp

http - Para visualizar paquetes cuyo protocolo de aplicación es http

tcp - Para visualizar todos los paquetes tcp

udp - Para visualizar todos los paquetes udp

icmp - Para visualizar paquetes icmp por ejemplo paquetes de ping.

Page 12: Nanspy Worm Analizado Con Wireshark

Si lo que deseamos es filtrar direcciones especificas podemos utilizar los siguientes

filtros:

ip.addr == 192.168.0.1 - Buscar paquetes cuyo ip de origen o destino es 192.168.0.1

ip.src == 192.168.01 - Buscar paquetes cuyo ip de origen es 192.168.0.1

tcp.port == 80 - Buscar paquetes tcp cuyo puerto de origen o destino es el 80

tcp.srcport == 80 - Buscar paquetes tcp cuyo puerto de origen es el 80

Los filtros de visualización son muchos, así que no tiene mucho sentido listarlos, sin

embargo en la segunda parte vamos a estudiar como facilitarnos la vida al escribir

filtros de visualización para poder encontrar justo ese paquete que estamos buscando.

Wireshark 101 - Filtros de Visualización Parte II Como se menciono en la parte I, los filtros de visualización son muchísimos, sin

embargo existen muchas facilidad para poder construir filtros muy potentes, y

encontrar esos paquetes sospechosos o que nos están generando problemas en la red.

En esta parte, se describen algunas opciones que nos proporciona Wireshark, que nos

facilitan mucho construir filtros.

Existe una manera muy fácil de determinar que filtros se pueden aplicar para un campo

específico dentro de un paquete, como habrán notado, la pantalla principal de

Wireshark consta de tres áreas, en la parte superior, están los paquetes capturados, con

información sobre el tiempo, el origen, destino, protocolo y una línea con información

básica del paquete, cuando un paquete se selecciona en la parte superior, en la parte

media se muestra el detalle de los protocolos presentes y en la parte inferior, se

muestran los valores hexadecimales contenidos en el paquete.

Supongamos que quisiéramos determinar, que páginas web se han accesado utilizando

el método GET de http, como lo muestra la figura a continuación se tiene seleccionado

el paquete No 7, que muestra la petición de una página web con el método GET.

Desglosando el protocolo http en la parte media de la pantalla, se observa como parte

del paquete el "Request Method", al seleccionar esto, se observa en la parte inferior

izquierda de la pantalla de Wireshark (que he resaltado con un ovalo para facilidad), se

observa el filtro que reconoce Wireshark para esta porción del paquete, en este caso se

ve que el filtro apropiado sería http.request.method y nos indica que es de 3 bytes.

Page 13: Nanspy Worm Analizado Con Wireshark

Así que ahora podríamos aplicar el filtro http.request.method == GET y obtendríamos

todas las peticiones http de páginas web, utilizando el método GET.

Una forma alterna de llegar al mismo resultado, es utilizando el botón Expression que

aparece a la derecha del área para escribir el filtro de visualización, al hacerlo nos abre

una pantalla enl a que se pueden construir expresiones de filtrado, a continuación se

muestra esta pantalla.

En el área izquierda aparece el Field Name, es un listado bastante grande, pero si

sabemos que protocolo estamos buscando, se facilita encontrar lo que queremos, por

ejemplo en este caso, escribiendo http me desplego este listado donde pude seleccionar

http.request.method, al tener esto seleccionado, en la columna Relation aparecen todas

las expresiones disponibles para este campo especifico, finalmente en la parte derecha

se puede escribir el valor del filtro, en este caso en la columna de enmedio seleccione

== y en la derecha escribi el valor GET, con esto obtenemos la expresión de filtrao

http.request.method == GET, luego dar un clic en OK, y al regresar a la pantalla

principal, dar un clic en Apply para aplicar el filtro.

Como en el caso de los filtros de captura, es posible guardar las expresiones más

utilizadas, esto se puede hacer dando un clic en el boton Filter ubicado a la izquierda

del área donde se escribe el filtro, por ejemplo si tenemos aplicado el filtro anterior, y

deseamos guardarlo, unicamente dar un clic en Filter, poner un nombre al filtro, en el

Page 14: Nanspy Worm Analizado Con Wireshark

campo filter string ya debe aparecer el filtro que tenemos aplicado, un clic en Apply y

listo.

Así que de esta manera sencilla podemos construir filtros de visualización, como lo he

mencionado en oportunidades anteriores, en realidad el potencial de Wireshark solo lo

vamos a poder aprovechar en la medida que estemos familiarizados con los protocolos,

ya que al conocer las interioridades de cada protocolo, nos ayudara a construir

expresiones de filtrado más especificas y podremos realizar análisis más efectivos.