Visualización gráfica de ficheros .pcap con AfterGlow.

Ya vimos en su momento como visualizar, mediante Scapy, nuestros tracerouters mediante la función graph() o el uso de conversations() para una visualización gráfica de las conversaciones o diálogos entre hosts.

Afterglow CSV

En esta ocasión, vamos a estudiar una herramienta para la visualización gráfica de capturas de red usando cualquier ficheros .pcap generado por cualquiera de nuestros sniffer como pueden ser Tshark, TCPDump, Windump, etc . Esta Herramienta es AfterGlow.

AfterGlow.

AfterGlow es una herramienta formada por una serie de scripts de Perl que nos facilita la generación de gráficas a partir de, por ejemplo, un fichero de captura .pcap. Para ello necesitamos tener GraphViz (lo vimos en la serie dedicada a Scapy).

Su funcionamiento es de lo más sencillo. Y para ello, como siempre, que mejor que explicarlo mediante ejemplos:

Usaremos los pipes para «pasar» los datos de las capturas desde el sniffer usado al script.

Tenemos una captura, por ejemplo: captura_ejemplo.pcap tomada desde nuestra máquina.  Un ejemplo muy sencillo aunque poco práctico porque en nuestra red switcheada solo «veremos» nuestro tráfico y el Broadcast. Pero nos servirá para empezar.

NOTA: Todos los ejemplos realizados con BackTrack4.

~/afterglow/src/perl/graph# tshark -r captura_ejemplo.pcap -T fields -E separator=, -e ip.dst -e ip.src | perl afterglow.pl -c color.properties -t > grafica.dot  

  • Estamos usando Tshark como sniffer.
  • -r leemos el fichero .pcap
  • Tal como vimos en el artículo dedicado a Tshark, vamos a usar -T fields para el formateo de datos por campos, -e para especificar los campos que deseamos mostrar y -E separators para establecer un separador entre campos. Todo esto lo vimos aquí: tshark-wireshark-en-linea-de-comandos-ii-parte
  • | pasamos los datos al script afterglow.pl
  • -c color.properties usamos este esquema de color para nuestra gráfica resultante.
  • -t opción para modo dos nodos.
  • > pasamos los datos al un archivo grafica.dot (ahora veremos para que)

Una vez que hemos generado el fichero .dot, invocamos a neato (por eso necesitamos GraphViz) para convertir los datos .dot en un fichero gráfico para poder visualizar:

~/afterglow/src/perl/graph# neato -Tgif -o grafica0.gif ./grafica.dot

El resultado (-o grafica0.gif ) es este:


Afterglow

Otras formas de uso.

Hemos usado Tshark, pero podríamos usar cualquier otro. Vamos a usar el fichero .pcap que utilizamos en el artículo dedicado a VoIP-SIP con tcpdump:

~/afterglow/src/perl/graph# tcpdump -vttttnnel -r sip-rtp-g711.cap | perl tcpdump2csv.pl «sip rtp dport» > captura.csv

En este caso el fichero de salida es un .CSV (apto para visualizar en Excel en Windows por ejemplo) que hemos convertido mediante el script tcpdump2csv.pl:

~/afterglow/src/perl/graph# cat captura.csv | perl afterglow.pl – c color.properties > captura.dot

Pasamos, arriba, los datos .csv a afterglow.pl para generar el fichero .dot

Abajo convertimos el .dot a captura.gif:

~/afterglow/src/perl/graph# neato -Tgif -ocaptura.gif captura.dot

El resultado:


Afterglow

.

El fichero .csv tendría esta pinta:

Afterglow CSV

Un último ejemplo para comprender algunos filtros aplicados  a tcpdump2csv.pl:

~/afterglow/src/perl/graph# tcpdump -vttttnnel -r sip-rtp-g711.cap | perl tcpdump2csv.pl «sip dip dport» > captura.csv

  • sip ip origen
  • dip ip destino
  • dport puerto destino

