Instalar, configurar y analizar el tráfico de red con Wireshark

WiresharkBeginner
Practicar Ahora

Introducción

En este laboratorio aprenderás a instalar y configurar Wireshark, un potente analizador de protocolos de red. Esta herramienta permite examinar el tráfico de red en tiempo real, algo fundamental para resolver problemas de conectividad e investigar incidentes de seguridad.

Al finalizar el laboratorio, podrás capturar y analizar paquetes de red en tu sistema, adquiriendo experiencia práctica con esta herramienta esencial.

Instalar Wireshark

En este paso instalaremos Wireshark en nuestro sistema Ubuntu. Wireshark es un potente analizador de protocolos de red que permite capturar y analizar el tráfico de red. Es una herramienta fundamental para cualquier persona interesada en la seguridad de redes y el análisis del tráfico. La ventaja es que Wireshark está disponible en los repositorios de Ubuntu, por lo que podemos instalarlo fácilmente mediante el sistema de gestión de paquetes incluido en Ubuntu.

Primero, actualizaremos la información de los repositorios de paquetes. Un repositorio es como un catálogo de todo el software disponible para tu sistema Ubuntu. Al actualizarlo, nos aseguramos de tener acceso a las versiones más recientes. Para ello, debemos abrir una terminal. Puedes hacerlo haciendo clic en el icono de la terminal de la barra de tareas o pulsando Ctrl+Alt+T. Una vez abierta, introduce el siguiente comando:

sudo apt update

El comando sudo permite ejecutar comandos con privilegios administrativos. apt es la herramienta de gestión de paquetes de Ubuntu y update actualiza la información de los repositorios. Al ejecutar este comando, deberías ver una salida similar a la siguiente:

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,234 kB]
...
Reading package lists... Done

Esta salida indica que el sistema está obteniendo de los repositorios la información más reciente sobre los paquetes disponibles.

Ahora que los repositorios están actualizados, podemos instalar Wireshark mediante el gestor de paquetes apt. Ejecuta el siguiente comando en la terminal:

sudo apt install wireshark -y

El comando install indica a apt que instale el paquete especificado, que en este caso es wireshark. La opción -y responde automáticamente «sí» a todas las confirmaciones que aparezcan durante la instalación.

Durante la instalación aparecerá un cuadro de diálogo de configuración que preguntará si deseas permitir que los usuarios que no sean superusuarios capturen paquetes. Esta opción resulta útil si quieres ejecutar Wireshark sin utilizar siempre privilegios administrativos. Usa las teclas de dirección para seleccionar «Yes» (o pulsa y) y presiona Enter para confirmar.

Cuadro de diálogo de configuración de Wireshark

Nota: Si no viste esta pregunta o necesitas cambiar la configuración más adelante, puedes volver a configurar Wireshark mediante el siguiente comando:

sudo dpkg-reconfigure wireshark-common

El comando dpkg-reconfigure permite reconfigurar un paquete que ya está instalado.

Cuando finalice la instalación, deberías ver una salida que indique que se completó correctamente. Para comprobar que Wireshark se instaló bien, podemos consultar su versión. Ejecuta el siguiente comando en la terminal:

wireshark --version

Este comando hace que Wireshark muestre la información de su versión. Deberías ver una salida similar a esta:

Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)

Copyright 1998-2022 Gerald Combs <gerald@wireshark.org> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with Qt 5.15.3, with libpcap, with GLib 2.72.0, with zlib 1.2.11,
with SMI 0.4.8, with c-ares 1.18.1, with Lua 5.2.4, with GnuTLS 3.7.3 and PKCS #11
support, with Gcrypt 1.9.4, with MIT Kerberos, with MaxMind DB resolver,
with nghttp2 1.43.0, with brotli, with LZ4, with Zstandard, with Snappy,
with libxml2 2.9.13, with libssh 0.9.6, with NGHTTP3 0.7.0, with NGTCP2 0.8.0.

¡Perfecto! Wireshark ya está instalado en tu sistema.

Configurar los permisos de captura de Wireshark

En este paso configuraremos los permisos necesarios para que Wireshark pueda capturar paquetes de red. Como principiante, quizá te preguntes por qué es necesario. De forma predeterminada, la captura de paquetes requiere privilegios de root. Se trata de una medida de seguridad, ya que los paquetes pueden contener información confidencial. Sin embargo, ejecutar Wireshark como root no es recomendable desde el punto de vista de la seguridad. Si Wireshark tuviera una vulnerabilidad, un atacante podría obtener acceso completo al sistema. Por eso configuraremos Wireshark para que tu cuenta de usuario habitual pueda capturar paquetes de forma segura.

Primero debemos comprobar si existe el grupo wireshark en el sistema. Este grupo especial se utilizará para administrar los permisos de captura de paquetes. Para comprobarlo usaremos el comando getent, una utilidad que consulta entradas de distintas bases de datos del sistema, en este caso la base de datos de grupos. Ejecuta el siguiente comando en la terminal:

getent group wireshark

Si no aparece ninguna salida, significa que el grupo aún no existe y debemos crearlo. Usaremos el comando groupadd, que sirve para crear nuevos grupos en el sistema. Ejecuta:

sudo groupadd wireshark

El comando sudo permite ejecutar groupadd con privilegios administrativos. Si no has utilizado sudo recientemente, se te pedirá que introduzcas tu contraseña.

A continuación, debemos asignar los permisos correctos al binario de captura de paquetes (dumpcap). dumpcap es el componente que captura realmente los paquetes para Wireshark. Cambiaremos el grupo propietario del binario dumpcap al grupo wireshark. De este modo, el binario quedará asociado a ese grupo y podremos administrar sus permisos mediante él. Ejecuta:

sudo chgrp wireshark /usr/bin/dumpcap

El comando chgrp cambia el grupo propietario de un archivo o directorio. En este caso, cambiaremos el grupo propietario del binario /usr/bin/dumpcap al grupo wireshark.

Después de cambiar el grupo propietario, restringe la ejecución al propietario y al grupo wireshark. Ejecuta:

sudo chmod 750 /usr/bin/dumpcap

El permiso 750 concede acceso completo al propietario root, permisos de lectura y ejecución al grupo wireshark y ningún acceso al resto de usuarios. También garantiza que el bit setuid no esté habilitado.

A continuación, concede a dumpcap únicamente las capacidades de Linux necesarias para capturar paquetes:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

Estas capacidades permiten que dumpcap abra sockets de paquetes sin procesar y administre las interfaces de captura sin ejecutar todo el programa como root. Combinadas con los permisos del archivo, solo root y los miembros del grupo wireshark podrán ejecutarlo.

Por último, debemos añadir nuestro usuario actual al grupo wireshark. Así, el usuario tendrá los permisos necesarios para utilizar el binario dumpcap. Usaremos el comando gpasswd, que sirve para administrar los archivos /etc/group y /etc/gshadow. Ejecuta:

sudo gpasswd -a $USER wireshark

La variable $USER es una variable del intérprete de comandos que contiene el nombre del usuario actual. Deberías ver una salida que indique que el usuario se añadió al grupo:

Adding user labex to group wireshark

Para que estos cambios surtan efecto, debes cerrar sesión y volver a iniciarla, o reiniciar el sistema. Sin embargo, en este laboratorio podemos utilizar una alternativa más sencilla: iniciar un nuevo intérprete de comandos con la pertenencia al grupo actualizada. Usaremos el comando newgrp, que inicia un nuevo intérprete con el grupo wireshark activo. Ejecuta:

newgrp wireshark

Este comando inicia un nuevo intérprete con el grupo wireshark activo sin necesidad de cerrar completamente la sesión.

Comprobemos que nuestro usuario ya pertenece al grupo wireshark. Usaremos el comando groups para mostrar todos los grupos a los que pertenece el usuario. Ejecuta:

groups

