Hola a tod@s! Seguimos con esta entrega dedicada al análisis forense de tramas de Red. En esta entrada nos vamos a centrar en protocolos que no están muy documentados. La gran mayoría de analizadores de red ofrecen soporte a protocolos que están bien documentados y dan parte de soporte o ninguno a protocolos que no están documentados. Este tipo de problemas se pueden dar en algún tipo de investigación forense, y casi seguro que alguno de los lectores se habrá visto en algún caso parecido.
En nuestro caso, vamos a centrarnos en un protocolo que no está muy documentado, pero que es ampliamente utilizado. Es el caso de la mensajería instatánea con Windows Live Messenger y derivados.
Los primeros atisbos de información que nos encontramos, los tenemos en la Web del Internet Engineering Task Force. En dicha Web, mantienen un borrador de un protocolo llamado Messenger Service . Leyendo este documento, tendremos una idea básica de cómo el protocolo de Windows Live Messenger trabaja a la hora de enviar y recibir información.
Más adelante (hablando de tiempo), Webs como Hypotetic.org o MSNPiki documentarían más este protocolo, realizando ingeniería inversa sobre el mismo.
Wireshark implementa un único filtro para filtrar la comunicación a través de Messenger llamado MSNMS. Gracias a este filtro, podremos trabajar sólo con este protocolo.
Al ser un protocolo que envía los mensajes en texto plano, es fácil extraer una conversación de Messenger aplicando como búsqueda la cadena “Text/Plain” en el filtro de búsqueda por paquetes que dispne Wireshark.

Imagen 1.- Extracción conversación Messenger con Wireshark
Herramientas comerciales como MSN-Sniffer, pueden capturar este tráfico y parsearlo directamente a una salida más “humana”.
Lo malo de todo esto, es que no toda la información enviada a través de este cliente de mensajería se envía a través del protocolo MSNMS. El envío de mensajes de Voz, ficheros o vídeo se realiza a través de protocolos comunes como TCP o UDP. Y, en este caso, ni MSN-Sniffer ni ninguna otra herramienta (que yo conozca) es capaz de detectarlo y extraerlo.
En el caso del envío de ficheros a través de Messenger, y leyendo la valiosa información de la Web MSNPiki, nos encontramos con que primeramente se envía un número de identificador único (GUID), el cual se especifica para determinar que lo que se va a transmitir es un fichero. En el mismo paquete, se añade un identificador llamado APPID.

Imagen 2.- Envío de ficheros a través de Messenger
Si se observa con atención este paquete, en el contexto de este campo (AppID), aparecen una serie de caracteres codificados en Base64. Decodificando este texto nos daría el nombre del fichero que se está enviando.

Imagen 3.- Decodificando mensaje Base64
Una vez recibida esta información se empieza con el envío de datos. La transmisión de ficheros a través de Messenger es algo complicada, ya que se pueden enviar a través de TCP o UDP, y, en mi caso, no conozco ninguna herramienta que, a través de un archivo PCAP y en modo Offline, pueda reconstruir los ficheros enviados a través de este cliente de mensajería instantánea. Tanto el señor Maligno como Dani Kachakil tienen muy buenos artículos sobre cómo extraer ficheros enviados a través de Messenger. La idea básica es ir recopilando cada paquete (ya sea TCP o UDP), para después unir todas las tramas y formar el fichero extraído.

Imagen 4.- Follow TCP transmisión de paquetes en Messenger
Como esto se complica cuando se transmiten varios ficheros simultáneamente, nuestro compañero Rodol, de informática64, se curró una herramienta muy chula hace tiempo que realizaba esto mismo. Capturar todos los paquetes transmitidos a través de messenger, para después reconstruir los ficheros realizando un fingerprinting de los mismos.

Imagen 5.- Sniffer de Messenger con funciones de recomposición de ficheros
Esta herramienta, junto con muchas más, las damos en exclusiva a las personas que se apunten a los cursos FTSAI que impartimos en informática64.
Hasta la próxima entrega!








