DoS(Denial of Service),意为拒绝服务,指攻击者通过某种手段占用大量网络服务资源,使合理的用户请求得不到响应,导致网络服务不可用。它是通过占用资源达到破坏网络服务为目的。DoS是目前互联网上威胁最大的攻击方式之一,因为它很大程度上利用了协议本身设计的漏洞,所以很难完全消除。
DoS按照攻击源主机的数量可分为一般DoS和DDoS(Distributed DoS,分布式DoS)。一般DoS攻击源主机为一台;DDoS攻击源主机为一台;DDoS攻击源主机通常为多台被入侵并安装DoS攻击软件的傀儡主机,因为数量众多且相互协作配合,所以攻击能力更强。
从图中可以看到,DDoS包括三个部分:客户系统(黑客)、处理系统(控制傀儡机)和代理系统(攻击傀儡机)。首先,攻击者在客户系统上对要进行攻击的系统进行扫描,之后在处理系统上安装用于对代理系统进行扫描和侵入的软件,然后在代理系统上安装并加载可以远程控制的攻击软件,最后由攻击者在客户系统发出命令给处理系统控制代理系统对目标系统进行攻击。虽然攻击的最终源头是客户系统,但是由于使用了处理系统和代理系统作为跳板,也就是我们常说的“肉鸡”,所以很好的隐藏了攻击者。
DoS按照使用协议从属于OSI模型的层次,可分为网络层DoS、传输层DoS和应用层DoS。
DoS按照攻击目标,可分为传输设备(路由器,三层交换机)DoS、安全设备(防火墙)DoS和主机(服务器、集群)DoS。
DoS攻击的原理
1.IP欺骗(IP spoofing)
几乎在所有DoS攻击之前,攻击者都要使用虚假IP地址来隐藏真实IP地址。虚假IP地址可以在一个IP段内变化,对被攻击者来说数据包好像来自多个不同主机。攻击者经常使用私有IP地址作为虚假IP地址,因为私有IP地址不能全局域网上进行路由,所以不会返回数据包到攻击者。如果虚假IP地址是全局可路由IP地址,攻击者有可能会操作两个系统。下文中将介绍的ICMP flooding就属于这种情况。
2.网络层DoS
IP碎片攻击(IP fragment attack)是常见的网络层DoS。当IP数据包的长度大于数据链路层的MTU(maxmium transmission unit,最大传输单元)时,需要对IP数据包进行分片操作。在IP头部有三个字段用于控制IP数据包的分片(如图2),其中标识(identification)用来指明分片从属的IP数据包;标志(flag)用来控制是否对IP数据包进行分片和该分片是否是最后分片;分片偏移(Fragment offset)指明该分片在原数据包中的位置,以8Byte为基本单位。若该字段的值为100,则表示该分片中数据处于原IP数据包的800Byte之后。
IP碎片攻击利用了IP分片重组中的漏洞;所有IP分片长度之和可以大于最大IP数据包长度(65535Byte)。通常,TCP/IP协议栈接受到正常IP分片时,会按照分片的偏移字段的值为该IP数据包预留缓冲区。当收到拥有恶意分片偏移字段值的IP分片时,TCP/IP则会为该IP数据包预留超常缓冲区。如果TCP/IP协议接收到大量的恶意IP分片,就会导致缓冲区溢出,使主机宕机,合法服务请求被拒绝。使用ICMP ECHO REQUEST的IP碎片攻击被称为死亡之PING(death of ping),因为ICMP ECHO REQUEST 经常由Ping程序产生。
分片字段
Identification | Flags | Fragment offset |
图 二
ICMP flooding 是另外一种网络层的DoS。它是通过向攻击主机发送大量的ICMP ECHO REQUEST数据包,导致大量资源被用于ICMP ECHO REPLY ,合法服务请求被拒绝。还有一种ICMP flooding ,使用目的地址为直接广播地址(directed broadcast,如202.103.245.255/24)的IP数据包,不仅占用网络的带宽资源,通过使用虚假IP地址,可以发动对特定主机的攻击。
3.传输层DoS
TCP SYN flooding是最常用的DoS攻击方式。TCP连接初始化过程称为三次握手(three-way handshake):A连接发起端发送标志有SYN位的TCP数据包到目的端,用于协商参数,初始化连接;B目的端使用SYN/ACK来表明自己的连接参数并确认发起端的连接参数;C发起端收到SYN/ACK后,使用ACK确认目的端连接参数。这样三次TCP包交换,发起端和接收端之前建立一条TCP连接。当目的端TCP/IP收到一个TCP SYN后,就位将要建立的连接预留资源并等待发起端确定连接参数,这对建立稳定高效的TCP连接是必要的。但是如果向目的主机发送大量的TCP SYN,而不回应TCP ACK,使大量连接处于半开状态(half-open),导致预留资源长时间不能释放(直到超时),最终致使目的端资源耗尽。
UDP flooding利用了UDP传输的无状态性,通过发送大量拥有伪装IP地址的UDP数据包,填满网络设备(主要是路由器或防火墙)的连接状态表,造成服务被拒绝。
Crikey CRC flooding是新出现的一种DoS攻击方式,目标主要是防火墙等纪录连接状态的网络安全设备。为了加速数据包通过防火墙,防火墙通常不会使用Checksum对数据包进行效验,只是把连接添加到连接状态表中;Crikey CRC flooding在TCP和UDP头部加入错误的Checksum值。当这些数据包到达目的主机时,因为Checksum错误会被拒绝。这样,实际上没有建立起来的连接被纪录到了连接状态表中,如果防火墙大量接受到这样的数据包,最终会导致连接状态表被填满,新的连接请求被拒绝。
4. 应用层DoS
应用层DoS手段多样,有塞满主机硬盘的病毒邮件攻击和日志攻击。当系统感染邮件病毒后,会向邮件服务器发送大量病毒邮件,致使邮件服务器瘫痪。攻击者通过修改网页代码,使用户不断地请求网页,形成死循环,也可以造成DoS。
评论