Deberías ver wireshark entre los grupos:

wireshark sudo ssl-cert labex public

Por último, confirma los permisos restringidos y las capacidades de captura:

stat -c '%A %U %G' /usr/bin/dumpcap
-rwxr-x--- root wireshark
getcap /usr/bin/dumpcap
/usr/bin/dumpcap cap_net_admin,cap_net_raw=eip

Ahora que tu usuario pertenece al grupo wireshark y dumpcap solo tiene las capacidades necesarias, Wireshark puede capturar paquetes sin ejecutarse como root ni conceder acceso de captura a todos los usuarios locales.

Iniciar Wireshark

En este paso iniciaremos Wireshark y conoceremos su interfaz inicial. Wireshark es una potente herramienta para analizar el tráfico de red y cuenta con una interfaz gráfica de usuario (GUI). Esta interfaz será la que utilizaremos para interactuar con el programa y analizar el tráfico de red.

Primero, asegúrate de encontrarte en el entorno de escritorio de la máquina virtual de LabEx. Cuando estés en el lugar correcto, verás un escritorio con iconos y una barra de tareas en la parte superior o inferior de la pantalla. Este es el punto de partida para comenzar a trabajar con Wireshark.

Hay dos formas de iniciar Wireshark. Elige la que te resulte más cómoda:

  • Haz clic en el menú Applications, que normalmente se encuentra en la esquina superior izquierda de la pantalla. Después, busca las categorías «Internet» o «Network». Dentro de la categoría correspondiente, localiza y selecciona «Wireshark». Es una forma sencilla de iniciar el programa desde la interfaz gráfica.

    Wireshark en el menú Applications

  • También puedes utilizar la terminal. Abre una ventana de terminal e introduce el siguiente comando:

    wireshark
    

    Wireshark en la terminal

Este comando indica al sistema que inicie la aplicación Wireshark. Después de ejecutarlo, Wireshark se abrirá y su ventana principal aparecerá en pantalla. Lo primero que verás será la pantalla «Welcome to Wireshark». En ella se muestra una lista de las interfaces de red disponibles que puedes utilizar para capturar tráfico. También aparecen algunos archivos de captura abiertos recientemente, si ya has utilizado Wireshark y tienes archivos guardados.

Pantalla de inicio de Wireshark

La pantalla de bienvenida ofrece varias opciones importantes:

  • Puedes seleccionar una interfaz de red de la lista. En cuanto elijas una, Wireshark comenzará a capturar paquetes de esa interfaz. Así empezarás a recopilar datos sobre el tráfico de red.
  • Si tienes un archivo de captura guardado anteriormente, puedes abrirlo desde esta pantalla. Esto resulta útil para analizar datos recopilados en otro momento.
  • También puedes acceder a distintas herramientas y opciones de configuración. Estas funciones te ayudarán a personalizar Wireshark y realizar análisis más avanzados.

Dedica unos instantes a explorar esta pantalla inicial. Observarás que cada interfaz de red incluye estadísticas sobre los paquetes detectados. Estas estadísticas ofrecen una visión rápida de qué interfaces están transmitiendo tráfico de forma activa.

Ahora veamos los principales elementos de la interfaz de Wireshark:

  • Barra de menús: Se encuentra en la parte superior de la ventana y proporciona acceso a todas las funciones de Wireshark. Puedes utilizarla para guardar archivos de captura, modificar la configuración y consultar la ayuda.
  • Barra de herramientas: Ofrece acceso rápido a las funciones más utilizadas. Por ejemplo, permite iniciar y detener capturas, aplicar filtros y guardar archivos con un solo clic.
  • Lista de interfaces: Muestra todas las interfaces de red disponibles en el sistema. Utilizarás esta lista para seleccionar desde qué interfaz quieres capturar paquetes.
  • Barra de filtros de visualización: Permite filtrar los paquetes que aparecen en la ventana principal. Puedes utilizar criterios como direcciones IP, protocolos o números de puerto para limitar los paquetes que te interesan. En el siguiente paso veremos cómo utilizar este filtro.

Por ahora, deja Wireshark abierto. En el siguiente paso lo utilizaremos para capturar y analizar tráfico de red.

Capturar y analizar el tráfico de red

En este paso capturaremos tráfico de red y exploraremos la interfaz de Wireshark. Saber analizar paquetes de red es fundamental para cualquier persona interesada en la seguridad de redes o en la resolución de problemas. Al finalizar esta sección, sabrás iniciar una captura, interpretar la interfaz de Wireshark, generar tráfico, filtrar paquetes, consultar sus detalles y detener la captura.

Iniciar una captura

Al abrir Wireshark verás una pantalla de bienvenida. En ella debes localizar la interfaz de red desde la que quieres capturar tráfico. En la mayoría de los casos utilizaremos la interfaz eth0. Si eth0 no está disponible, puedes elegir otra interfaz activa, como eth1 o wlan0.

Para comenzar a capturar paquetes, haz doble clic en la interfaz eth0. La captura comenzará inmediatamente y accederás a la ventana principal de captura de Wireshark.

También puedes seleccionar primero la interfaz y hacer clic en el botón «Start capturing packets», representado por un icono azul con forma de aleta de tiburón en la barra de herramientas. Iniciar la captura es el primer paso para analizar el tráfico, ya que permite a Wireshark recopilar los datos que circulan por la interfaz seleccionada.

Comprender la interfaz de Wireshark

Cuando comience la captura, aparecerá la interfaz principal de Wireshark. Está dividida en tres paneles principales, cada uno con una función diferente.

Interfaz principal de Wireshark

  • Panel de lista de paquetes (superior): Muestra todos los paquetes capturados por Wireshark. Cada entrada proporciona información básica sobre un paquete, entre ella:

    • Número de paquete: Identificador único de cada paquete de la captura.
    • Hora: Momento en que se capturó el paquete.
    • Dirección IP de origen: Dirección IP del dispositivo que envió el paquete.
    • Dirección IP de destino: Dirección IP del dispositivo al que va dirigido el paquete.
    • Protocolo: Protocolo de red utilizado, como TCP, UDP o ICMP.
    • Longitud: Tamaño del paquete en bytes.
    • Información: Breve descripción del propósito del paquete, útil para entender rápidamente su función.
  • Panel de detalles del paquete (central): Al seleccionar un paquete en el panel superior, esta zona muestra información detallada sobre él en formato jerárquico. Puedes ampliar cada sección haciendo clic en la flecha situada junto a ella para consultar más detalles sobre la estructura y el contenido del paquete.

  • Panel de bytes del paquete (inferior): Muestra los datos sin procesar del paquete en formatos hexadecimal y ASCII. Al seleccionar distintos campos en el panel de detalles, los bytes correspondientes se resaltan aquí. Así puedes observar los datos reales que se transmiten en el paquete.

Generar tráfico de red

Para disponer de datos relevantes que analizar, necesitamos generar tráfico de red. Mientras Wireshark sigue ejecutándose, abre una nueva ventana de terminal. En ella utilizaremos el comando ping para enviar paquetes de solicitud de eco ICMP a los servidores de Google.

Ejecuta el siguiente comando:

ping -c 5 google.com

Nota: Los usuarios gratuitos no pueden conectarse a Internet. Actualiza a Pro para disfrutar de la experiencia completa.

La opción -c 5 indica al comando ping que envíe 5 paquetes de solicitud de eco ICMP. Después de ejecutar el comando, deberías ver una salida similar a esta:

PING google.com (142.250.180.238) 56(84) bytes of data.
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=1 ttl=118 time=15.6 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=2 ttl=118 time=16.5 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=3 ttl=118 time=15.9 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=4 ttl=118 time=16.2 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=5 ttl=118 time=15.7 ms

--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 15.629/15.986/16.520/0.324 ms

Ahora vuelve a Wireshark. Deberías ver los paquetes ICMP capturados mientras se ejecutaba el comando ping. Estos paquetes serán la base del análisis que realizaremos a continuación.

