viernes, julio 31, 2015

Obtener estadísticas de capturas de red con tshark

Aparte de la interfaz gráfica, el analizador de protocolos Wireshark tiene una versión que funciona desde la línea de comandos,similar a tcpdump. Una funcionalidad interesante es la posibilidad de obtener estadísticas de las capturas para su posterior análisis a través de la opción -z. Para poder probar las opciones, se puede usar los pcaps de ejemplo smallFlows.pcap y bigFlows.pcap que tienen los autores del tcpreplay colgado en sus páginas.

Puede consultarse todas las estadísticas disponibles en la página de manual de tshark o ejecutando la orden tshask -z help. Estas estadísticas se pueden obtener tanto de una captura en tiempo real como de un fichero con una captura que se haya grabado previamente. Si sólo se está interesando en las estadísticas, la opción -q hace que tshark no vuelque la información de los paquetes. La estadísticas se muestran ordenas en función del número de tramas que coinciden con el criterio de filtrado que se ha aplicado.

Analizar los flujos de una captura

Supongamos que se quiere saber el número de flujos TCP que tiene una captura determinada. Usando como ejemplo smallFlows.pcap, el comando para obtener esa información sería:

baldurgate:~ terron$tshark -q -z conv,tcp -r smallFlows.pcap

tshark mostrará una tabla con cada una de los flujos, el número de paquetes y bytes en cada sentido, los bytes totales que ha registrado, cuando empieza el flujo en la captura y su duración:


tshark -q -z conv,tcp -r smallFlows.pcap

Para ver los flujos que existen a nivel ethernet se puede usar la siguiente orden
baldurgate:~ terron$tshark -q -z conv,eth -r smallFlows.pcap


tshark -q -z conv,eth -r smallFlows.pcap

Exiten varios filtros que permiten analizar los flujos eth (ethernet), fc (fiber channel), fddi, ip, ipx (el viejo protocolo de Novell), sctp (stream control transmision protocol, tcp,tr (token ring) y udp.

Opcionalmente, a la opción conv se le puede especificar un filtro para poder seleccionar aquellos paquetes que interesen. Por ejemplo, si sólo se quisiera sacar las estadísticas de aquellos flujos que usen los puertos 80 o 443, se puede usar el filtro tcp.port == 80 or tcp.port == 443

baldurgate:~ terron$tshark -z conv,tcp,"tcp.port == 80 or tcp.port == 443" -r smallFlows.pcap

Resumen de protocolos

Con la opción -z io,phs se puede extraer los protocolos que existen en una determinada captura y ver sus estadísticas, mostrando cada uno de los protocolos encapsulados en las tramas, desde la capa de enlace que se tenga. Usando el mismo ejemplo smallFlows.pcap y con el siguiente comando:

baldurgate:~ terron$tshark -r smallFlows.pcap -q -z io,phs


tshark -r smallFlows.pcap -q -z io,phs

Como en el caso anterior, también se puede especificar un filtro que nos seleccione los paquetes. Por ejemplo, si sólo se desea los paquetes arp se puede usar el el filtro "arp", con lo cual la opción sería -z -z io,phs,arp, mientras si sólo se deseara capturar el tráfico http y dns se puede usar -z io,phs,"http or dns"1

Obtención de información de http

tshark tiene algunas estadísticas que permiten obtener información sobre el uso de http. Con la opción -z http,stat,2 se mostrará el resumen de los métodos que hay en las peticiones que se han enviado, pero sólo los métodos que han hecho peticiones. Si se quiere tener la estadística de todas las peticiones y las respuestas se puede usar el filtro -z http,tree. Un ejemplo de la salida de este comando se puede ver en la siguiente captura de pantalla

baldurgate:~ terron$tshark -r smallFlows.pcap -q -z "http,tree"


tshark -r smallFlows.pcap -q -z "http,tree"

Si se quiere, se puede obtener información de http por dirección IP y cada uno de los hosts virtuales que están en la misma. Para ello se usa la opción -z http_srv,tree cuya salida está agrupada por dirección IP y host virtual sobre la misma. También da el número de peticiones por cliente

baldurgate:~ terron$tshark -r smallFlows.pcap -q -z http_srv,tree

tshark -r smallFlows.pcap -q -z http_srv,tree

Resumen

tshark proporciona a través de la opción -z diversas estadísticas para los protocolos más usados que pueden ser de utilidad a la hora de analizar una captura de red. Consultando la página de manual de la utilidad están disponobles todos las estadísiticas posibles.

Notas

  1. Curiosamente, al usar este filtro en el caso de la versión de tshark que estoy usando, 1.12.6, me saca información de ICMP
  2. Ojo, hay que poner la coma al final.

No hay comentarios: