DDoS是作为黑客、政治黑客行为和国际计算机恐怖分子可选择的一种武器而出现。由于很容易对有限的防御发起进攻,DDoS攻击目标并不仅仅是个人网站或其他网络边缘的服务器,他们征服的是网络本身。攻击明确地指向网络的基础设施,例如提供商网络中的集中或核心路由 器、DNS服务器。2002年10月,一次严重的DDoS攻击影响了13个根DNS(Domain Name Sevice) 服务器中的8个以及作为整个Internet通信路标的关键系统,这一事件预示了大规模攻击的到来。
因为DDoS攻击是最难防御的攻击之一,用合适的、有效的方法来响应它们,给依靠因特网 的组织提出了一个巨大的挑战。网络设备和传统周边安全技术,例如防火墙和IDSs(Intrusion Detection Systems)无法提供足够的针对DDoS保护。面对当前DDoS的冲击,要保护因特网有效性,需要一个能检测和阻止日益狡猾、复杂、欺骗性攻击的下一代体系结构。
成功的DDos攻击影响是很广泛的。网络站点的表现尤其受影响,可以造成客户和其它使用 者访问失败。SLAs(服务水平承诺)被违反,促使服务信用损失惨重。公司名誉受损,有时甚至是永久的。
DDoS
攻击类型DDoS攻击分为两种:要么大数据,大流量或者大量无法完成的不完全请求来攻击,快速耗尽服务器资源,要么发送大量的异常报文让被攻击设备作异常的处理。有效防止DDoS攻击的关键困难是无法将攻击包从合法包中区分出来:IDS进行的典型“签名”模式匹配起不到有效的作用;许多攻击使用源 IP 地址欺骗来逃脱源识别,很难搜寻特定的攻击源头。
有两类最常见的 DDoS 攻击:
●资源耗尽型:这种攻击消耗网络带宽或使用大量数据包淹没一个或多个路由器、服务器和防火墙;带宽攻击的普遍形式是大量表面看合法的 TCP、UDP 或 ICMP 数据包被传送到特定目的地;为了使检测更加困难,这种攻击也常常使用源地址欺骗,并不停地变化。这种攻击相对而言更加难以防御,因为合法数据包和无效数据包看起来非常类似
●导致异常型:利用TCP和HTTP等协议定义的行为来不断占用计算资源以阻止它们处理正常事务和请求。HTTP 半开和 HTTP 错误就是应用攻击的两个典型例子,缓存溢出攻击-试图在一个缓存中存储超出其设计容量的数据。这种多出的数据可能会溢出到其他的缓存之中,破坏或者覆盖其中的有效数据。
1.TCP SYN泛洪攻击-一个正常的 TCP 连接需要进行三方握手操作。首先,客户 端向服务器发送一个 TCP SYN 数据包。而后,服务器分配一个控制块,并响应 一个 SYN ACK 数据包。服务器随后将等待从客户端收到一个 ACK 数据包。如果服务器没有收到ACK 数据包,TCP连接将处于半开状态,直到服务器从客户端收到ACK数据包或者连接因为 time-to-live(TTL)计时器设置而超时为止。在连接超时的情况下,事先分配的控制块将被释放。当一个攻击者有意地、重复地向服务器发送 SYN 数据包,但不对服务器发回的SYN ACK 数据包答复 ACK 数据包时,就会发生 TCP SYN 泛洪攻击。这时,服务器将会失去对资源的控制,无法建立任何新的合法TCP连接,下面显示了一次普通的TCP连接开始时交换数据包的过程
为了避免syn-flood引起的内存耗尽,操作系统通常给监听接口关联了一个"backlog"队列参数,它同时维护连接的TCB上限数量和SYN-RECEIVED状态。尽管这种方案使主机的可用内存免遭攻击,但是backlog队列本身就带来了一个(小的)受攻击源。当backlog中没有空间时,就不可能再响应新的连接请求,除非TCB能被回收或者从SYN-RECIEVE状态中移除。试图发送足够多的SYN包而耗尽backlog是TCP SYN洪泛的目的。攻击者在SYN包中加入源IP地址,这样就不会导致主机将已分配的TCB从SYN-RECEVIED状态队列中移除(因为主机将响应SYN-ACK)。因为TCP是可靠的,目的主机在断开半开连接并在SYN-RECIEVED队列中移除TCB之前将等待相当长的时间。在此期间,服务器将不能响应其他应用程序合法的新TCP连接请求,下面是TCP SYN
洪泛攻击的过程:
下面还有变种的TCP SYN
攻击的过程:
2.UDP flood 又称UDP洪水攻击或UDP淹没攻击,UDP是没有连接状态的协议,因此可以发送大量的 UDP 包到某个端口,如果是个正常的UDP应用端口,则可能干扰正常应用,如果是没有正常应用,服务器要回送ICMP,这样则消耗了服务器的处理资源,而且很容易阻塞上行链路的带宽。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k pps的UDPFlood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。在UDPFLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击,正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。出现UDPFlood的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定。
3.ICMP flood 通过高速发送大量的ICMP Echo Reply数据包,目标网络的带宽瞬间就会被耗尽,阻止合法的数据通过网络。ICMP Echo Reply数据包具有较高的优先级,在一般情况下,网络总是允许内部主机使用PING命令。这将导致系统不断地保留它的资源,直到无法再处理有效的网络流量。攻击者可以通过发送一个伪造的ICMP Destination Unreachable或Redirect消息来终止合法的网络连接。更具恶意的攻击,如puke和smack,会给某一个范围内的端口发送大量的数据包,毁掉大量的网络连接,同时还会消耗受害主机CPU的时钟周期。还有一些攻击使用ICMP Source Quench消息,导致网络流量变慢,甚至停止。Redirect和Router Announcement消息被利用来强制受害主机使用一个并不存在的路由器,或者把数据包路由到攻击者的机器,进行攻击
4.Smurf 攻击---攻击时,攻击者会向接收站点中的一个广播地址发送一个IP ICMP ping(即“请回复我的消息”)。Ping 数据包随后将被广播到接收站点的本地网络中的所有主机。该数据包包含一个“伪装的”源地址,即该DoS攻击的对象的地址。每个收到此 ping 数据包的主机都会向伪装的源地址发送响应,从而导致这个无辜的、被伪装的主机收到大量的ping 回复。如果收到的数据量过大,这个被伪装的主机就将无法接收或者区分真实流量。
5.Fraggle
攻击---
它与
Smurf 攻击类似,只是利用 UDP 协议。攻击者掌握着大量的广播地址,并向这些地址发送假冒的
UDP 包,通常这些包是直接到目标主机的 7 号端口 —— 也就是 Echo 端口,而另一些情况下它却到了 Chargen 端口,攻击者可以制造一个在这两个端口之间的循环来产生网络阻塞
6.Land:采用目标和源地址相同的UDP包攻击目标。在Land攻击中,一个特别打造的SYN包中的原地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。对Land攻击反应不同,许多UNIX实现将崩溃,而 Windows NT 会变的极其缓慢(大约持续五分钟)。Land 攻击发生的条件是攻击者发送具有相同IP源地址、目标地址和TCP端口号的伪造TCP SYN数据包信息流。必须设置好SYN标记。其结果是该计算机系统将试图向自己发送响应信息,而受害系统将会受到干扰并会瘫痪或重启。最近的研究发现Windows XP SP2和Windows 2003 的系统对这种攻击的防范还是非常薄弱的。事实上,Sun的操作系BSD和Mac对这种攻击的防范都是非常薄弱的,所有这些系统都共享基于 TCP/IP 协议栈的BSD。
7.Trinoo 的攻击方法是向被攻击目标主机的随机端口发出全零的4字节 UDP 包,在处理这些超出 其处理能力的垃圾数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。它对IP 地址不做假,采用的通讯端口是:攻击者主机到主控端主机:27665/TCP 主控端主机到代理端主机:27444/UDP 代理端主机到主服务器主机:31335/UDP
8.Stacheldraht也是基于TFN和trinoo一样的客户机/服务器模式,其中Master程序与潜在的成千个代理程序进行通讯。在发动攻击时,侵入者与master程序进行连接。Stacheldraht增加了新的功能:攻击者与master程序之间的通讯是加密的,对命令来源做假,而且可以防范一些路由器用RFC2267过滤,若检查出有过滤现象,它将只做假IP地址最后8位,从而让用户无法了解到底是哪几个网段的哪台机器被攻击;同时使用rcp (remote copy,远程复制)技术对代理程序进行自动更新。Stacheldraht 同TFN一样,可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。Stacheldraht所发动的攻击包括UDP 冲击、TCP SYN 冲击、ICMP 回音应答冲击
9.TFN2K :TFN2K 是由德国著名黑客Mixter编写的同类攻击工具 TFN 的后续版本,在 TFN 所具有的 特性上,TFN2K 又新增一些特性,TFN2K 通过主控端利用大量代理端主机的资源进行对一个 或多个目标进行协同攻击。当前互联网中的 UNIX、Solaris 和 Windows NT 等平台的主机能被 用于此类攻击,而且这个工具非常容易被移植到其它系统平台上。
TFN2K 由两部分组成:在主控端主机上的客户端和在代理端主机上的守护进程。主控端向 其代理端发送攻击指定的目标主机列表。代理端据此对目标进行拒绝服务攻击。由一个主控端控制的多个代理端主机,能够在攻击过程中相互协同,保证攻击的连续性。主控央和代理端的网络通讯是经过加密的,还可能混杂了许多虚假数据包。整个 TFN2K 网络可能使用不同的 TCP、 UDP 或 ICMP 包进行通讯。而且主控端还能伪造其 IP 地址。所有这些特性都使发展防御 TFN2K 攻击的策略和技术都非常困难或效率低下。
导致异常型攻击Ping of Death:是一种拒绝服务攻击,方法是由攻击者故意发送大于65535字节的ip数据包给对方。 TCP/IP的特征之一是碎裂;它允许单一IP包被分为几个更小的数据包。在1996年,攻击者开始利用那一个功能,当他们发现一个进入使用碎片包可以将整个IP包的大小增加到ip协议允许的65536比特以上的时候。当许多操作系统收到一个特大号的ip包时候,它们不知道该做什么,因此,服务器会被冻结、当机或重新启动。ICMP的回送请求和应答报文通常是用来检查网路连通性,对于大多数系统而言,发送ICMP echo request 报文的命令是ping ,由于ip数据包的最大长度为65535字节。而ICMP报头位于数据报头之后,并与ip数据包封装在一起,因此ICMP数据包最大尺寸不超过65515字节利用这一规定,可以向主机发动 ping of death 攻击。ping of death 攻击 是通过在最后分段中,改变其正确的偏移量和段长度的组合,使系统在接收到全部分段并重组报文时总的长度超过了65535字节,导致内存溢出,这时主机就会出现内存分配错误而导致TCP/IP堆栈崩溃,导致死机.
Tear drop---攻击利用UDP包重组时重叠偏移(假设数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象。)的漏洞对系统主机发动拒绝服务攻击,最终导致主机菪掉;对于Windows系统会导致蓝屏死机,并显示STOP 0x0000000A错误。对付这种类型得攻击最好的方法就是要及时为操作系统打补丁了,但是Teardrop攻击仍然会耗费处理器的资源和主机带宽。
WinNuke攻击就是又称“带外传输攻击”,它的特征是攻击目标端口,被攻击的目标端口通常是
139 ,而且 URG 位设为 1 ,即紧急模式。 WinNuke 攻击就是利用了 Windows 操作系统的一个漏洞,向这些端口发送一些携带 TCP 带外( OOB )数据报文,但这些攻击报文与正常携带 OOB 数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合。这样 Windows 操作系统在处理这些数据的时候,就会崩溃。
jolt2:基于因特网协议
(IP) 分组破坏的拒绝服务 (DoS) 攻击,利用一个死循环不停的发送一个
ICMP/UDP 的 IP 碎片,让设备不断的处理这些分片,jolt2
的影响相当大,通过不停的发送这个偏移量很大的数据包,不仅死锁未打补丁的 Windows 系统,同时也大大增加了网络流量
ICMP重定向攻击,ICMP重定向报文是当主机采用非最优路由发送数据报时,设备会发回ICMP重定向报文来通知主机最优路由的存在。一般情况下,设备仅向主机而不向其它设备发送
ICMP 重定向报文,但一些恶意的攻击可能跨越网段向另外一个网络的主机发送虚假的重定向报文,以改变主机的路由表,破坏路由,干扰主机正常的
IP 报文转发,并以此增强其窃听能力。通过下述配置,可以有效地进行该类攻击的防御
蠕虫-蠕虫是一些独立的程序,可以自行攻击系统和试图利用目标的漏洞。在 成功地利用漏洞之后,蠕虫会自动地将其程序从攻击主机复制到新发现的系统, 从而再次启动循环。蠕虫会将自身的多个复本发送到其他的计算机,例如通过 电子邮件或者互联网多线交谈(IRC)。有些蠕虫(例如众所周知的红色代码和 NIMDA 蠕虫)具有 DDoS 攻击的特征,可能导致终端和网络基础设施的中断。
当然 DDoS 攻击的手段不止这些。但 DDoS 攻击和病毒攻击的方式完全不同:病毒是要求 用最新的代码,以绕过防病毒软件,一旦被反病毒软件识破,病毒就失去了生命力, 而 DDoS 可以说是不需要‘新’技术,一个10年前发明的TCP SYN照样造成今天的网站瘫痪。这也是DDoS非常难于防范的原因:DDoS 的请求表面上和正常的请求没有什么不同,大量的请求因为无法区分而无法拒绝。
至于DDOS的防御技术,以后再写个总结文档吧,这个是本人的总结文档,当然也参照了大量的网上DDOS的资料,IT需要分享,开源,共赢