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.
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:
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:
.
El fichero .csv tendría esta pinta:

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:
.
Un Zoom:
.
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:
.
Usando circo:
Si usamos dot:
============================
.
Seguiremos en otras entregas para ver, es muy facil, como se interprestan los datos de las gráficas.
AfterGlow. Veremos como usar esta herramienta en Windows.
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!!
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,
Great blog! I’ve been looking for some packet visualization made simply. Perhaps you should try writting in English but thanks to Google translator! 😀
Pingback: TNV. Herramienta gráfica de visualización e interpretación de tráfico de red. | Seguridad y Redes