TCPDUMP: Filtros avanzados de tráfico

Publicado por Diego Córdoba en

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:

tcpdump [opciones] [patrones]

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:
tcpdump -nn -i eth0 -vv port 80
  • Todos los paquetes que no contengan el puerto 80 en el header de transporte:
tcpdump -nn -i eth0 -vv not port 80
  • Todos los paquetes cuyo puerto de transporte no esté en el rango 50-150:
tcpdump -nn -i eth0 -vv not portrange 50-150
  • Todos los paquetes cuyo host origen en el header de red sea 192.168.2.10:
tcpdump -nn -i eth0 -vv src host 192.168.2.10
  • Todos los paquetes cuyo host destino en el header de red sea 192.168.2.10:
tcpdump -nn -i eth0 -vv dst host 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:
tcpdump -nn -i eth0 -vv host 192.168.2.10
  • Todos los paquetes que no sea destinado ni originado en el host 192.168.2.10:
tcpdump -nn -i eth0 -vv not 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:
tcpdump -nn -i eth0 -vv host 192.168.2.1 and port 443
  • Todos los paquetes cuyo tamaño sea mayor a 850 bytes:
tcpdump -nn -i eth0 -vv greater 850
# esta opción equivale a "len >=850"
  • Todos los paquetes cuyo tamaño sea menor a 850 bytes:
tcpdump -nn -i eth0 -vv less 850
# esta opción equivale a "len <=850"
  • Todos los paquetes cuyo tamaño sea mayor a 850 bytes, y originados en 192.168.2.10:
tcpdump -nn -i eth0 -vv less 850 and src host 192.168.2.10
  • Todos los paquetes con un tamaño en el rango de 500B y 1200B:
tcpdump -nn -i eth0 -vv greater 500 and less 1200
  • 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.
tcpdump -nn -i eth0 -vv greater 100 and (src host google.com or src host microsoft.com)

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 🙂

man tcpdump
man 7 pcap-filter

¡Espero que haya sido de utilidad!

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

¡Hasta la próxima!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador