Wireshark es un programa libre para el análisis y la presentación gráfica de protocolos de datos (Sniffer). Tales protocolos de datos son utilizados por ordenadores en diversos medios de comunicación como la red local o USB. La captura de la comunicación puede ser útil al buscar errores o al evaluar el contenido de la comunicación. Wireshark muestra en una captura tanto las cabeceras de los protocolos como el contenido transportado. El programa se apoya en la salida de pequeños subprogramas como pcap o usbpcap para grabar el contenido de la comunicación en el medio de transmisión correspondiente. [wikipedia]

Visión general de la UI rojo: Lista de todas las tramas verde: Resumen de Wireshark (no forma parte de la trama) naranja: Cabecera de trama lila: Información del protocolo IPv4 azul: Información del protocolo ICMP

Filtros de captura

Configurar filtros

Capturar request & response

Ejemplos de filtros:

  • Filtro para interceptar las tramas entrantes de una dirección IP determinada: src host
  • Filtro para interceptar las tramas salientes a una dirección IP determinada: dst host
  • En el caso de host se graban los mensajes entrantes y salientes
  • Filtro para interceptar las tramas entrantes y salientes en un puerto determinado: port
  • Filtro para interceptar paquetes UDP en un puerto determinado y a una dirección IP específica: udp dst port and dst host
  • ether host

Además de la entrada manual, los filtros pueden construirse con un editor:

Ej.: generar tramas ICMP via el comando ’tracert’

UDP El ‘User Datagram Protocol’, o UDP, es un protocolo de red mínimo y sin conexión que pertenece a la capa de transporte de la familia de protocolos de Internet. UDP permite a las aplicaciones enviar datagramas en redes de ordenadores basadas en IP. UDP utiliza puertos para entregar los datos enviados al programa correcto en el equipo de destino. Para ello, cada datagrama incluye el número de puerto del servicio que debe recibir los datos. Esta extensión de la transmisión de host a host del Internet Protocol a una transmisión de proceso a proceso se denomina multiplexación y desmultiplexación de aplicaciones. Además, UDP ofrece la posibilidad de verificación de integridad enviando una suma de comprobación. De este modo, los datagramas transmitidos con errores pueden detectarse y descartarse. [wikipedia]

Entre otras cosas, UDP se utiliza en una consulta DNS. Al ejecutar el ejemplo anterior y filtrar por ‘udp port 53’ obtenemos la siguiente salida: Como se puede ver aquí, el protocolo UDP incluye únicamente los siguientes datos:

  • Puerto de origen
  • Destino
  • Longitud
  • Suma de comprobación

La información entre corchetes es información adicional de Wireshark.

Además, vemos la estructura de la trama según OSI:

  1. DNS (Capa OSI: 5-7)
  2. UDP (Capa OSI: 4)
  3. IPv4 (Capa OSI: 3)
  4. Ethernet (Capa OSI: 1-2)

Establecimiento de conexión TCP (handshake de 3 vías) [wikipedia]

Generación de tráfico TCP mediante ‘dig www.aaron.de A +tcp’. Al acceder a una página web puede ocurrir que el tráfico no se muestre en el orden correcto en Wireshark.

Visualización del handshake en Wireshark filtro por puerto TCP

filtro por host TCP

En el ejemplo siguiente el orden de las tramas se muestra incorrectamente. Es decir, la indicación de la hora (timestamp) no es correcta. Como sabemos que el establecimiento de la conexión TCP comienza con un ‘ACK’, en este caso podemos buscar manualmente la trama correspondiente. Al abrir la trama se puede ver ‘Sequence number: 0’. Por lo tanto, esta trama es la primera trama.

La siguiente imagen muestra la primera trama TCP. La primera trama es una solicitud ‘sync’. En Wireshark se puede ver cómo se ha establecido el flag correspondiente:

La longitud total de un frame TCP es de 32 bytes: Al seleccionar los distintos componentes del paquete, p. ej. ‘Source Port’ o ‘Flags’, se muestra el tamaño correspondiente en bytes. En UDP la longitud total del frame es de 8 bytes en lugar de 32 bytes.

Seguir la conexión Wireshark ofrece la posibilidad de que el usuario siga un protocolo. En este ejemplo he cambiado mi contraseña en una página web vía HTTP. En una WLAN pública sin las medidas de seguridad adecuadas, un atacante podría haber seguido mi flujo de esta manera:

El resultado del flujo es el siguiente: Como se puede ver aquí, la dirección de correo electrónico y la contraseña de prueba se transmitieron en texto claro. Por lo tanto, en una red pública, por ejemplo, no se deberían enviar datos sin la encriptación adecuada. El mismo procedimiento puede aplicarse en otras conexiones no cifradas, como FTP.

En cambio, la captura de una conexión SSL se ve así:

Protocolos compatibles La lista de todos los protocolos compatibles con Wireshark se encuentra en ‘Editar -> Preferencias -> Protocols’:

Información de expertos Esta vista muestra anomalías en la transmisión de datos y puede mostrarse seleccionando el círculo (abajo a la izquierda). El color del círculo indica la gravedad. Al seleccionar, por ejemplo, la línea de Error, el frame correspondiente se mostrará en la ventana de frames de Wireshark y podrá examinarse más en detalle.

Uso del ancho de banda Al seleccionar ‘Statistics -> Conversations (de: Verbindungen)’ podemos listar todo el tráfico, por ejemplo, por bytes consumidos o número de paquetes.

En este ejemplo he reproducido una película en segundo plano. Dado que en una transmisión el tráfico fluye principalmente del servidor (B) al cliente (A), he ordenado por (bytes B->A). Mediante el filtrado que se muestra a continuación, sólo se mostrarán los frames correspondientes al tráfico seleccionado.