Manejo de protocolo tcp con wireshark


Transmission Control Protocol

TCP (Protocolo de Control de Transmisión) es uno de los protocolos fundamentales en Internet. Fue creado entre los años 1973 - 1974 por Vint Cerf y Robert Kahn.

Muchos programas dentro de una red de datos compuesta por computadoras pueden utilizar el protocolo de transmisión TCP para crear conexiones entre ellos a través de las cuales puede enviarse un flujo de datos. El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron. También proporciona un mecanismo para distinguir distintas aplicaciones dentro de una misma máquina, a través del concepto de puerto.

TCP da soporte a muchas de las aplicaciones más populares de Internet, incluidas HTTP, SMTP, SSH y FTP.

El fin de TCP es proveer un flujo de bytes confiable de extremo a extremo sobre una Internet no confiable. TCP puede adaptarse dinámicamente a las propiedades de la Internet y manejar fallas de muchas clases.
La entidad de transporte de TCP puede estar en un proceso de usuario o en el kernel. Parte un flujo de bytes en trozos y los mande como datagramas de IP.

Para obtener servicio de TCP, el emisor y el recibidor tienen que crear los puntos terminales de la conexión (los sockets).

La dirección de un socket es la dirección de IP del host y un número de 16 bits que es local al host (la puerta). Se identifica una conexión con las direcciones de socket de cada extremo; se puede usar un socket para conexiones múltiples a la vez.
Los números de puerta bajo 256 son puertas bien conocidas para servicios comunes (como FTP). Las conexiones de TCP son punto-a-punto y full dúplex. No preservan los límites de mensajes.

Cuando una aplicación manda datos a TCP, TCP puede mandarlos inmediatamente o almacenarlos (para acumular más). Una aplicación puede solicitar que TCP manda los datos inmediatamente a través del flag de PUSH (empujar).

