TCPDUMP: Filtros avanzados de tráfico

En un post anterior hemtcpdump-logoos hablado sobre tcpdump y sus características, y mencionábamos varios modificadores del comando para seleccionar interfaces de red para las capturas, y diversas opciones de formatear la salida.

Hoy les comentaré de algunos filtros de tráfico para poder seleccionar solo los paquetes que nos interesen.
La sintaxis básica del comando recordemos que es la siguiente:

Algunas de las opciones más utilizadas las hemos analizado en el post previo. Los patrones Cb_ts_sniffing_advanced.033.1.1hacen referencia a las expresiones que podemos utilizar para filtrar algunas tramas mediante parámetros particulares de la misma. Por ejemplo, podremos filtrar solo aquellos paquetes ip que contengan una determinada dirección, tanto en el campo de ip origen, como en el de destino, o en ambos, o por ejemplo, que NO contenga determinada ip.

O por ejemplo, filtrar por puerto en capa de transporte, o rangos de puertos. Cuando hablamos de direcciones ip, también podemos filtrar por direcciones de redes completas, o subredes, especificando las máscaras de red.

Además, los patrones pueden especificar combinaciones complejas de tráfico, por ejemplo, paquetes que contengan XX dirección IP en el campo de ip origen, y puerto YY destino.

Algunos ejemplos de pcap-filter en tcpdump

Veamos algunos ejemplos para ilustrar las capturas:

  • Todos lospaquetes con el puerto 80 en origen o destino:

  • Todos los paquetes que no contengan el puerto 80 en el header de transporte:

  • Todos los paquetes cuyo puerto de transporte no esté en el rango 50-150:

  • Todos los paquetes cuyo host origen en el header de red sea 192.168.2.10:

  • Todos los paquetes cuyo host destino en el header de red sea 192.168.2.10:

  • Todos los paquetes cuyo host en el header de red sea 192.168.2.10, tanto en origen como en destino:

  • Todos los paquetes que no sea destinado ni originado en el host 192.168.2.10:

  • Todos los paquetes con origen o destino al host 192.168.2.10 y el puerto 443 en origen o destino:

  • Todos los paquetes cuyo tamaño sea mayor a 850 bytes:

  • Todos los paquetes cuyo tamaño sea menor a 850 bytes:

  • Todos los paquetes cuyo tamaño sea mayor a 850 bytes, y originados en 192.168.2.10:

  • Todos los paquetes con un tamaño en el rango de 500B y 1200B:

  • Todos los paquetes de mas de 100B cuyo origen sea o google.com.ar o microsoft.com (note el backslash para escapar los paréntesis que obligan a analizar el OR antes que el AND):
    NOTA: en este caso tcpdump resolverá los nombres de dominio en el momento de lanzar el comando, y solamente nos mostrará los paquetes relacionados con dichas direcciones ip. Esto posibilitaría que sigan pasando paquetes hacia google o microsoft que no veamos en tcpdump puesto que estos dominios resuelven a varias direcciones ip diferentes, y solo consideraremos una en la captura de tcpdump.

Video-tutorial

Les dejo un video-tutorial en el que intento explicar estos conceptos y prácticas, espero les resulte ameno!

Estas son algunas de las tantas opciones que tcpdump nos brinda a la hora de filtrar contenido de tráfico de red.

A estas cabe sumarle ip, ip6, arp, rarp, ether, ether proto, llc type, wlan, mpls, vlan id, y una serie de operadores relacionales como >, <, >=, <=, =,  != mas una serie de operaciones aritméticas expresadas en sintaxis C estándar.

Ya en otro artículo ampliaremos algunos parámetros más avanzados… si quieres saber más, no dudes en visitar las páginas de manual 🙂

¡Espero que haya sido de utilidad!

Los invito a compartir si les resultó interesante. ¡Muchas gracias!

¡Hasta la próxima!