You are on page 1of 12

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 deteccin del gusano utilizando Wireshark y eso es lo que ha motivado este post, el cual adems de ilustrar los pasos que me permitieron detectar la presencia de actividad anmala en mi laptop, tambin permite ver al Wireshark en accin y el uso de Follow TCP Stream una de las funciones muy tiles para en anlisis de capturas en Wireshark.

Como se describe en el post original a finales de Agosto del 2007 empec a observar un comportamiento extrao en mi laptop (actividad en la tarjeta de red sin tener ninguna conexin a internet abierta), lo que me motivo a ejecutar Wireshark, tratando de encontrar las causas de este comportamiento extrao, prcticamente con solo iniciar la captura pude darme cuenta que algo anmalo estaba ocurriendo, ya que se observo el siguiente trafico.

Lo que se observa en la figura anterior, es el tpico comportamiento de un gusano tratando de encontrar victimas para infectar, la ip 192.168.0.148 es la direccin de la laptop y esta intentando establecer conexin 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 accin 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 configuracin de mi red, ninguna de estas direcciones era alcanzable, de haberlo sido, se podra 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 la intencin de ver el comportamiento desde el momento que se iniciaba la pc, para ello encend la maquina sin conexin a la red, ejecute Wireshark y luego conecte el cable de red, de esta manera pude capturar lo que ocurra 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 infeccin. A continuacin se muestra la siguiente captura.

En esta captura se pueden observar al gusano en accin, los paquetes 3, 6 y 7 corresponden al TCP Hand-shake entre la laptop y la direccin 87.118.110.78 (en adelante la direccin sospechosa), es el procedimiento normal de cualquier conexin TCP, en el paquete 7 la conexin ya esta establecida y a continuacin en el 8 se observa algo inquietante, la laptop hace una peticin http HEAD y en el paquete 13 se observa la peticin http GET, esta tratando de obtener de la direccin sospechosa el archivo gate.exe, esto no suena nada bien, para observar con mayor detalle selecciono el paquete trece y a continuacin 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 aplicacin de la pila TCP/IP en un stream en particular, en este caso estoy interesado precisamente en observar que paso con esta peticin GET (y de paso tener mas detalles de la misma), el resultado del Follow TCP Stream se observa a continuacin.

Lo que puedo deducir de este seguimiento es que la laptop esta tratando de bajar una actualizacin del archivo gate.exe ya que se trata de un GET condicional, otra pista se observa en la cuarta lnea 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 ms en el archivo de captura, encuentro otros GET sospechosos, a continuacin 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 actualizacin de los archivos bbot.exe y psvc.exe, nuevamente aparece la lnea mmsvc32.exe, como en el caso anterior, los archivos ya existen en la pc porque la respuesta es 304 Not Modified. Poco despus 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 continuacin la figura de estos intentos (afortunadamente fallidos) de infectar otro rango de direcciones

Ahora cuento con informacin suficiente para investigar que esta pasando, una bsqueda de bbot.exe en google, me lleva hasta una pagina que me permite concluir que se trata de Nanspy, en la documentacin encontrada se hace referencia a mmsvc32.exe (mm, donde haba odo 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 caractersticas deseadas en un analizador de paquetes, es la capacidad de visualizar los datos de manera grfica, esto es especialmente crtico a la hora de presentar un reporte con los hallazgos de un anlisis a personas cuya especialidad no son las redes. Una grfica puede explicar mucho mejor una situacin que una serie de nmeros sin sentido. En este aspecto, mi opinin, es que Wireshark se queda un poco atrs, analizadores comerciales como el sniffer pro de Network General, tiene muy buenas opciones de grficos 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 anlisis, como para el momento de presentar un reporte sobre los hallazgos. Existen diferentes tipos de grficos en Wireshark, como el flow graph que permite visualizar grficamente el flujo de una conexin tcp/ip (como la muestran en los libros), o el TCP Stream Graph, que cuenta con algunos tipos de grficos orientados ms al anlisis, pero que tambin 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 trfico total que esta pasando por nuestro punto de medicin en un momento dado. Para activar esta grfica, 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 grfica se generara a partir de paquetes previamente capturados.

En la siguiente figura, puede verse el resultado, sobre esta grfica quiero hacer varias observaciones, en primer lugar, como pueden observar, esta el rea de la grfica, 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 grfica como esta ac, se modifico el campo tick interval a 1 Min (el default es 1 seg), en general este parmetro se puede modificar de acuerdo al nivel de detalle que se desea tener. En el caso del eje Y, tambin se modifico la unidad, del default (que es Packets/tick) a Bytes/Tick. En el caso del eje Y, tambin esta una opcin avanzada que permite unas opciones de anlisis ms potentes y que probablemente analizemos en una segunda parte.

Adems de poder ajustar los ejes X y Y, para tener una mejor representacin del trfico, el verdadero potencial de estas grficas, 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 trfico ilustrado en dicha grfica es http, como se puede ver a la derecha de la pantalla, la grfica 2 tiene aplicado el filtro http, los filtros que se utilizan ac, son filtros de visualizacin, aqu http es un filtro muy sencillo, pero en general se pueden utilizar filtros muy elaborados que permitan una mejor comprensin del problema que se esta analizando, para activar el filtro se presiona el botn correspondiente (Graph 2, en este caso) y como se puede ver en la figura, aparece con color rojo el trfico http, la Graph 1, muestra el trfico total en color negro. Se pueden generar hasta 5 grficas, para activar/desactivar una grfica, basta con presionar el botn correspondiente a dicha grfica.

Finalmente menciono el botn Save, este esta disponible a partir de la versin 0.99.7 (la ms reciente, que dicho de paso, si aun no has bajado, hazlo ya, puedes encontrarla en el sitio de wireshark. Esta opcin permite salvar la grfica, en varios formatos grficos, en una prueba que hice me dio un error, pero igual salvo la grfica. Este no es ni por mucho un tutorial avanzado de grficas de Wireshark, el propsito es dar a conocer esta opcin (para aquellos que aun no la conocan), en futuros post se estar haciendo referencias a las grficas IO, por lo que vale la pena conocerlas, por lo dems te animo a experimentar con ellas. Para los que quieren ver aplicaciones de esta grficas en accin, hay un par de recursos interesantes, lamentablemente en Ingles, para los que lo entienden, perfecto, los invito a revisarlos, para los que no, tambin los invito a ver este par de videos, vern que las grficas IO de Wireshark, tienen mucho potencial, estos son videos de Laura Chappel, la fundadora de WiresharkU, as que insisto, vale la pena verlos, a continuacin los enlaces: IO Graphing Advanced IO Graphing Eso es todo por el momento, gracias a los estimados lectores que han permaneci fieles al blog pese a la larga ausencia y espero encontrarlos por ac en futuros posts, como siempre, los comentarios son bienvenidos.

Wireshark 101 - Estadsticas Parte I


Continuando con la serie de post sobre Wireshark, en esta oportunidad me gustara comentar sobre las estadsticas disponibles en Wireshark, estas tienen muchas aplicaciones prcticas 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 estadstica, reservando algunos ms para futuros postst, el primero de ellos es la opcin Protocol Hierarchy y Conversations, ambas disponibles desde el men Statitiscs. La opcin 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 mquina que tenga la capacidad de tener visibilidad en una red WLAN se encontraria un porcentaje diferente.

En el caso ilustrado en esta figura, tambin 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 trfico UDP, desglosando el TCP, se observa que el http ocupa casi el 10% del trfico. Espero que este breve ejemplo sirva para ilustrar el potencial de esta estadstica, para identificar que protocolos son los que ms estn consumiendo el ancho de banda, tambin podramos detectar protocolos que en realidad no deberan estar presentes, por ejemplo si se tiene restriccin sobre algn protocolo especfico, ac se puede detectar con mayor facilidad y observar el impacto que tiene sobre la red. La segunda estadstica a describir en este post, es la de conversations, esta proporciona informacin 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 conversacin es posible ver la cantidad de packetes y byte transmitidos en cada direccin, esto puede ayudar a identificar que hosts son los que estn acaparando ms 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 pequeo triangulo en el campo bytes), con un clic en cualquiera de los campos se ordena en base a ese parmetro, 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 botn de copy, con este se copia el contenido de estadsticas 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 grficas, o hacer un anlisis ms a fondo. Para que las estadsticas tengan sentido, es importante situar a wireshark en una ubicacin que haga sentido y hay que recordar que estas estadsticas sern tiles de acuerdo al contexto de captura, por ejemplo, si nicamente se esta capturando trfico entre dos hosts, la estadstica ser valida para estos dos hosts, si se esta capturando trfico en un enlace de salida, esta estadstica tendr sentido en el contexto del trfico que esta pasando por ese enlace, el mensaje aqu es que hay que interpretar las estadsticas de acuerdo a su contexto. Eso es todo por el momento, en al menos dos post futuros se discutirn ms opciones para analizar estadsticas de la red con Wireshark.

Wireshark 101 - Capturando trfico utilizando una maquina en medio

Una de las claves en el uso de Wireshark, es donde ubicarlo para poder capturar trfico, en el artculo Wirshark 101 Como capturar trfico, 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 mtodos de capturar trfico, en el Wiki de Wireshark se describen algunos ms y en esta oportunidad quisiera profundizar en uno de estos mtodos, capturar trfico, utilizando una maquina en medio (MIM - Machine in the Middle), utilizando la opcin de conexin de puentes (bridging) de Windows XP. Con este mtodo, 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 trfico que pasa a travs 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 comn, deseamos analizar el trfico entre una PC, y un servidor, que estn conectadas a travs de un switch no administrable (o es un switch

administrable, pero no tenemos acceso a configurarlo o no soporta el port mirroring), la primera opcin sera instalar el wireshark en la pc, o en el servidor, pero en muchos casos esto no es posible, en esta situacin, 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

nico requisito es que el switch tenga dos puertos ethernet, en mi caso, prob la configuracin en una laptop con un ethernet integrado, y una tarjeta pcmcia. La configuracin de esta solucin 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 botn 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.

Despus 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 trfico 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 trfico que pasa de una tarjeta a otra, en otras palabras, el trfico 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 opcin eliminar). La opcin de conexiones de puentes, esta disponible en Windows XP y Windows 2003, supongo que tambin en Windows Vista, pero no he tenido la oportunidad de verificarlo, si deseas conocer ms sobre esta opcin y diferentes usos prcticos para una red casera, puedes consultarlo directamente en el sitio de Microsoft.

Wireshark 101 - Filtros de visualizacin 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 visualizacin (display filters), estos son los filtros que nos sirven para analizar el trfico capturado, y son diferentes a los filtros de captura, en este caso, los filtros de visualizacin son ms amplios y ms potentes, incluso son ms fciles de aplicar, y son de mucha utilidad, para analizar el trfico capturado. En esta primera parte, quisiera mencionar los aspectos bsicos de los filtros de visualizacin, 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 visualizacin Wireshark nos proporciona una retroalimentacin visual, si la expresin de filtrado que escribimos es correcta, el rea se colorea en verde (como el caso del filtro ilustrado en la figura previa) si la expresin 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 visualizacin, hay bsquedas 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 aplicacin 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. 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 visualizacin 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 visualizacin para poder encontrar justo ese paquete que estamos buscando.

Wireshark 101 - Filtros de Visualizacin Parte II


Como se menciono en la parte I, los filtros de visualizacin son muchsimos, sin embargo existen muchas facilidad para poder construir filtros muy potentes, y encontrar esos paquetes sospechosos o que nos estn 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 fcil de determinar que filtros se pueden aplicar para un campo especfico dentro de un paquete, como habrn notado, la pantalla principal de Wireshark consta de tres reas, en la parte superior, estn los paquetes capturados, con informacin sobre el tiempo, el origen, destino, protocolo y una lnea con informacin bsica 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 quisiramos determinar, que pginas web se han accesado utilizando el mtodo GET de http, como lo muestra la figura a continuacin se tiene seleccionado el paquete No 7, que muestra la peticin de una pgina web con el mtodo 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 porcin del paquete, en este caso se ve que el filtro apropiado sera http.request.method y nos indica que es de 3 bytes.

As que ahora podramos aplicar el filtro http.request.method == GET y obtendramos todas las peticiones http de pginas web, utilizando el mtodo GET.

Una forma alterna de llegar al mismo resultado, es utilizando el botn Expression que aparece a la derecha del rea para escribir el filtro de visualizacin, al hacerlo nos abre una pantalla enl a que se pueden construir expresiones de filtrado, a continuacin 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 expresin 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 ms 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 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 visualizacin, 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 ms especificas y podremos realizar anlisis ms efectivos.

You might also like