Análisis de tráfico de una captura de paquetes con Wireshark

Hola a todos!!

Bienvenidos a allhacked.com, para mí es un placer haber podido crear esta página web / blog; me ha llevado mucho esfuerzo realizarla, montarla, editarla e intentar que sea robusta y segura (al menos lo he intentado con los conocimientos que tengo).

Este post es el primero, e inaugura allhacked, tengo muchísimos temas pendientes por colgar aquí y lo único que necesito es un poquito de tiempo, que estoy hasta arriba de cosas! 😆. Intentaré hacerlo lo mejor posible de aquí en adelante, espero que os guste. Sin más dilación vamos con el post.

Wireshark no es nada nuevo, todo el mundo lo conoce, pero hoy me gustaría poder enseñaros algunas funcionalidades sobre Wireshark.

Me voy a centrar en un CFT del 2009. Es un puzzle usado para una competición, donde se simula un caso real en el que se ha detectado un comportamiento un tanto sospechoso en algunos empleados. El enunciado es el siguiente:

Enunciado del puzzle.

Nos dan la captura de los paquetes que se han transmitido por la red. Vamos a ver que tal se ve en Wireshark.

Carga de evidence.pcap.

Por si alguien no lo sabe, los diferentes colores que aparecen están para diferenciar el protocolo usado en cada paquete. Estos colores se pueden cambiar a tu gusto en función del protocolo en View -> Coloring Rules.

El enunciado nos dice que la IP de Ann es 192.168.1.158, por lo que, empezaremos por filtrar los paquetes por la IP de Ann.

A priori, no importa si filtramos por Source IP o por Destination IP. Aplicando la expresión ip.dst == 192.168.1.158 o ip.src == 192.168.1.158. Podremos ver que el primer paquete es el nº 23.

Filtrado por la ip de Ann.

En cualquier de los paquetes filtrados damos clic-derecho -> Follow -> TCP Stream, para seguir la trama de mensajes.

Follow stream de los paquetes.

Hasta ahora, se puede ver parte del mensaje en texto plano, pero hace falta adentrarnos un poco más. Según el enunciado Ann se está comunicando por IM (Instant messaging), por lo que probablemente, está usando algún tipo de mensajería instantánea, la cuestión es saber cual. Si buscamos información de Instant messaging podremos ver que las plataformas más populares eran AIM y Windows Live Messenger, por lo que vamos a probar decodificar la trama de mensajes a AIM.

En Analyze -> Decode as, se abrirá la ventana donde especificaremos los siguientes campos.

Decodificación a AIM.

Al aceptar, se actualizará la trama de paquetes. Aparentemente parece haber funcionado la decodificación, por lo que, vamos a intentar averiguar quien es el amigo de Ann.

Buscando entre los paquetes, en el paquete 25 se identifica al usuario que utiliza el amigo de Ann. (Primera pregunta)

Primera pregunta.

En ese mismo paquete, si nos fijamos en el valor del bloque del mensaje, aparece el primer mensaje que ha enviado Ann. (Segunda pregunta)

Segunda pregunta.

En este punto, podemos sospechar cual es el nombre del fichero que Ann ha enviado, pero para asegurarnos, tendremos que localizar el paquete donde se indica expresamente que nombre (y archivo) se ha enviado. Si buscamos información de AIM podemos averiguar que el puerto datos usado para el trafico TCP es el 5190. Usando la expresión tcp.port == 5190 nos filtra los paquetes de la trama. Aunque tenemos todos los paquetes que usan el puerto TCP 5190, solo nos sirve el primero que tenga una longitud de datos mayor que 0, ya que es el que nos puede proporcionar algo de información, esto es, el paquete 112 con Len=256.

Primer paquete de datos.

Mirando con detenimiento los datos del paquete, especifica que el nombre del fichero es “recipe.docx“. Para asegurarnos, vamos a buscar que tipo de cabecera es propia de los archivos con extensión “docx”, es decir, su signature. En Signature Database nos muestra que la cabecera de un docx son 50 4B 03 04 (hex) ó 50 4B 03 04 14 00 06 00 (hex) que corresponde con MS Office Open XML Format Document y MS Office 2007 documents respectivamente y ambos empezando en ASCII por PK (indicativo de este tipo de archivos). Vamos a comprobar que realmente es así; haciendo Follow Stream al paquete en cuestión (112) y mostrando los datos en hexadecimal (Hex Dump) tenemos:

Comienzo de la trama de datos.

Efectivamente, se ha enviado un archivo con nombre recipe.docx (Tercera pregunta) y donde su cabecera es 50 4B 03 04 14 00 06 00 donde los 4 primeros bytes son 50 4B 03 04 (Cuarta pregunta).

Para las dos últimas preguntas, es necesario extraer todos los datos del fichero enviado (para hacer el MD5 y para ver la receta secreta! 😏)

Para ello, tendremos que ubicar el primer paquete y el último de los datos. El primer paquete es donde está la cabecera 50 4B 03 … este paquete es el 119; si nos vamos al final de los datos nos indica que es el paquete 131. Lo siguiente será hacer clic-derecho -> Mark/Unmark packet en ambos paquetes e ir finalmente a File -> Export Specified Packets donde indicaremos “First to last marked” para exportar todos los paquetes de datos.

Exportación de datos.

Una vez exportado todos los datos, lo abrimos de nuevo con Wireshark y hacemos Follow Stream a cualquier paquete. Al mostrarnos los datos, seleccionamos “Show and save data asRAW (es necesario que se guarde como RAW sino, se corromperá el archivo); finalmente guardamos como recipe.docx (importante la extensión) y listo, ya tenemos lo más dificil hecho.

Vista previa de datos en RAW.

Si estamos en Linux usaremos el comando “md5sum” para generar el MD5 del fichero. Si estamos en Windows será necesario descargarnos un complemento de Windows (FCIV) y usaremos el comando “fciv -md5 <fichero>“. El MD5 es: 8350582774E1D4DBE1D61D64C89E0EA1. (Quinta pregunta)

Y lo más importante… tenemos la receta secreta! (Sexta pregunta)

Receta secreta.

¡Hemos completado el puzzle! (Por fin)

PD: Perdonad tantas imágenes, pero quería ser claro.

Espero haberme explicado con claridad y espero que os haya gustado. Nos vemos en el siguiente post! 😉

Happy Hacking!

Comentarios en “Análisis de tráfico de una captura de paquetes con Wireshark

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *