Board logo

标题: DDOS的主要几个攻击 [打印本页]

作者: fangzhen    时间: 2009-3-11 16:51     标题: DDOS的主要几个攻击

1.SYN变种攻击

  发送伪造源IP的SYN数据包但是数据包不是64字节而是上千字节这种攻击会造成一些防火墙处理错误锁死,消耗服务器CPU内存的同时还会堵塞带宽。

  2.TCP混乱数据包攻击

  发送伪造源IP的 TCP数据包,TCP头的TCP Flags 部分是混乱的可能是syn ,ack ,syn+ack ,syn+rst等等,会造成一些防火墙处理错误锁死,消耗服务器CPU内存的同时还会堵塞带宽。

  3.针对用UDP协议的攻击

  很多聊天室,视频音频软件,都是通过UDP数据包传输的,攻击者针对分析要攻击的网络软件协议,发送和正常数据一样的数据包,这种攻击非常难防护,一般防护墙通过拦截攻击数据包的特征码防护,但是这样会造成正常的数据包也会被拦截,

  4.针对WEB Server的多连接攻击

  通过控制大量肉鸡同时连接访问网站,造成网站无法处理瘫痪,这种攻击和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍,有些防火墙可以通过限制每个连接过来的IP连接数来防护,但是这样会造成正常用户稍微多打开几次网站也会被封,

  5.针对WEB Server的变种攻击

  通过控制大量肉鸡同时连接访问网站,一点连接建立就不断开,一直发送发送一些特殊的GET访问请求造成网站数据库或者某些页面耗费大量的CPU,这样通过限制每个连接过来的IP连接数就失效了,因为每个肉鸡可能只建立一个或者只建立少量的连接。这种攻击非常难防护,后面给大家介绍防火墙的解决方案

  6. 针对WEB Server的变种攻击

  通过控制大量肉鸡同时连接网站端口,但是不发送GET请求而是乱七八糟的字符,大部分防火墙分析攻击数据包前三个字节是GET字符然后来进行http协议的分析,这种攻击,不发送GET请求就可以绕过防火墙到达服务器,一般服务器都是共享带宽的,带宽不会超过10M 所以大量的肉鸡攻击数据包就会把这台服务器的共享带宽堵塞造成服务器瘫痪,这种攻击也非常难防护,因为如果只简单的拦截客户端发送过来没有GET字符的数据包,会错误的封锁很多正常的数据包造成正常用户无法访问,后面给大家介绍防火墙的解决方案

  7.针对游戏服务器的攻击

  因为游戏服务器非常多,这里介绍最早也是影响最大的传奇游戏,传奇游戏分为登陆注册端口7000,人物选择端口7100,以及游戏运行端口7200,7300,7400等,因为游戏自己的协议设计的非常复杂,所以攻击的种类也花样倍出,大概有几十种之多,而且还在不断的发现新的攻击种类,这里介绍目前最普遍的假人攻击,假人攻击是通过肉鸡模拟游戏客户端进行自动注册、登陆、建立人物、进入游戏活动从数据协议层面模拟正常的游戏玩家,很难从游戏数据包来分析出哪些是攻击哪些是正常玩家。

  以上介绍的几种最常见的攻击也是比较难防护的攻击。一般基于包过滤的防火墙只能分析每个数据包,或者有限的分析数据连接建立的状态,防护SYN,或者变种的SYN,ACK攻击效果不错,但是不能从根本上来分析tcp,udp协议,和针对应用层的协议,比如http,游戏协议,软件视频音频协议,现在的新的攻击越来越多的都是针对应用层协议漏洞,或者分析协议然后发送和正常数据包一样的数据,或者干脆模拟正常的数据流,单从数据包层面,分析每个数据包里面有什么数据,根本每办法很好的防护新型的攻击。

  SYN攻击解析

  SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。所以TCP协议采用三次握手建立一个连接。

  第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认; 

  第二次握手:服务器收到syn包,必须确认客户的SYN 同时自己也发送一个SYN包 即SYN+ACK包,此时服务器进入SYN_RECV状态;

  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

  SYN攻击利用TCP协议三次握手的原理,大量发送伪造源IP的SYN包也就是伪造第一次握手数据包,服务器每接收到一个SYN包就会为这个连接信息分配核心内存并放入半连接队列,如果短时间内接收到的SYN太多,半连接队列就会溢出,操作系统会把这个连接信息丢弃造成不能连接,当攻击的SYN包超过半连接队列的最大值时,正常的客户发送SYN数据包请求连接就会被服务器丢弃, 每种操作系统半连接队列大小不一样所以低于SYN攻击的能力也不一样。那么能不能把半连接队列增加到足够大来保证不会溢出呢,答案是不能,每种操作系统都有方法来调整TCP模块的半连接队列最大数,例如Win2000操作系统在注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里 TcpMaxHalfOpen,TcpMaxHalfOpenRetried ,Linux操作系统用变量tcp_max_syn_backlog来定义半连接队列的最大数。但是每建立一个半连接资源就会耗费系统的核心内存,操作系统的核心内存是专门提供给系统内核使用的内存不能进行虚拟内存转换是非常紧缺的资源windows2000 系统当物理内存是4g的时候 核心内存只有不到300M,系统所有核心模块都要使用核心内存所以能给半连接队列用的核心内存非常少。Windows 2003 默认安装情况下,WEB SERVER的80端口每秒钟接收5000个SYN数据包一分钟后网站就打不开了。标准SYN数据包64字节 5000个等于 5000*64 *8(换算成bit)/1024=2500K也就是 2.5M带宽 ,如此小的带宽就可以让服务器的端口瘫痪,由于攻击包的源IP是伪造的很难追查到攻击源,,所以这种攻击非常多。
作者: mnop712    时间: 2009-4-10 19:27     标题:

提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 PHP开发笔记 (http://phpvi.com/) Powered by Discuz! 6.1.0