Wireshark / Windump. Analisis capturas tráfico red. Interpretación Datagrama IP. (Actualización).

Ya vimos en el capítulo Analisis capturas tráfico red. Interpretación Datagrama IP. (Parte I) los campos contenidos en la cabecera de un datagrama IP. Ante la petición de aclaración y mejor explicación de estos conceptos en comentarios y algún correo, paso a actualizar el mencionado artículo, avanzar y explicar mejor todos los conceptos involucarados.

Decíamos en el artículo de referencia……:

Una de las tareas habituales de un administrador de red es el análisis de los logs de tráfico de la red. Análisis que puede ser de rendimiento ó seguridad. Tráfico de la LAN, entrante y saliente a través de cortafuegos, análisis de Sistemas de Detección de Intrusos, capturas de tráfico de red, etc.

Para ello contamos con variadas herramientas. Entre ellas Snort, TCPDump/Windump, WireShark, etc. (Destaco estas tres últimas por estar basadas en la librería libpcap).

En este artículo vamos a analizar las capturas en hexadecimal de estas herramientas para obtener todos los datos posibles de las cabeceras IP, segmento TCP, además de comprender de forma más visual los conceptos TCP/IP.

En esta actualización del artículo, veremos también estos conceptos, no solo a través de una captura tcpdump / windump, tambíen a través de WireShark.

Las herramientas mencionadas hacen uso de Libpcap, que es una librería de código abierto que ofrece al programador una interfaz desde la que capturar paquetes en la capa de red. La implementación para windows es Winpcap. Entre las utilidades más importantes de los analizadores de tráfico de red está la que nos proporciona la salida en hexadecimal de las capturas.

En este artículo vamos a analizar dichas capturas en hexadecimal para obtener todos los datos posibles de las cabeceras IP y segmentos TCP, además de comprender de forma más visual los conceptos TCP/IP.

Para ello usaremos TCPDump (Linux/Unix) / Windump (Windows).También usaremos Wireshark.

Antes que nada recordar un poco como funciona TCPDump / Windump:

Recordamos algo básico sobre el funcionamiento de Wireshak.

Y recordar también los conceptos TCP/IP:

Para las salidas en hexadecimal usaremos la opción -x de tcpdump / windump que captura por defecto 68 bytes.

Para capturar toda la información usamos el snaplen (-s0). A cero estamos cogiendo los paquetes completos.

Si hubiéramos puesto -s 512 se capturarían sólo los primeros 512 bytes de un determinado paquete.

Comenzamos.

Interpretación de un Datagrama IP.

Para mejor referencia tenemos abajo el formato de la cabecera de datagrama IP:

Datagrama IP

Esta es una salida en hexadecimal de cualquiera de los analizadores
de red mencionados más arriba, en este caso tcpdump, aunque podemos usar también Tshark:

captura hexadecimal datos cabecera ip windump tcpdump

En la primera línea tenemos ya algunos datos (esto ya lo hemos visto en el artículo de tcpdump). Si embargo vamos a descifrar la cabecera para obtener los mismos y otros datos importantes.

NOTA: Para no perder detalle, observemos al gráfico de la cabecera IP y la captura hexadecimal para ver a que corresponde cada valor quepaso a explicar a continuación. Coloreo los primeros valores para que sea más facil localizarlos.

DATAGRAMA IP

VERSION: 4 Tiene una longitud de 4 bits. En este caso 4 (0100 en binario) Se trata de la versión del formato de la cabecera IP. Vemos que 4 corresponde a la versión ipv4. si el valor fuera 6, se trataría de la versión ipv6.

IHL: 5  ó longitud de la cabecera en palabras de 32 bits. En este caso: 5*32=160 bits. El valor mínimo es 5. Este campo indica en que punto o bit  termina la cabecera del datagrama. Esto es así porque al ser el datagrama de longitud variable devido a las opciones, también de tamaño variable, se necesita saber donde comenzará la parte de datos del paquete.

TOS: 00 Tipo de servicio respecto a la fiabilidad, velocidad, retardo, seguridad, etc deseados. Tiene un tamaño de 8 bits, en este caso 00000000. Hay que tener en cuenta que algunas redes ofrecen prioridad de servicio para dar mayor importancia a este tipo de tráfico.

Tabla de valores para TOS

  • Bits 0-2 Prioridad.

  • Bit 3 0 = Demora Normal, 1 = Baja Demora.

  • Bit 4 0 = Rendimiento Normal, 1 = Alto rendimiento.

  • Bit 5 0 = Fiabilidad Normal, 1 = Alta fiabilidad.

  • Bits 6-7 Reservado para uso futuro.

En este caso:

prioridad 0 y demora, rendimiento y fiabilidad: normal

TOTAL LENGTH: 0064 Longitud total del datagrama medida en octetos. Se incluyen los datos encapsulados, cabecera y datos.

La longitud del campo es de 16 bits. De esta manera la longitud máxima es (1111111111111111) = 65535 bytes. En este caso 100 bytes.

ID: 8a01 Número de identificación único por cada datagrama que permitirá el reensamblaje posterior al ser dividido en fragmentos más pequeños. Longitud 16 bits. En este caso Id=35329. Lo asigna el remitente en la conexión. El valor de este campo junto a la información de Source IP y Destination IP, resuelve la identificación única del paquete al que hace referencia.

FLAGS: 4 Bandera (Flag) Campo de 3 bits.Indicadores de control. Usado en caso de defragmentación.

  • El primer bit esta reservado y es siempre 0.
  • El segundo es el el bit de indicación de no fragmentación (DF). (010)
  • El tercero (MF) es de verificación que el datagrama llega a su destino (001) completo, está activo en todos los datagramas enviados excepto en el último para informar que ya no hay más fragmentos.

FRAGMENT OFFSET: 000 Posición. Longitud de 13 bits. Posición del fragmento dentro del datagrama en caso de fragmentación.

TTL: 80 Tiempo de vida. Longitud 8 bits. Impide que un paquete esté indefinidamente viajando por la red. En este caso 128 indica que cada vez que un datagrama atraviese un router este numero se decrementa en 1. cuando el TTL llege a 0 el datagrama se descarta y se informa de ello al origen con un mensaje de tiempo excedido.

PROTOCOL: 06 Protocolo. Se refiere al protocolo de siguiente nivel que se usa en la parte de datos. Longitud 8 bits. En este caso hex(06) (00000110) = TCP en decimal sería 6.

Valores para los protocolos

1 ICMP, 2 IGMP, 6 TCP, 9 IGRP, 17 UDP, 47 GRE, 50 ESP, 51 AH, 88 EIGRP, 89 OSPF, 115 L2TP.

HEADER CHEKSUM: ec4e (CRC) o Suma de Control de la Cabecera. Longitud 16 bits. Es la suma de comprobación de errores de la cabecera del datagrama. Este número se calcula nuevamente en cada salto del datagrama a través de los routers.

SOURCE ADDRESS: c0.a8 01.f0 dirección origen: 192.168.1.240 longitud 32 bits.

DESTINATION ADDRESS: c0.a8 01.03 dirección destino: 192.168.1.3 longitud 32 bits.

Tenemos otro campo que es Options (Opciones) de longitud variable con información opcional para el datagrama. Puede tener 0 o más opciones. Y Padding (Relleno) también de longitud variable. Asegura que la cabecera IP termine en múltiplo de 32 bits.

Según el RFC0791 Las opciones Options pueden o no aparecer en los datagramas. Deben ser implementadas por todos los módulos IP (host y pasarelas). Lo que es opcional es su transmisión en cualquier datagrama en particular, no su implementación.

NOTA: Este campo de opciones lo veremos de forma más detallada en otro artículo.

El último campo es Data, de longitud variable, conteniendo los datos a enviar. La longitud máxima es 64 Kbytes y comienza con el contenido de la cabecera del protocolo de siguiente nivel, es decir TCP o UDP. Los datos y encabezamiento del segmento TCP van dentro del campo Data del datagrama IP, es lo que llamamos encapsulación.

En este caso el campo Data comienza con con los campos de la cabecera del segmento TCP puerto origen y puerto destino:

008b Puerto origen 139

044a Puerto Destino 1098

Formato de la cabecera TCP (encapsulado en el Data del segmento IP)

Datagrama IP

Valores Cabecera Datagrama IP en Wireshark.

Bien. Vamos ahora a ver los conceptos estudiados sobre la cabecera del datagrama IP, pero en una captura Wireshark cualquiera.

cabecera datagrama ip en wireshark

Vemos en la ventana de protocolos señalado el item correspondiente a los datos de la cabecera IP. Internet Protocol y su correspondencia (abajo) con los datos en hexadecimal.

Apreciamos valores, ya explicados al principio de este artículo, de

  • Version: 4
  • Header Length: 20 bytes, se refiere a IHL de la cabecera.
  • Differenciated Services Field. (TOS). Tipo de servicio.
  • Total Length: 40
  • Identification 0xb680 (46720)
  • Flags: 0x04. E nes te caso vemos activado en bit de No fragmentado.
  • Fragment Offset: 0
  • Time to Live: 128 (TTL)
  • Protocol: TCP (0x06) como viemos en el cuadro de protocolos posibles.
  • Header checksum:  0x6e36
  • source y destination

Apreciamos unos campos para mostrar información de geolocalización de las IP GeoIP (vimos como usar Wireshark y GeoIP en este artículo ):

geoip golite wireshark

——————————————————————————–

Esta entrada fue publicada en Actualizaciones de Artículos, Seguridad y redes, Wireshark . Tshark y etiquetada , , . Guarda el enlace permanente.

6 respuestas a Wireshark / Windump. Analisis capturas tráfico red. Interpretación Datagrama IP. (Actualización).

  1. Pingback: Modificando ficheros de tráfico de red .pcap con Bittwiste. | Seguridad y Redes

  2. aioros dijo:

    Muchas gracias por este articulo!!ahora me queda mucho mas claro.

  3. Sergio dijo:

    Excelente informacion

  4. Juan Caro dijo:

    Muy buen artículo, muchas gracias.

  5. Don Orlay dijo:

    Excelente!!

  6. miguel dijo:

    Hola, para terminar de entender este interesante articulo tengo la siguiente consulta:
    segun la teoria un archivo PCAP tiene el formato: Global Header + Packet Header1 + Packet Data1 + … + Packet HeaderN + Packet DataN
    entonces que estamos viendo en las capturas de este articulo: Packet Header + Packet Data?
    y en particular la Cabecera de Datagrama IP analizada es parte es parte del Packet Header?.

    Gracias por tu atención.

Deja un comentario