Detener la captura

Cuando hayas terminado de analizar los paquetes capturados, debes detener la captura. Para ello, haz clic en el botón «Stop capturing packets», representado por un cuadrado rojo en la barra de herramientas. También puedes abrir el menú «Capture» y seleccionar «Stop».

¡Has capturado y analizado correctamente tráfico de red básico con Wireshark! Esta es una habilidad fundamental en el análisis y la seguridad de redes, y podrás aprovecharla para estudiar escenarios de red más complejos.

Filtrar paquetes

Wireshark captura todo el tráfico de la interfaz seleccionada, por lo que rápidamente puede acumularse una gran cantidad de datos difíciles de gestionar. Los filtros son una función muy potente que permite centrarse en tipos concretos de tráfico.

Barra de filtros de Wireshark

Para filtrar los paquetes ICMP que acabamos de generar, busca la barra de filtros situada en la parte superior de la ventana de Wireshark. Escribe allí una expresión de filtro. Introduce:

icmp

Después de escribir la expresión, pulsa Enter o haz clic en el botón Apply, representado por un icono de flecha hacia la derecha situado junto al campo del filtro. La lista se actualizará para mostrar únicamente los paquetes ICMP. Deberías ver pares de mensajes «Echo (ping) request» y «Echo (ping) reply» correspondientes al comando ping ejecutado anteriormente. Los filtros ayudan a aislar el tráfico que te interesa y hacen que el análisis sea mucho más manejable.

Examinar los detalles de los paquetes

Ahora que hemos filtrado los paquetes ICMP, examinemos con más detalle uno de los paquetes de solicitud ICMP. Haz clic en uno de ellos dentro de la lista. En el panel de detalles puedes ampliar las distintas capas de protocolos haciendo clic en la flecha situada junto a cada sección.

Detalles de un paquete en Wireshark

  • Frame: Esta sección proporciona información sobre la trama o el paquete completo, como la longitud de la trama y la secuencia de comprobación de la trama.
  • Ethernet: Contiene la información de la capa 2 (enlace de datos), como las direcciones MAC de origen y destino.
  • Internet Protocol Version 4: Contiene la información de la capa 3 (red). Amplía esta sección para consultar datos como:
    • Dirección IP de origen: Dirección IP del dispositivo que envió el paquete.
    • Dirección IP de destino: Dirección IP del dispositivo al que se dirige el paquete.
    • Tiempo de vida (TTL): Valor que limita el tiempo que el paquete puede permanecer en la red.
    • Protocolo: Protocolo utilizado dentro del paquete IP, en este caso ICMP.
  • Internet Control Message Protocol: Esta sección muestra la información del protocolo ICMP. Amplíala para consultar detalles específicos del mensaje ICMP, como:
    • Tipo (8 para solicitud, 0 para respuesta): Indica si el paquete es una solicitud o una respuesta.
    • Código: Proporciona información adicional sobre el mensaje ICMP.
    • Suma de comprobación: Se utiliza para verificar la integridad del mensaje ICMP.
    • Identificador: Ayuda a asociar las solicitudes con sus respuestas.
    • Número de secuencia: Número secuencial de los paquetes ICMP.

Resumen

En este laboratorio has aprendido a instalar y configurar Wireshark, una potente herramienta de análisis de redes. Configuraste los permisos para que los usuarios que no sean root puedan capturar paquetes de forma segura, iniciaste la aplicación y capturaste tráfico de red real. También exploraste la interfaz, aplicaste filtros para tipos específicos de tráfico y examinaste los detalles de los paquetes en distintas capas de protocolos.

Estas habilidades constituyen una base sólida para el análisis y la resolución de problemas de red. Con Wireshark, ahora puedes inspeccionar las comunicaciones de red, diagnosticar problemas de conectividad, analizar el comportamiento de los protocolos e identificar posibles riesgos de seguridad en el tráfico de tu red.