TCP también apoya los datos urgentes. TCP manda datos con el flag URGENT inmediatamente. En el destino TCP interrumpe la aplicación (las características TCP
Transferencia de datos a través de un canal

Desde el punto de vista de la aplicación, TCP transfiere un flujo continuo de bytes a través de Internet. La aplicación no ha de preocuparse de trocear los datos en bloques o en datagramas. TCP se encarga de esto al agrupar los bytes en segmentos TCP, que se pasan a IP para ser retransmitidos al destino. Además, TCP decide por sí mismo cómo segmentar los datos y puede enviarlos del modo que más le convenga.
A veces, una aplicación necesita estar segura de que todos los datos pasados a TCP han sido transmitidos efectivamente al destino. Por esa razón, se define la función "push". Esta función mandará todos los segmentos que sigan almacenados al host de destino. El cierre normal de la conexión también provoca que se llame a esta función, para evitar que la transmisión quede incompleta.


Fiabilidad

TCP asigna un número de secuencia a cada byte transmitido, y espera un reconocimiento afirmativo (ACK) del TCP receptor. Si el ACK no se recibe dentro de un intervalo de timeout, los datos se retransmiten. Como los datos se transmiten en bloques (segmentos de TCP), al host de destino sólo se le envía el número de secuencia del byte de cada segmento.
El TCP receptor utiliza los números de secuencia para organizar los segmentos cuando llegan fuera de orden, así como para eliminar segmentos duplicados.


Control de flujo

El TCP receptor, al enviar un ACK al emisor, indica también el número de bytes que puede recibir aún, sin que se produzca sobrecarga y desbordamiento de sus buffers internos. Este valor se envía en el ACK en la forma del número de secuencia más elevado que se puede recibir sin problemas. Este mecanismo se conoce también como mecanismo de ventanas y se estudiará posteriormente en este capítulo.

Multiplexación

Se consigue usando puertos, al igual que en UDP.

Conexiones lógicas

La fiabilidad y el control de flujo descritos más arriba requieren que TCP inicialice y mantenga cierta información de estado para cada canal. La combinación de este estado, incluyendo zócalos, números de secuencia y tamaños de ventanas, se denomina conexión lógica. Cada conexión se identifica unívocamente por el par de zócalos del emisor y el receptor.

Full Duplex

TCP garantiza la concurrencia de los flujos de datos en ambos sentidos en la conexión.

Puerto de origen (16 bits): Puerto relacionado con la aplicación en curso en la máquina origen
Puerto de destino (16 bits): Puerto relacionado con la aplicación en curso en la máquina destino

Número de secuencia (32 bits): Cuando el indicador SYN está fijado en 0, el número de secuencia es el de la primera palabra del segmento actual. Cuando SYN está fijado en 1, el número de secuencia es igual al número de secuencia inicial utilizado para sincronizar los números de secuencia (ISN).

Número de acuse de recibo (32 bits): (PIGGY BACK) El número de acuse de recibo, también llamado número de descargo se relaciona con el número (secuencia) del último segmento esperado y no el número del último segmento recibido.

Margen de datos (4 bits): (LOG C) Esto permite ubicar el inicio de los datos en el paquete. Aquí, el margen es fundamental porque el campo opción es de tamaño variable.

Reservado (6 bits): Un campo que actualmente no está en uso pero se proporciona para el uso futuro.

Indicadores (6 x 1 bit): Los indicadores representan información adicional: @hotmail.com

• URG: Si este indicador está fijado en 1, el paquete se debe procesar en forma urgente.
• ACK: Si este indicador está fijado en 1, el paquete es un acuse de recibo.
• PSH (PUSH): Si este indicador está fijado en 1, el paquete opera de acuerdo con el método PUSH.
• RST: Si este indicador está fijado en 1, se restablece la conexión.
• SYN: El indicador SYN de TCP indica un pedido para establecer una conexión.
• FIN: Si este indicador está fijado en 1, se interrumpe la conexión.

Ventana (16 bits): Campo que permite saber la cantidad de bytes que el receptor desea recibir sin acuse de recibo.

Suma de control (CRC): (CHECKSUM) La suma de control se realiza tomando la suma del campo de datos del encabezado para poder verificar la integridad del encabezado.

Puntero urgente (16 bits): Indica el número de secuencia después del cual la información se torna urgente.

Opciones (tamaño variable): Diversas opciones

Relleno: Espacio restante después de que las opciones se rellenan con ceros para tener una longitud que sea múltiplo de 32 bits.


Funciones de TCP

En la pila de protocolos TCP/IP, TCP es la capa intermedia entre el protocolo de Internet (IP) y la aplicación. Habitualmente, las aplicaciones necesitan que la comunicación sea fiable y, dado que la capa IP aporta un servicio de datagramas no fiable, TCP añade las funciones necesarias para prestar un servicio que permita que la comunicación entre dos sistemas se efectúe: libre de errores, sin pérdidas y con seguridad.

Con el uso del protocolo TCP, las aplicaciones pueden comunicarse en forma segura (gracias al sistema de acuse de recibo del protocolo TCP) independientemente de las capas inferiores. Esto significa que los routers (que funcionan en la capa de Internet) sólo tienen que enviar los datos en forma de datagramas, sin preocuparse con el monitoreo de datos porque esta función la cumple la capa de transporte (o más específicamente el protocolo TCP).
Durante una comunicación usando el protocolo TCP, las dos máquinas deben establecer una conexión. La máquina emisora (la que solicita la conexión) se llama cliente, y la máquina receptora se llama servidor. Por eso es que decimos que estamos en un entorno Cliente-Servidor.
Las máquinas de dicho entorno se comunican en modo en línea, es decir, que la comunicación se realiza en ambas direcciones.
Para posibilitar la comunicación y que funcionen bien todos los controles que la acompañan, los datos se agrupan; es decir, que se agrega un encabezado a los paquetes de datos que permitirán sincronizar las transmisiones y garantizar su recepción.
Otra función del TCP es la capacidad de controlar la velocidad de los datos usando su capacidad para emitir mensajes de tamaño variable. Estos mensajes se llaman segmentos.

CONFIABILIDAD TCP

El protocolo TCP permite garantizar la transferencia de datos confiable, a pesar de que usa el protocolo IP, que no incluye ningún monitoreo de la entrega de datagramas.
De hecho, el protocolo TCP tiene un sistema de acuse de recibo que permite al cliente y al servidor garantizar la recepción mutua de datos.
Cuando se emite un segmento, se lo vincula a un número de secuencia. Con la recepción de un segmento de datos, la máquina receptora devolverá un segmento de datos donde el indicador ACK esté fijado en 1 (para poder indicar que es un acuse de recibo) acompañado por un número de acuse de recibo que equivale al número de secuencia anterior.

Además, usando un temporizador que comienza con la recepción del segmento en el nivel de la máquina originadora, el segmento se reenvía cuando ha transcurrido el tiempo permitido, ya que en este caso la máquina originadora considera que el segmento está perdido.

Sin embargo, si el segmento no está perdido y llega a destino, la máquina receptora lo sabrá, gracias al número de secuencia, que es un duplicado, y sólo retendrá el último segmento que llegó a destino.


CONEXIÓN TCP

Considerando que este proceso de comunicación, que se produce con la transmisión y el acuse de recibo de datos, se basa en un número de secuencia, las máquinas originadora y receptora (cliente y servidor) deben conocer el número de secuencia inicial de la otra máquina.
La conexión establecida entre las dos aplicaciones a menudo se realiza siguiendo el siguiente esquema:
• Los puertos TCP deben estar abiertos.
• La aplicación en el servidor es pasiva, es decir, que la aplicación escucha y espera una conexión.
• La aplicación del cliente realiza un pedido de conexión al servidor en el lugar donde la aplicación es abierta pasiva. La aplicación del cliente se considera "abierta activa".
Las dos máquinas deben sincronizar sus secuencias usando un mecanismo comúnmente llamado negociación en tres pasos que también se encuentra durante el cierre de la sesión.
Este diálogo posibilita el inicio de la comunicación porque se realiza en tres etapas, como su nombre lo indica:
• En la primera etapa, la máquina originadora (el cliente) transmite un segmento donde el indicador SYN está fijado en 1 (para indicar que es un segmento de sincronización), con número de secuencia N llamado número de secuencia inicial del cliente.
• En la segunda etapa, la máquina receptora (el servidor) recibe el segmento inicial que viene del cliente y luego le envía un acuse de recibo, que es un segmento en el que el indicador ACK está fijado en 1 y el indicador SYN está fijado en 1 (porque es nuevamente una sincronización). Este segmento incluye el número de secuencia de esta máquina (el servidor), que es el número de secuencia inicial para el cliente. El campo más importante en este segmento es el de acuse de recibo que contiene el número de secuencia inicial del cliente incrementado en 1.
• Por último, el cliente transmite un acuse de recibo, que es un segmento en el que el indicador ACK está fijado en 1 y el indicador SYN está fijado en 0 (ya no es un segmento de sincronización). Su número de secuencia está incrementado y el acuse de recibo representa el número de secuencia inicial del servidor incrementado en 1.

Después de esta secuencia con tres intercambios, las dos máquinas están sincronizadas y la comunicación puede comenzar.
Existe una técnica de piratería llamada falsificación de IP, que permite corromper este enlace de aprobación con fines maliciosos.
• una sincronización). Este segmento incluye el número de secuencia de esta máquina (el servidor), que es el número de secuencia inicial para el cliente. El campo más importante en este segmento es el de acuse de recibo que contiene el número de secuencia inicial del cliente incrementado en 1.
• Por último, el cliente transmite un acuse de recibo, que es un segmento en el que el indicador ACK está fijado en 1 y el indicador SYN está fijado en 0 (ya no es un segmento de sincronización). Su número de secuencia está incrementado y el acuse de recibo representa el número de secuencia inicial del servidor incrementado en 1.

TERMINAR CONEXIÓN

El cliente puede pedir que se termine una conexión del mismo modo que el servidor.

Para terminar una conexión se procede de la siguiente manera:

Una de las máquinas envía un segmento con el indicador FIN fijado en 1, y la aplicación se auto coloca en estado de espera, es decir que deja de recibir el segmento actual e ignora los siguientes.

Después de recibir este segmento, la otra máquina envía un acuse de recibo con el indicador FIN fijado en 1 y sigue enviando los segmentos en curso. Después de esto, la máquina informa a la aplicación que se ha recibido un segmento FIN y luego envía un segmento FIN a la otra máquina, que cierra la conexión.

ETHEREAL (WireShark)

Es una herramienta gráfica utilizada por los profesionales y/o administradores de la red para identificar y analizar el tipo tráfico en un momento determinado, a estos se los denominan analizadores de protocolos de red, analizadores de paquetes y packet sniffer o sniffer. Ethereal y permite analizar los paquetes de datos en una red activa como también desde un archivo de lectura previamente generado, un caso particular es generar un archivo con TCPDUMP y luego analizarlo con Ethereal.

Ethereal ahora es conocido como WireShark y hoy en día está categorizado como uno de los TOP 10 como sniffer junto a Nessus y Snort ocupando el segundo lugar entre estos por lo tanto este documento trataremos o aremos referencia la sniffer WIRESHARK y no ETHEREAL.

  • Disponible para UNIX, LINUX, Windows y Mac OS.
  • Captura los paquetes directamente desde una interfaz de red.
  • Permite obtener detalladamente la información del protocolo utilizado en el paquete capturado.
  • Cuenta con la capacidad de importar/exportar los paquetes capturados desde/hacia otros programas.
  • Filtra los paquetes que cumplan con un criterio definido previamente.
  • Realiza la búsqueda de los paquetes que cumplan con un criterio definido previamente.
  • Permite obtener estadísticas.
  • Sus funciones gráficas son muy poderosas ya que identifica mediante el uso de colores los paquetes que cumplen con los filtros establecidos.

