Banner 1

Analisis capturas tráfico red. Interpretación Datagrama IP. (Parte I)

Analisis capturas tráfico red. Interpretación Datagrama IP. (Parte I)


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 o seguridad. Tráfico de la LAN, entrante y saliente a través de cortafuegos, análisis de Sistemas de Detección de Intrusos, etc.

Para ello contamos con variadas herramientas. Entre ellas Snort, TCPDump/Windump, Ethereal (ahora WireShark), etc. Destaco esta 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, segmentos TCP, además de comprender de forma más visual los conceptos TCP/IP.

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 o seguridad. Tráfico de la LAN, entrante y saliente a través de cortafuegos, análisis de Sistemas de Detección de Intrusos, etc.

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

Libpcap 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).

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

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.

Datagrama IP

Esta es una salida en hexadecimal de cualquiera de los analizadores
de red mencionados más arriba, en este caso tcpdump:

IP 192.168.1.240.139 > 192.168.1.3.1098: tcp 60 (DF)
0x0000 4500 0064 8a01 4000 8006 ec4e c0a8 01f0 E..d..@....N....
0x0010 c0a8 0103 008b 044a fcea 6aaf 60e5 ea5b .......J..j.`..[
0x0020 5018 fd34 8917 0000 0000 0038 ff53 4d42 P..4.......8.SMB
0x0030 7500 0000 0098 07c8 0000 0000 0000 0000 u...............
0x0040 0000 0000 04b0 fffe 01a8 c000 07ff 0038 ...............8
0x0050 0001 00ff 0100 00ff 0100 0007 0049 5043 .............IPC
0x0060 0000 0000

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.

DATAGRAMA IP

4 ipv4. tiene una longitud de 4 bits. En este caso 4 (0100)

5 IHL o longitud de la cabecera en palabras de 32 bits. En este caso: 5*32=160 bits

00 (TOS) Tipo de servicio respecto a la fiabilidad, velocidad, retardo, seguridad... Tiene un tamaño de 8 bits, en este caso 00000000.

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

0064 Longitud total. Se incluyen los datos encapsulados.

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

8a01 (ID) 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.

4 Bandera (Flag) Campo de 3 bits.

  • 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.

000 Fragment offset o Posición. Longitud de 13 bits. Posición del fragmento dentro del datagrama.

80 (TTL) 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.

06 Protocolo. 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.

ec4e Header Cheksum(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.

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

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.

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

El segmento TCP lo estudiaremos en otra entrega.

fuente: http://seguridadyredes.nireblog.com/post/2008/01/17/analisis-capturas-trafico-red-interpretacian-datagrama-ip-parte-i

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay