18/4/07

Wireshark 101 - Filtros de Captura parte I

En esta nueva entrega, de Wireshark 101, me gustaría discutir sobre los filtros de captura, un tema de utilidad a la hora de analizar una red.

En Wireshark, existen dos tipos de filtros, de captura que son los que vamos a discutir hoy, y de visualización, que discutiremos en otra oportunidad. Para filtros de captura Wireshark depende de los mecanismos de filtrado provistos en las librerías pcap, por lo que cualquier programa que utilice estas librerías utilizarán el mismo tipo de filtros, uno de los programas más famosos en utilizar estas librerías, es tcpdump, así que como referencia para profundizar sobre los filtros de captura, se puede visitar la página del manual de tcpdump o la documentación de la versión para Windows winpcap.

Para que nos puede servir el filtrado de paquetes?, normalmente lo más sencillo es capturar todo el tráfico y posteriormente utilizar filtros de visualización, para analizar mejor el tráfico, sin embargo, hay diferentes situaciones, en las que los filtros de captura pueden ser de mucha utilidad, por ejemplo si solo estamos interesados en la comunicación entre un cliente y un servidor, podemos eliminar tráfico innecesario y capturar solo lo necesario y relevante, también si estamos utilizando una PC que no es muy potente, en ambientes de altos volúmenes de tráfico, es posible que la pc no sea capaz de capturar todo el tráfico, en estos casos, lo ideal es establecer un filtro de captura para obtener unicamente el tráfico relevante para nuestro análisis. Otra opción es hacer una captura inicial de todo el tráfico y después de un análisis preliminar, utilizar filtros para capturar el tráfico que consideremos relevante para el problema espécifico que se este resolviendo.

Para escribir un filtro, antes de capturar data, desde el menu de wireshark escoger capture, luego options, y se abre la pantalla siguiente:



El filtro de captura, se escribe en el espacio indicado a la par del boton capture filter, si hay un error en la sintaxis del filtro, wireshark indicara un mensaje de error y no iniciara la captura. Dejando este espacio en blanco, se capturara todo el tráfico.

A continuación se detallan los principales comandos con los que se puede filtrar tráfico, lo que se debe escribir en la pantalla, es la parte resaltada con negrilla:


host 192.168.1.1 - Captura tráfico cuyo origen o destino sea la dirección 192.168.1.1

src 192.168.1.1 - Captura todos los paquetes que tienen a 192.168.1.1 como ip de origen.

dst 192.168.1.1 - Captura todos los paquetes que tienen a 192.168.1.1 como ip de destino.

host www.wireshark.org - Captura todos los paquetes que se origina o tienen como destino el host wireshark.org

net 192.168.1.1/24 - Captura todo el tráfico destinado a la subnet 192.168.1.1 con máscara 255.255.255.0, (en este caso, el número después de / depende de la máscara utilizada)

src net 192.168.1.1/24 - Captura todo el tráfico cuyo ip de origen esta en la
subnet 192.168.1.1/24

dst net 192.168.1.1/24 - Captura todo el tráfico cuyo ip de destino pertenece a la
subnet 192.168.1.1/24

También es posible (y en ocaciones bastante útil), realizar capturas basdas en la MAC address, esto con el comando ether, de esta manera el filtro sería

ether host ff:ff:ff:ff:ff:ff - Captura datos desde y hacia la dirección MAC ff:ff:ff:ff:ff:ff

Nuevamente, es posible utilizar ether src o ether dst para definir si unicamente se desea capturar tráfico de origen o de destino.

Si lo que se desea es capturar tráfico destinado a algun puerto especifico, esto puede ser realizado con el comando port, por ejemplo:

port 80 - Captura todo el tráfico udp o tcp cuyo origen o destino es el puerto 80 (http)

tcp port 80 - Captura unicamente el tráfico tcp cuyo origen o destino es el puerto 80

udp port 53 - Captura todo el tráfico udp cuyo origen o destino es el puerto 53 (Este filtro es útil para capturar unicamente el tráfico DNS).

También es posible utilizar src y dst ejm. udp src port 53.

Además es posible realizar las operaciones lógicas not and y or para construir filtros más especificos, a continuación algunos ejemplos

not udp port 53 - Para capturar todo el tráfico excepto UDP

host 192.168.1.1 and tcp port 80 - Capturar todo el tráfico cuyo origen o destino sea el host 192.168.1.1 y el puerto sea el 80 (http)

host 192.168.1.1 or host 192.168.1.2 - Capturar todo el tráfico cuyo origen y destino es el host 192.168.1.1 o el host 192.168.1.2

Estos son los comandos básicos para filtros de captura, aún hay más temas interesante para construir filtros efectivos, los cuales se discutirán en la parte 2, asi que si te interesa este tema, regresa pronto, espero tener lista la segunda parte, en pocos días.

6 comentarios:

Anónimo dijo...

Excelente artículo, me ha sido de mucha utilidad... te felicito

Anónimo dijo...

me sirvio mucho, gracias

Skuarch dijo...

hola esta bueno tu articulo, pero tengo una duda, se puede filtrar para que solo se capture un protocolo, por ejemplo ftp, y solamente ftp

Anónimo dijo...

Buenas,

Esta bueno tu articulo, estoy trabajando con el winpcap, y deseo enviar un paquete al puerto 80 sabes de casualidad como hacerlo?

Envie paquetes con los ejemplos que trae el winpcap y no hace nada, lo que deseo basicamente es que se muestre una pagina el navegador.

Hasta luego y gracias...

jortizdurazo@yahoo.com.mx

Anónimo dijo...

Excelente artículo.
Tengo una poregunta, puede ser que wireshark no vea todo el tráfico porque esté encriptado por ejemplo

Frank dijo...

hola q tal, esta bueno tu blog y queria saber si tienes algun comando el cual pueda encontrar la IP de un dispositivo IP obviamente, en este caso el dispositivo es una camara samsung, y bueno yo tengo un comando q se coloca en la barra filtor q es el siguiente: eth.src[0:3]==00:90, pero solo es para camaras de otra marca. espero me puedas ayudar y a interpretar ese comando q te he dado, gracias.