INSTALACIÓN WIRESHARK EN DEBIAN

La instalación de la herramienta en una distribución debían es muy sencilla solo debemos tener los cd's de instalación de debían y tener actualizados los repositorios lo y ejecutar el siguiente comando.

servidor:~# aptitude install wireshark

INTERFAZ DE USUARIO

Existen dos maneras de iniciar la aplicación una es desde la línea de comando (shell) y otra desde el entorno gráfico. Cuando se inicia desde la línea de comando se tiene la posibilidad de especificar opciones adicionales que depende de las funciones que se quieran aprovechar.

Desde comandos:

cortes:~# wireshark

La interfaz principal de WireShark cuenta con varias secciones:

  • El Menú principal es utilizado para iniciar las acciones y/o funciones de la aplicación

.

File: similar a otras aplicaciones GUI este contiene los ítems para manipular archivos y para cerrar la aplicación Wireshark.

Edit: este menú contiene ítems aplicar funciones a los paquetes, por ejemplo, buscar unos paquetes específicos, aplicar una marca al paquete y configurar la interfaz de usuario.

View: permite configurar el despliegue de la data capturada.

Go: contiene ítems que permiten el desplazamiento entre los paquetes.

Capture: para iniciar y detener la captura de paquetes.

Analyze: contiene ítems que permite manipular los filtros, habilitar o deshabilitar protocolos, flujos de paquetes, etc.

Statistics: contiene ítems que permiten definir u obtener las estadísticas de la data capturada.

Help: menú de ayuda.

  • Barra de herramientas principal, permite el acceso rápido a las funciones más utilizadas.

  • Barra de herramientas para filtros, aquí se especifica el filtro que se desea aplicar a los paquetes que están siendo capturados.

  • Panel de paquetes capturados, en este panel se despliega la lista de paquetes capturados. Al hacer clic sobre algunos de estos se despliega cierta información en los otros paneles.

  • Panel para detalles del paquete, aquí se despliega información detallada del paquete seleccionado en el panel de paquetes.

  • Panel de paquetes capturados en bytes, despliega en bytes la información contenida en el campo seleccionado desde el panel de detalles del paquete seleccionado en el panel de paquetes.

  • La barra de estado, muestra información acerca del estado actual del programa y de la data capturada.

La interfaz de usuario puede ser cambiada desde el menú principal en la opción de Preferences en el menú Edit, según sea las necesidades.

PANEL DE PAQUETES CAPTURADOS

Cada línea corresponde a un paquete capturado al seleccionar una de estas, ciertos detalles son desplegados en el resto de los paneles (Detalles y bytes). Y las columnas muestran datos del paquete capturado, Wireshark dispone de una gran cantidad de detalles que pueden agregarse en estas columnas desde el menú Edit->Preferences, por defecto se tienen:

  • No.: posición del paquete en la captura.
  • Time: muestra el Timestamp del paquete. Su formato puede se modificado desde el menú View->Time Display Format.
  • Source: dirección origen del paquete.
  • Destination: dirección destino del paquete.
  • Protocol: nombre del protocolo del paquete.
  • Info: información adicional del contenido del paquete.


PANEL PARA DETALLES DE PAQUETES CAPTURADOS

Contiene el protocolo y los campos correspondientes del paquete previamente seleccionado en el panel de paquetes capturados. Seleccionando una de estas líneas con el botón secundario del Mouse se tiene opciones para ser aplicadas según las necesidades.

PANEL DE PAQUETES CAPTURADOS EN BYTES

En este panel se despliega el contenido del paquete en formato hexadecimal.

De izquierda a derecha se muestra el offset del paquete seguidamente se muestra la data del paquete y finalmente se muestra la información en caracteres ASCII si aplica o “.” (Sin comillas) en caso contrario.

CAPTURA DE PAQUETES

Una de las principales funciones de WireShark es capturar paquetes con la finalidad de que los administradores y/o ingenieros de redes puedan hacer uso de estos realizar el análisis necesario para tener una red segura y estable. Como requisito para el proceso de capturar datos es ser administrador y/o contar con estos privilegios y es necesario identificar exactamente la interfaz que se quiere analizar.

WireShark cuenta con cuatro maneras para iniciar la captura de los paquetes:

1. Haciendo doble clic en (List the available capture interfaces) Lista de las interfaces de captura disponibles, se despliega una ventana donde se listan las interfaces locales disponibles para iniciar la captura de paquetes.

Tres botones se visualizan por cada interfaz

  • Start, para iniciar
  • Options, para configurar
  • Details, proporciona información adicional de la interfaz como su descripción, estadísticas, etc.

2. Otra opción es seleccionar con el Mouse el icono (Show the capture options) Mostrar opciones de la captura, en la barra de herramientas, se despliega la siguiente ventana donde se muestra opciones de configuración para la interfaz.

3. Si es el caso donde se ha predefinido las opciones de la interfaz, haciendo clic en (Start a new live capture) Iniciar una nueva captura, se inicia la captura de paquetes inmediatamente e inmediatamente procede a capturar nuevos paquetes.

4. Otra manera de iniciar la captura de paquetes es desde la línea de comandos ejecutando lo siguiente:

Wireshark –i eth0 -k

Donde eth0 corresponde a la interfaz por la cual se desea iniciar la captura de paquetes.

Ejemplo:
cortes:~# wireshark -i eth0 -k


FILTRADO DE PAQUETES

Wireshark ofrece numerosas posibilidades de filtrado de información, que básicamente consisten en la selección de protocolos, la definición de un filtro de captura y la definición de un filtro de presentación de la información. La utilización de cada una de estas opciones se detalla en los siguientes apartados.

Wireshark contempla dos tipos de Filtros. Filtros de captura y Filtros de visualización. Para los filtros de captura podemos hacer uso de los filtros TCPDump / Windump, ya que usa la misma librería pcap.

Los filtros de captura (Capture Filter) son los que se establecen para mostrar solo los paquetes de cumplan los requisitos indicados en el filtro.
Los filtros de visualización (Display Filer) establecen un criterio de filtro sobre los paquetes capturados y que estamos visualizando en la pantalla principal de Wireshark. Estos filtros son más flexibles y potentes.

  • Filtros de Captura (Capture Filter)Estos filtros están basados en las librerías pcap. Los filtros de captura son los que se establecen para mostrar solo los paquetes de cumplan los requisitos indicados en el filtro. Si no establecemos ninguno, Wireshark capturará todo el tráfico y lo presentará en la pantalla principal. Aún así podremos establecer
  • Filtros de visualización (display filter) para que nos muestre solo el tráfico deseado

.

Se aplican en Capture > Options:

En el campo Capture Filter

Introducimos el filtro o pulsamos el botón Capture Filter para filtros predefinidos:

Sintaxis de los Filtros y ejemplos de Filtros de captura.
Combinación de Filtros.
Podemos combinar las primitivas de los filtros de la siguiente forma:
• Negación: ! ó not
• Unión o Concatenación: && ó and
• Alternancia:|| ó or

Vamos ahora a los filtros:

Filtros basados en hosts

Sintaxis Significado

host Filtrar por host
src host host Capturar por host origen
dst host host Capturar por host destino

Ejemplos

host 192.168.1.20 Captura todos los paquetes con origen y destino 192.168.1.20
src host 192.168.1.1 Captura todos los paquetes con origen en host 192.1681.1
dst host 192.168.1.1 Captura todos los paquetes con destino en host 192.168.1.1
dst host SERVER-1 Captura todos los paquetes con destino en host SERVER-1
host www.terra.com Captura todos los paquetes con origen y distino www.terra.com

Filtros basados en puertos

Sintaxis Significado

port port Captura todos los paquetes con puerto origen y destino port
src port port Captura todos los paquetes con puerto origen port
dst port port Captura todos los paquetes con puerto destino port
not port port Captura todos los paquetes excepto origen y destino puerto port
not port port and not port port1 Captura todos los paquetes excepto origen y destino puertos port y port1

Ejemplos

port 21 Captura todos los paquetes con puerto origen y destino 21
src port 21 Captura todos los paquetes con puerto origen 21
not port 21 and not port 80 Captura todos los paquetes excepto origen y destino puertos 21 y 80
portrange 1-1024 Captura todos los paquetes con puerto origen y destino en un rango de puertos 1 a 1024
dst portrange 1-1024 Captura todos los paquetes con puerto destino en un rango de puertos 1 a 1024

Filtros basados en protocolos Ethernet / IP

Ejemplos

ip Captura todo el trafico IP
ip proto \tcp Captura todos los segmentos TCP
ether proto \ip Captura todo el trafico IP
ip proto \arp Captura todo el trafico ARP

Filtros basados en red

Sintaxis Significado
net net Captura todo el trafico con origen y destino red net
dst net net Captura todo el trafico con destino red net
src net net Captura todo el trafico con origen red net

Ejemplos

net 192.168.1.0 Captura todo el trafico con origen y destino subred 1.0
net 192.168.1.0/24 Captura todo el trafico para la subred 1.0 mascara 255.0
dst net 192.168.2.0 Captura todo el trafico con destino para la subred 2.0
net 192.168.2.0 and port 21 Captura todo el trafico origen y destibo puerto 21 en subred 2.0
broadcast Captura solo el trafico broadcast
not broadcast and not multicast Captura todo el trafico 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 que estamos visualizando en la pantalla principal de Wireshark. Al aplicar el filtro en la pantalla principal de Wireshark aparecerá solo el trafico filtrado a través del filtro de visualización.
Lo podemos usar también para filtrar el contenido de una captura a través de un fichero pcap ( archivo.pcap ).

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

Otro operadores.

  • Contains: Realizamos una busqueda por la cadena contains

Como aplicar los Filtros

.

Si queremos aplicar otro filtro pulsamos el botón Clear, introducimos el filtro y pulsamos Apply


Protocolos y WireShark

Como primer nivel de filtrado, podemos escoger los protocolos con los que deseamos trabajar. La lista completa de protocolos que maneja Wireshark puede verse en un cuadro de diálogo al que podremos acceder mediante la opción de menú Analyze->Enabled Protocols.... En dicho cuadro de diálogo, que se presenta a continuación, podemos activar o desactivar la utilización de los protocolos que deseemos.

A la hora de activar o desactivar protocolos, debemos tener en cuenta la advertencia que aparece en este cuadro de diálogo, y que indica que, si desactivamos un protocolo, no aparecerán los protocolos de los niveles superiores que dependan de él. Por ejemplo, si desactivamos el protocolo de nivel de transporte TCP, no aparecerán tampoco todos los protocolos de nivel de aplicación que dependan de él, como HTTP, SMTP, FTP y muchos otros.

Captura

El siguiente nivel de filtrado que ofrece Wireshark se aplica al proceso de captura de los paquetes de red. Podemos definir un filtro que capture únicamente los paquetes de un determinado protocolo o destinados a un determinado ordenador o puerto. La utilización de un filtro se realiza en el cuadro de diálogo de opciones de captura, introduciendo la expresión del filtro en el cuadro de texto situado al lado del botón Capture Filter.

Ejemplo

tcp port 23 and host 192.168.2.11

o por ejemplo tcp reiniciamos

INTERPRETANDO LOS DATOS

Luego de realizado los filtro procederemos a interpretar la información que obtendremos al iniciar wireshark.

Se realizara un ejercicio filtrando los paquetes TCP para ello:

Menu Capture
Menu Options

Clic en Capture Filter

Escogemos la opción TCP y presionamos aceptar y luego Start

En este momento hemos empezado la captura de paquetes cuando presionemos el botón stop tendremos el siguiente pantalla so.

En la pantalla anterior se encuentran dos zonas de datos las cuales son

ZONA A: zona de listado de los paquetes capturados en la figura anterior la encontramos de color verde.
ZONA B: Datos del frame capturado que en la figura anterior la encontramos de color gris.
ZONA B:

En La primera es la se establece información del Numero de Frame, tiempo en segundos de la captura, origen, destino, protocolo involucrado y por último un campo de información extra que previamente Wireshark a decodificado.

La segunda zona muestra los datos del Frame capturado. Nos da información de todos los protocolos involucrados en la captura entre los cuales se encuenta:

  • Frame En este campo se muestra información completa de la trama capturada. Tamaño total, etc toda la informacion mostrada en la zona C.

  • Ethernet II En este muestra la cabecera Ethernet II que a su vez pertenece a la capa de enlace de datos:

Nos muestra parte de la cabecer de la trama Ethener II, en este caso:

  • Destino 6 bytes 00 01 e3 94 af 0e : MAC destino
  • Origen 6 bytes 00 15 c5 76 39 c8 : MAC origen
  • Tipo 2 bytes 08 00 : protocolo que viaja en la parte de datos de la trama en este caso IP. 0x0800.
  • Internet Protocol A continuación vemos Internet Protocol con los datos de la cabecera del datagrama IP:

  • Transmission Control Protocol. (TCP):

Se trata del Segmento TCP. Protocolo involucrado en esta captura

ANÁLISIS DE TRÁFICO CON WIRESHARK

Dominar las diferentes técnicas que nos ofrece Wireshark a la hora de analizar una captura de paquetes es fundamental para enfrentarse a la resolución de problemas de red utilizando trazas de capturas. Uno de los análisis más sencillos que pueden realizarse y que va ayudar bastante en la formación con nuestro sniffer es el de la captura de una descarga de datos a través de Internet para disgnosticar posibles problemas de pérdida de paquetes o de lentitud.

Comenzando la captura y descargando

El archivo a descargar elegido ha sido el propio programa Wireshark, que descargaremos de la sección de descargas de su página web, prepararemos el navegador en esta página y arrancaremos Wireshark, y comenzaremos la captura eligiendo el interfaz de red conectado al router y pulsando sobre el botón Capture. Posteriormente pulsamos sobre el link del navegador correspondiente a nuestra descarga y esperaremos que el programa se descargue por completo para parar la captura.

La descarga de un programa, imagen, archivo a través de Internet utiliza el protocolo TCP/IP para realizar toda la transacción. Básicamente, el cliente solicita a un servidor HTTP un archivo determinado y el servidor responde enviando dicho archivo. La descarga completa se establecerá mediante la suma de varios paquetes de datos denominados segmentos. Con cada segmento a descargar el servidor y el cliente establecerán una comunicación donde se informará de la transmisión y se procederá a la descarga correspondiente, hasta que el programa se haya completado del todo. El inicio de toda comunicación TCP comienza con la negociación en tres pasos (TCP Three Way Handshake).


Análisis gráfico

Para comenzar con el análisis de nuestra captura, deberemos echar un vistazo al gráfico de entrada/salida. El acceso a dicho gráfico se consigue a través del menú Statistics/IO Graphs. Como podemos observar, las opciones de representación de los datos son muy variadas, ya que se nos permite el filtrado de los mismos de diferentes maneras. Para empezar, es una buena idea que los datos queden representados por Bytes/Tick en el Eje Y, pues nos interesa analizar el estado de una descarga de datos.

En una descarga de datos normal, los picos deberían mantenerse más o menos unifores a lo largo del tiempo en un canal formado por dos líneas paralelas. Dependiendo de la velocidad del servidor, el tráfico de datos (representado en el Eje Y) variará, tendiendo a cero en conexiones más lentas, mientras que el tiempo de descarga (representado en el Eje X) aumentará o disminuirá dependiendo del tamaño de la descarga y de la propia velocidad de transferencia. Si la descarga de datos no es uniforme durante todo el proceso, estaremos ante un problema de transferencia que se podrá analizar con la lectura detallada de los paquetes capturados.

  • Análisis de los paquetes

Ahora se centrara la atencion en la pantalla principal. Dicha pantalla nos ofrece todos los paquetes capturados con información de cada uno de ellos. Por ejemplo, lo primero que veremos en nuestro trazo de captura será una petición al servidor DNS que resolverá la dirección del servidor desde donde realizaremos la descarga. Seguidamente podremos observar el trazo de la negociación TCP tal y como se muestra en la imagen siguiente:

Lo que sigue a continuación son las transferencias de segmentos y, posiblemente, otras capturas que nada tienen que ver con la descarga de nuestro archivo. Como el volumen de datos presentado puede llegar a ser interminable, Wireshark pone a nuestra disposición una herramienta llamada Expert Info, a la cual accedemos mediante el menú Analyze/Expert Info.

Mediante esta herramienta podemos tener una visión más clara de todo el proceso de trazado y de los posibles problemas que pueden haber surgido durante la transferencia. El cuadro desplegable de la parte superior derecha nos permite filtrar la salida de información (por defecto, se presentarán los errores, los avisos, las notificaciones y las negociaciones de protocolo), la cual es presentada en pantalla resaltada por diferentes colores. En principio y para valorar posibles problemas, sólo sería necesario filtrar por errores, avisos y notificaciones.

La captura nos presenta una notificación de ACK duplicado por la consecuente pérdida de segmento. Cada vez que se produce la pérdida de un paquete de segmento durante una transacción, el cliente enviará al servidor un requerimiento para volver a recibir dicho segmento y lo seguirá enviando tantas veces como sea necesario hasta recibir el segmento requerido. Si la conexión no es demasiado buena, el número de requerimientos irá aumentando a medida que avance la transacción, con la consecuente pérdida de velocidad. Cuando esto llega a producirse, podemos observar salidas de información de este tipo:

EJEMPLO PRACTICO PARA ANALIZAR DESCARGA POR MEDIO DE PROTOCOLO TCP

En primer lugar debemos buscar un archivo, programa, imagen etc para descargar en este caso se descargara un archivo pequeño desde el correo electronico este archivo pesa aproximadamente 638KB.

primero desde nuestra terminal ejecutamos el comando:

cortes:~# wireshark

Vamos al menu CAPTURE y posterior a eso OPTIONS hacemos clic sobre el boton CAPTURE FILTER y en el combo escogemos TCP y ACEPTAMOS

Posterior a esto hacemos clic en el botón START con lo cual iniciamos la captura luego de eso iniciamos la descarga.

Cuando la descarga allá finalizado con éxito damos STOP en wireshark con lo cual finalizamos la captura.

Luego hacemos clic en el menú STATISTICS y en IO GRAPHS.

En el cual debemos encontrar un gráfico como el siguiente.

En este podemos observar que fue una descarga aproximada de 25 segundos en la cual los picos se mantuvieron estables. por lo que fue una descarga exitosa.