Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Qué es un ataque de fragmentos de IP?

¿Qué es un ataque de fragmentos de IP?

Ataques comunes de fragmentación de IP

Este artículo presenta brevemente los principios de la fragmentación de IP y analiza en detalle los principios y características de los ataques de fragmentación de IP comunes en función de los resultados de captura de paquetes de Snort. Finalmente, se brindan algunas medidas de prevención. Asesoramiento sobre ataques de fragmentación de IP. Espero que ayude a profundizar la comprensión del protocolo IP y

algunos ataques DoS.

1. ¿Por qué existe la fragmentación de IP?

-=-=-=-=-=-=-=-=-=-=-=-=-=-= <. /p>

La capa de enlace tiene una función de unidad de transmisión máxima (MTU), que limita la longitud máxima de la trama de datos. Los diferentes

tipos de red tienen diferentes límites superiores. La MTU de Ethernet es 1500, que puede ver usando el comando netstat -i

. Si la capa IP quiere transmitir un paquete y la longitud del paquete excede la MTU, la capa IP debe fragmentar el paquete para que la longitud de cada fragmento sea menor o igual a la MTU. Supongamos que queremos transmitir un paquete UDP. La MTU de Ethernet es de 1500 bytes. La inicialización de IP típica es de 20 bytes. La inicialización de UDP es

La parte de carga útil de los datos es 1500-20-8=1472. byte. La fragmentación se produce si la porción de datos tiene más de 1472 palabras

bytes. -----gt;|lt;--3--gt;|lt;---------13----------gt;|

Identificación: los campos de identificación de los paquetes IP enviados por el remitente son todos valores únicos, que se copian en cada fragmento al fragmentar.

R: Reservado y sin uso.

DF: No fragmentar bit, si este bit se establece en 1, la capa IP no fragmentará el datagrama

.

MF: Más Fragmento, el bit "más fragmento", que se establece en 1 para cada fragmento que compone el datagrama excepto el último fragmento.

Desplazamiento del fragmento: la posición de desplazamiento del fragmento desde el principio del paquete original. El número de bytes a compensar es

este valor multiplicado por 8.

Además, cuando se fragmenta un datagrama, el valor de longitud total de cada fragmento se convertirá en el valor de longitud de ese fragmento.

Al llegar al host de destino, cada fragmento de IP se enrutará individualmente y se volverá a ensamblar en la capa de IP; tenga la seguridad de que los

datos en el encabezado completarán correctamente el reensamblaje del; fragmentos. No puedes evitar preguntar, dado que los fragmentos se pueden reorganizar, ¿cómo ocurren los llamados ataques de fragmentos?

2.Ataque de fragmentos de IP

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=

El encabezado IP tiene dos bytes que indican la longitud de todo el paquete IP, por lo que la longitud de un paquete IP solo puede llegar a

0xFFFF, que es 65535 bytes. Si se envían intencionalmente fragmentos de IP cuya longitud total exceda 65535, algunos núcleos del sistema más antiguos

tendrán problemas para procesar estos fragmentos, lo que provocará una falla del sistema o denegación de servicio. Además, si se modifican los desplazamientos entre fragmentos

algunos sistemas no podrán manejar los fragmentos, lo que provocará que el sistema falle. Por tanto, la causa de la vulnerabilidad no reside en el algoritmo de reensamblaje.

Analicemos algunos programas de ataque de fragmentación famosos uno por uno para comprender cómo crear artificialmente fragmentos de IP para atacar el sistema.

3. ping de la muerte

-=-=-=-=-=-=-=-=-=-=-=-=

Ping o' death es un ataque de fragmentación que explota el protocolo ICMP.

Si un atacante envía un paquete de solicitud de eco con una longitud superior a

65535, el host de destino reorganizará los fragmentos, lo que provocará que el búfer de segmento de 65535 palabras preasignado se desborde y el sistema normalmente colapsará o se bloqueará. .

¿No es el ping simplemente enviar paquetes de solicitud de eco ICMP? ¡Intentemos un ataque!

# ping -c 1 -s 65535 192.168.0.1

Error: el tamaño del paquete 65535 es demasiado grande.65507

Desafortunadamente, Linux viene con la función ping No parece permitirnos hacer cosas malas.

65507 es lo que calcula: el ping en Win2K es más tacaño, con un tamaño de datos de sólo 65500. Por lo tanto, debes buscar otro programa para enviar los paquetes, pero las versiones más nuevas del sistema operativo han corregido este defecto, por lo que también puedes continuar leyendo este artículo.

Por cierto, recuerdo que en el 99, unos "hackers patrióticos" (antecesores de los "redditors") movilizaron el país.

Los internautas en algún momento comenzaron a hacer ping a un sitio web estadounidense, intentando hacer ping a un servidor remoto. En realidad, este es un ataque de inundación de ping que utiliza una gran cantidad de paquetes de solicitud de eco para ralentizar la respuesta del host y obstruir la red de destino, que es similar al ping de la muerte. No es lo mismo.

4.jolt2

-=-=-=-=-=-=-=-=-=-=-=

jolt2.c Un bucle infinito que envía repetidamente fragmentos de IP ICMP/UDP y puede causar que las máquinas con Windows se bloqueen. Probé Windows 2000 sin SP y el uso de la CPU inmediatamente subió a

100 y el mouse no se movía.

Utilizamos Snort para capturar paquetes enviados utilizando los protocolos ICMP y UDP respectivamente.

Paquete ICMP enviado:

01/07-15:33:26.974096 192.168.0.9-gt; 192.168.0.1

ICMP TTL: 255 TOS :0x0 ID: 1109 IpLen: 20 DgmLen: 29

Paquete UDP enviado:

01/10-14:21:00.298282 192.168.0.9 -gt; .0.1

UDP TTL: 255 TOS: 0x0 ID: 1109 IpLen: 20 DgmLen: 29

Desplazamiento de fragmento: 0x1FFE Tamaño de fragmento: 0x9

04 D3 04 D2 00 09 00 61 ....... .a

Se puede ver en los resultados anteriores:

* El bit de bandera de fragmentación MF = 0, lo que significa Esto es el último fragmento.

* El desplazamiento es 0x1FFE y la fórmula de cálculo de longitud después de la reorganización es (0x1FFE * 8) 29 = 65549 gt

65535, desbordamiento.

* El ID del paquete IP es 1109, que se puede utilizar como firma de detección de IDS.

* Paquete ICMP:

Tipo 8, código 0, es una solicitud de eco;

La suma de verificación es 0x0000, el programa no calculó la suma de verificación, por lo que Es este paquete ICMP el que es ilegal

.

*Paquete UDP:

El puerto de destino lo especifica el usuario en los parámetros del comando;

El puerto de origen es el resultado de la operación OR del puerto de destino y 1235;

p>

La suma de verificación es 0x0000, que es lo mismo que ICMP. La suma de verificación no se calcula y es UDP ilegal.

La parte Netload tiene un solo carácter "a".

jolt2.c debería poder falsificar la dirección IP de origen, pero el programa fuente no asigna la dirección IP que el usuario quiere falsificar a src_addr. No sé si el autor hizo esto intencionalmente. .

El impacto de jolt2 es bastante grande. Al enviar continuamente dichos paquetes con grandes desplazamientos, no sólo

bloqueará los sistemas Windows sin parches, sino que también aumentará drásticamente el tráfico de la red. Al utilizar jolt2 para simular el tráfico de red, aprovechamos esta característica para probar la eficiencia de detección de ataques del IDS bajo tráfico de alta carga.

5. lágrima

-=-=-=-=-=-=-=-=-=-=-=

La lágrima también es relativamente simple, se envían dos paquetes UDP por defecto, lo que puede provocar que algunos kernels de Linux fallen

Los resultados de la captura de Snort son los siguientes:

El primero:

08/01-11:42:21.985853 192.168.0.9-gt; 192.168.0.1

UDP TTL: 64 TOS: 0x0 ID: 242 IpLen: 20 DgmLen: 56 MF

Desplazamiento de fragmentación: 0x0 Tamaño de fragmentación.0x24

A0 A8 86 C7 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >

... ..$..........

00 00 00 00 ....

* MF=1, offset=0, paquete IP cortado el el primero.

*Diagrama de estructura:

|lt;-------20--------gt;|lt;------8- -----gt;|lt;---------------28----------------gt;| p> - - - - - - - - - - - - - - - - - - - - - - - - -

La segunda:

08/01-11: 42 :21.985853 192.168.0.9 -gt; 192.168.0.1

UDP TTL: 64 TOS: 0x0 ID.242 IpLen: 20 DgmLen: 24

Desplazamiento de fragmento: 0x3 Tamaño de fragmento: 0x4

A0 A8 86 C7....

* MF = 0, desplazamiento = 0x3, bytes de desplazamiento 0x3 * 8 = 24, último fragmento.

* Estructura:

|lt;-------20--------gt;|lt;--4--gt;| /p>

- - - - - - - - - - - - - - -

| IP | - - - - - -

Si se modifica el código fuente,

Si se modifica el código fuente, el desplazamiento del segundo fragmento del paquete IP también puede ser 0x4, el El número de bytes de desplazamiento será

0x4 * 8 = 32.

El siguiente diagrama esquemático muestra el proceso de reensamblaje de fragmentos en el extremo receptor, correspondiente a los dos casos donde los bytes desplazados son 24

y 32:

>lt;-------20--------gt;|lt;------8------gt;|lt;--- ---- --------28----------------gt;|

- - - - - - - - - - - - - - - - - - - - - - -

|

| ---- ---- 24 ----------------gt;| Datos| lt;-- 4-- gt;|

|

|

- - -

|lt;---- ------- --------

32 ------------------gt |

|

- - - -

|lt;--4--gt;|

Se puede ver que el desplazamiento del segundo El paquete IP es más pequeño que el primero. El desplazamiento al final de cada paquete de datos, e incluidos los datos del segundo

paquete de datos IP, no excede el final del primer paquete de datos. Esto es una superposición. . Los kernels de Linux más antiguos

(1.x - 2.0.x) tienen problemas para manejar esta superposición y WinNT/95 recibe entre 10 y 50

retrasos. La película también fallará. Puede leer el código fuente de Teardrop.c para aprender cómo crear y enviar dichos paquetes

.

6. Cómo prevenir ataques de fragmentación de IP

-=-=-=-=-=-=-=-=-=-=-=-=-=-= - =-=-=-=-=

* Para sistemas Windows, utilice el último Service Pack; el kernel de Linux actual ya no se ve afectado por esto

.

* Si es posible, bloquee los paquetes fragmentados en los límites de la red o utilice iptables para limitar la cantidad de paquetes fragmentados que pasan por segundo.

* Si el firewall tiene la función de reorganizar fragmentos, asegúrese de que no haya ningún problema con su propio algoritmo, de lo contrario

DoS afectará a toda la red.

* En Win2K, personalice la política de seguridad de IP para configurar "Comprobación de fragmentación".