Wireshark

Introducción

A finales del año 1997 Gerald Combs inició un proyecto como una forma de resolver problemas de red y avanzar en su carrera. Durante el desarrollo, varias personas se unieron al proyecto, contribuyendo con parches, informes de errores y otros componentes. En el año 2006, el proyecto cambió de nombre a Wireshark.

La versión 1.0 de la herramienta fue lanzada en 2008 después de años de desarrollo,  y en 2015 lanzó su versión 2.0 con una nueva interfaz de usuario.

Actualmente se encuentra en la versión 4.0.3 donde se corrigen bugs y vulnerabilidades y se actualiza el soporte a algunos protocolos. Esta versión está disponible y soportada para equipos con arquitectura x64. La última versión soportada para equipos Windows x32 es la 3.6.

Wireshark es ampliamente utilizado por administradores de red y analistas de red, así como por profesionales de la seguridad de la información.

Funcionalidad

Wireshark es un software de análisis de red que ayuda a los administradores de sistemas y de red a detectar y solucionar problemas en su red. Algunas de las funcionalidades o uso que se le puede dar a la herramienta son:

  • Identificar paquetes caídos.
  • Identificar problemas de latencia.
  • Identificar actividad maliciosa en la red.
  • Identificar mala configuración de los equipos.
  • Enseñar y verificar el funcionamiento de los protocolos (funcionalidad didáctica).

Por otro lado, ofrece herramientas y comandos para filtrar y analizar con más detalle el tráfico de red, permitiendo llegar a la causa raíz del problema. Es por tanto, una herramienta poderosa que requiere un conocimiento sólido de los conceptos de redes, incluyendo protocolos y servicios, la pila TCP/IP, encabezados de paquetes, enrutamiento y reenvío de puertos, y DHCP.

Uso del cibercriminal

Como vemos es una herramienta muy útil que puede ayudar, sin embargo, la tecnología no es buena ni mala sino que depende del uso que le dé la persona. Es decir, existen personas y grupo de personas que le dan otro uso: un uso malicioso. Los cibercriminales usan esta herramienta para capturar el tráfico de la red intentando conseguir información confidencial como usuarios o contraseñas, o incluso muchas veces, para grabar llamadas o conversaciones telefónicas. La técnica habitual es situarse en WiFis gratuitas para capturar todo el tráfico esperando que un usuario introduzca usuario, contraseña , datos bancarios, etc , en servicios donde la información viaje sin cifrar, como por ejemplo en sitios que ejecuten HTTP. ¿Entiendes ahora por qué se intenta no usar ya este servicio y la importancia de no acceder a sitios sensibles si estás usando una red gratuita pública?

Para grabar las llamadas telefónicas, el ciberdelincuente tiene que tener acceso a la red empresarial y sniffar (capturar) el tráfico SIP, RDP, etc. WireShark ofrece una funcionalidad específica que permite hacer eso de modo automático.

Filtros

Los filtros de Wireshark sirven para simplificar la búsqueda de paquetes. Es decir, si quieres ver sólo el tráfico TCP o los paquetes de una dirección IP concreta, tienes que aplicar los filtros adecuados en la barra de filtros.

Wireshark contempla dos tipos de Filtros: filtros de captura y filtros de visualización. El primero de ellos, se aplica antes de la operación de captura, sin poder modificarse después. La función es que se visualicen sólo los paquetes que cumplen los requisitos del filtro. Por otro lado, el segundo ellos, se utilizan después del inicio de la operación de captura y sirve para mostrar un criterio sobre los paquetes capturados, la captura se almacena realmente en un búfer de rastreo. A diferencia del primero se puede cancelar y cambiar posteriormente.

Sintaxis de los filtros y ejemplos de filtros de captura

Podemos combinar las primitivas de los filtros de la siguiente forma:

  • Negación: ! ó not
  • Unión o Concatenación: && ó and
  • Alternancia: || ó or

Filtros generales

SintaxisSignificado
host hostFiltrar por host
src host hostCapturar por host origen
dst host hostCapturar por host destino
 Ejemplos
host 197.163.1.50Captura todos los paquetes con origen y destino 197.163.1.50
src host 197.163.1.50Captura todos los paquetes con origen en host 197.163.1.50
dst host 197.163.1.50Captura todos los paquetes con destino en host 197.163.1.50
dst host SERVER-1Captura todos los paquetes con destino en host SERVER-1
host http://www.hackrocks.comCaptura todos los paquetes con origen y destino http://www.hackrocks.com

Filtros basados en puertos

SintaxisSignificado
port portCaptura todos los paquetes con puerto origen y destino port
src port portCaptura todos los paquetes con puerto origen port
dst port portCaptura todos los paquetes con puerto destino port
not port portCaptura todos los paquetes excepto origen y destino puerto port
not port port and not port port1Captura todos los paquetes excepto origen y destino puertos port y port1
  Ejemplos
port 23Captura todos los paquetes con puerto origen y destino 23
src port 24Captura todos los paquetes con puerto origen 24
not port 25 and not port 80Captura todos los paquetes excepto origen y destino de los puertos 25 y 80
portrange 1-1024Captura todos los paquetes con puerto origen y destino en un rango de puertos 1 a 1024
dst portrange 1-1024Captura todos los paquetes con puerto destino en un rango de puertos 1 a 1024

Filtros basados en protocolo Ethernet / IP

Ejemplos
ipCaptura todo el tráfico IP
ip proto \tcpCaptura todos los segmentos TCP
ether proto \ipCaptura todo el tráfico IP
ip proto \arpCaptura todo el tráfico ARP

Filtros basados en red

SintaxisSignificado
net netCaptura todo el tráfico con origen y destino red net
dst net netCaptura todo el tráfico con destino red net
src net netCaptura todo el tráfico con origen red net
Ejemplos
net 192.168.1.0Captura todo el tráfico con origen y destino subred 1.0
net 192.168.1.0/24Captura todo el tráfico para la subred 1.0 mascara 255.0
dst net 192.168.2.0Captura todo el tráfico con destino para la subred 2.0
net 192.168.2.0 and port 21Captura todo el tráfico origen y destino puerto 21 en subred 2.0
broadcastCaptura solo el tráfico broadcast
not broadcast and not multicastCaptura todo el tráfico excepto el broadcast y el multicast

Filtros de Visualización (Display Filter)

Los filtros de visualización establecen un criterio de filtro sobre las paquetes que estamos capturando y qué estamos visualizando en la pantalla principal de Wireshark. Al aplicar el filtro en la pantalla principal de Wireshark aparecerá solo el tráfico filtrado a través del filtro de visualización.

Comparando Filtros.

§  Igual a: eq ó ==

§  No igual: ne ó !=

§  Mayor que:gt ó >

§  Menor que: lt ó <

§  Mayor o igual: ge ó >=

§  Menor o igual: le ó <=

Combinando Filtros.

§  Negación: ! ó not

§  Unión o Concatenación: && ó and

§  Alternancia:|| ó or

Otros operadores.

§  Contains: Realizamos una búsqueda por la cadena contains

Ejemplos de filtro

SintaxisSignificado
ip.addr == 194.164.1.40Visualizar tráfico por host 194.164.1.40
ip.addr != 196.164.1.25Visualizar todo el tráfico excepto host 196.164.1.25
ip.dst == 197.165.1.50Visualizar por host destino197.165.1.50
ip.src == 197.165.1.50Visualizar por host origen 197.165.1.50
ipVisualiza todo el tráfico IP
tcp.port ==143Visualiza todo el tráfico origen y destino puerto 143
ip.addr == 197.165.1.50 and tcp.port == 143Visualiza todo el tráfico origen y destino puerto 143 relativo al host 197.165.1.50
http contains «http://www.hackrocks.com «Visualiza el tráfico origen y destino http://www.hackrocks.com
frame contains «@micurso.es»Visualizamos todos los correos con origen y destino al dominio micurso.es, incluyendo usuarios, etc
icmp[0:1] == 08Filtro avanzado con el que visualizamos todo el tráfico icmp de tipo echo request
ip.ttl == 1Visualiza todos los paquetes IP cuyo campo TTL sea igual a 1
tcp.windows_size != 0Visualizar todos los paquetes cuyo campo Tamaño de Ventana del segmento TCP sea distinto de 0
ip.tos == xVisualiza todos los paquetes IP cuyo campo TOS sea igual a x
ip.flags.df == xVisualiza todos los paquetes IP cuyo campo DF sea igual a x
udp.port == 53Visualiza todo el tráfico UDP puerto 53
tcp contains «terra.com»Visualizamos segmentos TCP conteniendo la cadena terra.com

Analizando tráfico

Una prueba de concepto simple para entender cómo funciona un poco WireShark, es abrir la herramienta, seleccionar la interfaz de red que corresponda (en mi caso Ethernet porque estoy conectado por cable) y empezar a capturar tráfico.

En esta ocasión, tengo varias ventanas abiertas en el navegador y de forma adicional he lanzado un ping al dominio de google y he entrado en la web de comunio.

El objetivo será filtrar toda la cantidad de paquetes que salen para conseguir sólo los del ping y los relacionados con comunio.

El escenario de salida es el siguiente:

Primero, intentemos obtener los paquetes del ping. Para ello, lo podemos buscar por la IP destino que la propia herramienta nos devuelve, o podemos usar el filtro de icmp buscando los echo request (Tipo 8, código 0) o los echo reply (Tipo 0, Código 0), por ejemplo.

Al aplicar cualquiera de los filtros, encontramos los paquetes que vamos buscando. Ahora, pasemos a fijarnos bien, porque Wireshark no sólo nos muestra el tipo de mensaje, sino que despliega en el menú inferior las distintas capas del modelo TCP/IP con sus distintos campos y cabeceras.

En la captura anterior, hemos clicado sobre uno de los echo request lanzados por nuestro PC hacia google. Podemos ver las distintas capas con el origen y destino, así como las distintas cabeceras de los distintos protocolos. El protocolo ICMP es específico del ping, y va encapsulado sobre el protocolo IP, pero en esta ocasión se despliega aparte para una mejor visualización de sus campos.

Ahora, probemos a obtener el tráfico capturado hacia la web de comunio. Para ello podemos hacer un ping al dominio de comunio.es para averiguar la IP destino e incluirla en nuestro filtro. Al encontrarlo, podemos observar que el dominio usa HTTPS con el protocolo TLSv1.2 (comunicación cifrada).

En esta ocasión, podemos ver como aparecen la capa de transporte TCP y la de aplicación (según el modelo de capas de internet) TLS. En este último, podemos ver como la información va cifrada.