原创  dos之syn flood攻击 收藏

dos之syn flood攻击

所有人都听说过syn flood攻击,我也随便写点,这里只贴点原理,我也用c语言写过一个syn flood的程序,gcc编译的,大家要是有兴趣的话我以后贴出来(不要拿来干坏事)

一种比较常见的目标资源匮乏型的DoS攻击就是SYN flood攻击。这是利用TCP本身的漏洞而写成的。TCP是一个面向连接的可靠的传输协议(关于TCP的结构已在上文中描述过了,并在IETF组织颁布的RFC793中有具体描述),在TCP建立连接的时候,一个重要的步骤就是3次握手(three way shake)。其具体步骤是发起连接者首先发送一个seq号为x的SYN信号给接受者,然后接受者将SYN的x+1作为ACK信号回送给发送者,并同时发送另一个seq号码为y的SYN给发送者,当发送者接收到这两个信号时,它就再回发一个seq号为y+1的ACK给接受者。这样整个TCP的连接就建立了,其状态为ESTABLISHED。

然而,如果经过精心的设计,当发送者在发送了seq为x的SYN信号后,并不回应接受者seq号为x+1的ACK和seq号为y的SYN,而是发送另一个seq为z的新的SYN。这样,接受者就会一边等待原来的SYN请求的响应,一边又为新的SYN请求分配新的资源。当这样的攻击达到一个非常高的速度和数量的时候,接受方的资源将会很快被消耗尽。这也就是SYN flood的原理。

一个SYN的攻击代码主要是利用了linux里原始套接字的概念。原始套接口可以读写ICMP分组,可以读写特殊处理的IP数据包,内核不处理这些数据包的IP协议字段。利用原始套接口设置IP_HDRINCL套接口选项可以构造自己的IP头部,这时内核写的数据起始地址指IP头部的第一个字节,并且用户必须提供包括IP头部的数据大小值,此时,若Identification=0,则由内核指定。Linux只允许root用户自行修改IP与TCP头部字段。

使用原始套接字,可以在短时间内发送大量的具有SYN位的TCP数据包。这种攻击的特点是,极难防范,使被系统变的不可用,一般攻击者使用伪装IP地址,难以反追踪,但是当攻击者停止攻击行为后,被攻击系统将恢复正常。

发表于 @ 2005年03月21日 10:40:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:ACM竞赛介绍与策略  | 新一篇:最短路径算法

  • 发表评论
  • 评论内容:
  •  
Copyright © Kvci
Powered by CSDN Blog