Seguimos con el resto:

~/afterglow/src/perl/graph# cat captura.csv | perl afterglow.pl – c color.properties > captura.dot

~/afterglow/src/perl/graph# neato -Tgif -ocaptura.gif captura.dot

El resultado:


Afterglow CSV

.

Un Zoom:


Afterglow CSV

.

Conversión del fichero .dot a gráfica.

No solo podemos usar neato, tenemos algunas opciones más:

  • circo
  • dot
  • twopi
  • fdp

Todas estas opciones pertenencen a Graphviz.

Las diferencias las vemos con un ejemplo Misma captura y mismo fichero de salida .dot:

~/afterglow/src/perl/graph# tcpdump -vttttnnel -r captura_ejemplo.pcap | perl tcpdump2csv.pl «sip dip» > captura.csv  

~/afterglow/src/perl/graph# cat captura.csv | perl afterglow.pl -c color.properties -p2 > captura.dot  

~/afterglow/src/perl/graph# neato -Tgif -ocaptura1.gif captura.dot 

y

~/afterglow/src/perl/graph# circo -Tgif -ocaptura1.gif captura.dot 

y

~/afterglow/src/perl/graph# dot -Tgif -ocaptura1.gif captura.dot 

Usando Neato:


Afterglow CSV neato

.

Usando circo:

Afterglow CSV circo

Si usamos dot:

Afterglow CSV dot

============================

.

Seguiremos en otras entregas para ver, es muy facil, como se interprestan los datos de las gráficas.

Esta entrada fue publicada en AfterGlow., Herramientas, Seguridad y redes, Skype, Visualización Gráfica Tráfico red., Windump. TCPDump, Wireshark . Tshark. Guarda el enlace permanente.

5 respuestas a Visualización gráfica de ficheros .pcap con AfterGlow.

  1. Alfon dijo:

    AfterGlow. Veremos como usar esta herramienta en Windows.

  2. renafacci dijo:

    Hola!
    tengo una duda, cómo hago para que usando tshark también se considere el puerto de destino y me lo incluya en el gráfico?
    En el ejemplo que pusiste dice -e ip.src -e ip.dst, cómo agrego algo del estilo «-e port»???
    En el gráfico que pusiste, qué significan los colores? Creo que sería algo como
    -rojo: IP origen
    -amarillo: IP destino
    -azul: qué es?
    Cuando probé esto con tcpdump (considerando IP de origen, IP de destino y puerto de destino)obtengo un gráfico mucho más sencillo que el que obtengo con tshark (solo considerando las IP como lo hiciste tú) ¿A qué se puede deber esto?
    Muy agradecida por tus datos!!! y ojalá me puedas responder mis dudas!!

  3. Alfon dijo:

    Renafacci, sobre los colores, tienes el esquema de colo usado por afterglow en el archivo color.properties:
    color.source=»yellow» if ($fields[0]=~/^192\.168\..*/);
    color.source=»greenyellow» if ($fields[0]=~/^10\..*/);
    color.source=»lightyellow4″ if ($fields[0]=~/^172\.16\..*/);
    color.source=»red»
    color.event=»yellow» if ($fields[1]=~/^192\.168\..*/)
    color.event=»greenyellow» if ($fields[1]=~/^10\..*/)
    color.event=»lightyellow4″ if ($fields[1]=~/^172\.16\..*/)
    color.event=»red»
    color.target=»blue» if ($fields[2]
    Sobre las estádisticas Tshark y puertos, tienes, por ejemplo:
    -e tcp.port y udp.port (para puertos origen o destino tcp-udp) y -e tcp.dst.port y – e tcp.scr.port para especificar origen y destino, también válido para udp.
    saludos,

  4. Great blog! I’ve been looking for some packet visualization made simply. Perhaps you should try writting in English but thanks to Google translator! 😀

  5. Pingback: TNV. Herramienta gráfica de visualización e interpretación de tráfico de red. | Seguridad y Redes

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s