Wireshark – Captura el tráfico de tu red local

Wireshark es uno de los sniffers de red más conocidos, con él podemos  realizar capturas de tráfico de red y ver qué paquetes están circulando por ella. La principal ventaja de esta clase de herramientas es que analizas directamente las tramas de red enviadas o recibidas y toda la información que contienen los paquetes (al menos los que no estén cifrados :P). Gracias a los filtros de búsqueda podemos encontrar con una serie de expresiones cualquier tipo de paquete que estemos buscando, descartar una ip o buscar específicamente una dirección mac entre otras cosas.
Wireshark es un software multiplataforma, los usuarios de Microsoft Windows podéis descargarlo de este enlace.
Los usuarios de GNU/Linux pueden instalarlo directamente de los repositorios, para buscarlo simplemente tecleamos “sudo apt-cache search wireshark” en nuestra consola. También podemos descargar su código fuente y compilarlo , para abrirlo necesitaremos permisos de administrador.

wireshark-principal

Para comenzar una captura tendremos que seleccionar un interfaz de red de la lista, luego le damos al botón Start para iniciarlo. Ahora, conforme vaya pasando el tráfico por nuestra interfaz de red, wireshark nos lo irá mostrando por pantalla. Vemos una serie de columnas entre las que están la dirección de origen, dirección de destino, protocolo o la longitud del paquete. Podemos hacer click encima del paquete que deseemos para ver debajo más detalles acerca del mismo y su contenido en ascii y hexadecimal.

Wireshark-working

Filtrado de paquetes

Para un uso más eficiente de Wireshark podemos ayudarnos con su filtro, con el cual podremos buscar un paquete entre la enorme cantidad de paquetes que recogeremos con esta herramienta. Su uso se hace prácticamente necesario para dejar a la vista sólo el tráfico que queramos analizar.

filtro-icmp

Podemos filtrar las consultas dns introduciendo “dns” en el filtro:

wireshark-dns-1

El campo de filtro nos irá mostrando sugerencias mientras vamos escribiendo el comando, las separaciones las haremos con un punto, también podremos realizar comparaciones, en el siguiente ejemplo descartamos una ip tanto en origen como en destino:

ip.src != 192.168.56.254 or ip.dst != 192.168.56.254

Esta misma expresión la podemos escribir de otra forma más simple:

ip.addr != 192.168.56.254

También podemos agrupar expresiones con paréntesis y usar las funciones lógicas como en el siguiente ejemplo:

(ip.src != 192.168.56.254) or (ip.src != 192.168.56.1)

En el siguiente ejemplo he capturado una petición post con un password que circulaba en texto plano, para evitar que nuestras passwords sean expuestas de esta forma debemos utilizar el protocolo https que cifrará nuestra conexión.

wireshark-pfsense-pass-http

También podemos buscar un string en concreto, para ello usaremos “contains” de la siguiente forma:

tcp contains stringabuscar

Para quitar tráfico que nos pueda sobrar o tramas que añadan ruido a lo que queremos analizar usaremos un filtro como el siguiente:

!(icmp or arp or dns)

Si queremos capturar el tráfico de un segmento de la red lo haremos con el filtro “net”:

net 192.168.1.0/24

Aunque también podemos escribirlo de la siguiente forma:

net 192.168.1.0 mask 255.255.255.0

Si queremos capturar el tráfico de una máquina en concreto usaremos el filtro “host”:

host 192.168.1.123

Para capturar el tráfico DNS saliente podemos usar el siguiente filtro:

dst port == 53

Podemos encontrar muchos más filtros en la wiki oficial de wireshark.