Analizando tráfico de Red II de III

Estándar

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.

Conversación

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.

Base64FileTransfer

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.

DecodeBase64

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.

followTCP

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.

MessengerSniffer

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!

 

Analizando Tráfico de Red I de III

Estándar

Hola a tod@s!

En esta tanda de 4 artículos nos vamos a entretener en conocer cómo podremos analizar nuestra Red en busca de patrones. El análisis del tráfico de red, junto con su contenido, es esencial para conocer qué uso se le ha dado a la red en un momento determinado.

Imagináos un servidor infectado mediante un exploit lanzado de forma remota. O conocer a ciencia cierta que están robando información confidencial de la empresa. Gracias a la reconstrucción del tráfico de red, es posible que se puedan dar respuesta a un buen número de cuestiones.

Mi amigo Pedro, de Conexión Inversa, tiene un estupendo artículo sobre redes trampa de baja y alta interacción que recomiendo que leáis. Por lo que comentaba en el artículo, parece ser que nos deleitará con más series de éstos, dedicados al análisis forense de la Red.

En mi caso, yo me centraré más en la reconstrucción de ciertos tipos de datos capturados por la red y en última instancia recomendaciones para la automatización en este tipo de tareas.

Para ello, y en mi laboratorio de pruebas, he procedido a capturar tráfico de dos puntos en una LAN y guardarlos en un archivo PCAP. Las siglas PCAP (Packet Capture) corresponden a una API desarrollada para capturar tráfico de una red. En el laboratorio de pruebas, utilizaré el port para Windows WinPcaP. Posteriormente utilizaremos la herramienta Wireshark para la extracción de posibles datos.

Comenzamos!

Algo que puede que nos interese, en lo referente al análisis de la red, es la reconstrucción de la navegación Web, guardado en un determinado fichero de captura PCAP.

Para intentar reconstruir ese tráfico, Wireshark implementa varios filtros con los que podemos jugar. En un principio puede que nos interese todo el tráfico, pero gracias a los filtros, podremos centrarnos en ciertas partes del tráfico que más nos interese.

Para captura Web, Wireshark implementa el filtro HTTP. Gracias a este filtro, podremos extraer prácticamente todos los objetos enviados y recibidos mediante este protocolo.

httpFilter

Imagen 1.- Aplicando filtro http en Wireshark

¿Y cómo podemos extraer datos una vez aplicado este filtro?. Wireshark implementa varias formas de realizarlo con el protocolo HTTP.

Una de ellas es la capacidad de poder exportar un conjunto de bytes, utilizando únicamente para ello el botón derecho del ratón.

ExportDataWireshark

Imagen 2.- Exportar Bytes Wireshark

Otra forma de realizar esta exportación de datos, es utilizando el filtro http.content_type, el cual nos mostrará sólo los paquetes que contengan algún tipo de dato y hayan viajado a través de ese protocolo.

Contenido

Imagen 3.- Filtro http Wireshark

Como podéis observar en la imagen, el tipo de dato o recurso que viaja por HTTP no siempre es texto. De ahí que se deba analizar con cuidado, por si nos encontramos con el lanzamiento de un exploit, un ataque de denegación de servicio, aplicaciones, objetos comprimidos, etc…

Desde hace algún tiempo, Wireshark implementa una forma rápida de agrupar todos los objetos HTTP en una sola ventana, para que así nos resulte más fácil “ver” qué viaja por este protocolo. Para disfrutar de esta característica, debemos ir a File –> Export –> Objects –> HTTP

HTTPObject

Imagen 4.- HTTP Objects List

Otro filtro importante que tenemos a nivel de HTTP, es el filtro HTTP.Date. Este filtro, nos situará exactamente en la cabecera de HTTP que contenga el campo fecha. Esta acción nos puede ser muy útil para realizar un timeline de peticiones y poder reconstruir una sesión de navegación, por ejemplo.

HTTPDate

Imagen 5.- Filtro http.date

Visto lo visto. Wireshark puede reconstruir todo el tráfico de cualquier protocolo?. La respuesta es que NO. Wireshark permite capturar todo tipo de paquetes pero eso no quiere decir que pueda diseccionarlos todos. Existen protocolos que están docuentados o se basan en una RFC, y protocolos para los que no hay apenas documentación pública. Para este tipo de protocolos es en donde entra en juego la ingeniería inversa. En el siguiente artículo nos centraremos en reconstruir datos partiendo de protocolos que Wireshark no es capaz de entender.

Espero que esta primera aproximación al análisis forense de la Red os haya gustado. Hasta la próxima entrega!

Saludetes!

Referencias

http://en.wikipedia.org/wiki/Pcap

http://www.wireshark.org/docs/dfref/h/http.html

http://www.wireshark.org/docs/wsug_html_chunked/ChIOExportSection.html

Altenate Data Streams en Windows Vista III de III

Estándar

Alternate Data Streams en Windows Vista I

Alternate Data Streams en Windows Vista II

En el anterior artículo realizamos pruebas de ADS en Windows Vista y como respuesta deducimos que Windows Vista todavía tiene soporte para forks en su sistema de archivos NTFS. La prueba más fehaciente es la inclusión del parámetro /R en su comando DIR, el cual listará secuencias alternativas de datos en un fichero pasado como argumento.

El soporte, en este caso y bajo este sistema operativo, es limitado en funciones y mantenido a diversos programas locales como por ejemplo el bloc de notas  o la aplicación Paint. Este tipo de soporte, como vimos en el primer artículo, puede cambiar según la política interna de Microsoft con respecto a los forks. La explicación sobre este soporte se puede consultar en el siguiente boletín.

En las pruebas realizadas con ejecutables, nos encontramos con que el comando start, (En primera instancia), ya no soporta forks bajo el sistema operativo Windows Vista, debido a que el explorador de Windows, junto con un filtro llamado Fast I/O, deniegan la ejecución. En su lugar, añaden el parámetro /R al comando DIR para buscar secuencias alternativas.

Esto dejaria a los creadores de Malware en una posición extraña, al no poder usar este método de infección en posibles usuarios que utilicen Windows Vista.

Y digo dejaria, porque Windows Vista, al tener soporte su sistema de archivos a forks, éstos, si son lanzados de determinada manera, se ejecutan sin mayores problemas.

El mayor problema ahora, y según lo que he podido averiguar, reside en el Scripting y en sus motores de ejecución.

Lenguajes como Visual Basic Script, Perl o Python soportan la ejecución de scripts, incluso si están dentro de una secuencia alternativa.

Para ejecutar las pruebas he utilizado un script para cada uno de los motores.

Script en Python

import os                                        #Importamos el módulo OS
ruta = ‘C:\Windows\system32\calc.exe’      #Path de la aplicación
os.system(ruta)                              #Ejecución de la aplicacón

Script en Perl

system(“calc.exe”);

Script en VBS

msgbox(“http://windowstips.wordpress.com“)

Estos scripts, los he introducido en un fichero llamado p0c.txt. En la siguiente imagen se refleja este acto.

dir

Imagen 1.- Secuencias alternativas en un fichero

Para la primera ejecución utilizaré el motor de ejecución de scripts que trae Windows Vista. Este motor de scripts tiene un parámetro por el cual podremos indicarle con qué motor vamos a lanzar el script.

cscript

Imagen 2.- Ejecución de ADS a través motor de Scripting

En la segunda ejecución utilizaré el motor de ejecución de scripts de Python para lanzar un sencillo script que abra la calculadora de Windows.

python

Imagen 3.- Ejecución de ADS a través del motor de Python

En la tercera y última ejecución, utilizaremos el motor de ejecución de scripts de Perl para lanzar otro sencillo script que abra la calculadora de Windows.

perl

Imagen 4.- Ejecución de ADS a través del motor de Perl

Como se puede comprobar, la ventana de propagación de malware a través de esta técnica todavía está vigente en Windows Vista, con lo que tendremos que seguir protegiéndonos de la misma manera con la que nos protegíamos cuando teníamos Windows 2K/XP/2K3.

Saludetes!

Referencias

ADS Qué es y cómo funciona

The Dark Side NTFS