1、DDos的概念
DDoS,Distributed Denial of Service即分布式拒绝服务;网络攻击是指借助于客户或服务器技术,将整个计算机联合起来作为攻击的平台,对任意或多个目标发动DDoS攻击,而有效提高拒绝服务攻击的威慑力。
2、DDos攻击的种类
它的类型有这些:但不限于{ DDoS攻击、传输层(4层)DNSDDoS攻击、Web应用DDoS攻击、畸形报文、 连接型DDoS攻击}
(1)DDoS攻击
域名作为广大民众访问互联网的起点和入口,是全球互联网通信的基础。域名解析系统作为承载全球亿万域名正常使用的系统,是互联网的基础设施。而域名系统又是一种公开服务,很容易被黑客作为攻击的对象。域名系统的故障会导致互联网陷入瘫痪,所以保护域名系统也变得至关重要。DNSDDoS攻击类型有:DNS Request Flood、DNS Reply Flood和缓存投毒等。
1) DNS Request Flood:黑客伪造客户端源IP发送大量的DNS请求报文,造成DNS request flood攻击。DNS request flood是当前最常见的DNS攻击,这类攻击可以针对缓存服务器,也可以针对授权服务器;
2) DNS Reply Flood:DNS服务器收到DNS reply报文时,不管自己有没有发出去过解析请求,都会对这些DNS reply报文进行处理。DNS reply flood就是黑客发送大量的DNS reply报文到DNS缓存服务器,导致缓存服务器因为处理这些DNS reply报文而资源耗尽,影响正常业务;
3) DNS反射攻击:DNS反射攻击是DNS reply flood的一种变异,顾名思义,黑客伪造源地址发起request,reply都返回到目标机器上;
4) DNS缓存投毒:缓存投毒攻击就是黑客伪造了恶意的DNS reply报文,导致缓存服务器无意中将恶意的域名和IP地址映射关系存储到自己的缓存中。当客户端再通过缓存服务器请求这个域名解析时,就会被指向恶意主机。
(2)传输层(4层)DNS DDos攻击
1) 通过大流量的方式对目标机器造成攻击。有以下攻击类型:syn flood,syn-ack flood,ack flood,fin/rst flood,udp flood,icmp flood(这个属于网络层)等。syn flood:一个用户向服务器发送syn报文后,如果服务器在发出sys+ack报文后无法收到客户端ack报文,这种情况下服务器端一般会重试(再次发送syn+ack给客户端),并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为syn timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分)。
一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量的模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行syn+ack的重试。
2) syn-ack flood:SYN-ACK报文出现在第二次握手中,是用来确认第一次握手的。一方收到SYN-ACK报文后,首先会判断该报文是不是属于三次握手范畴之内的报文。如果都没有进行第一次握手就直接收到了第二次握手的报文,那么就会向对方发送RST报文,告知对方其发来报文有误,不能建立连接。SYN-ACK Flood攻击正是利用了这一点,攻击者利用工具或者操纵僵尸主机,向目标服务器发送大量的SYN-ACK报文,这些报文都属于凭空出现的第二次握手报文,服务器忙于回复RST报文,导致资源耗尽,无法响应正常的请求。
3) ack flood:在收到一个ACK报文时,如果目的端口未开放,那么端系统会直接向源IP发送RST报文。如果端系统的相关端口是对外开放的,那么其在收到ACK报文时,首先会检查这个ACK报文是否属于TCP连接表中的一个已有连接(这个过程会对端系统主机CPU资源造成一定的消耗),如果是的话,则正常处理,如果不属于任何一个已有连接,那么端系统会向源IP发送RST报文。
4) fin/rst flood:TCP交互过程中还存在FIN和RST报文,FIN报文用来关闭TCP连接,RST报文用来断开TCP连接。这两种报文也可能会被攻击者利用来发起DDoS攻击,导致目标服务器资源耗尽,无法响应正常的请求。
5) udp flood:利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。攻击者发送大量的伪造源IP地址的小UDP包,因为是无连接性的协议,所以只要开了一个UDP的端口提供相关服务的话,那么就可以针对相关的服务进行攻击。
6) icmp flood:通过向目标发送大量的大包。
(3)Web应用DDoS攻击
目前Web应用这么多,攻击的种类又分为:http get flood, http post flood, cc攻击等
1) http get flood:攻击者利用攻击工具或者操纵僵尸主机,向目标服务器发起大量的HTTP GET报文,请求服务器上涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求;
2) http post flood:攻击者利用攻击工具或者操纵僵尸主机,向目标服务器发起大量的HTTP POST报文,消耗服务器资源,使服务器无法响应正常请求,这就是HTTP POST Flood攻击;
3) cc攻击:CC攻击利用代理服务器向网站发送大量需要较长计算时间的URL请求,如数据库查询等,导致服务器进行大量计算而很快达到自身的处理能力而形成DOS,而攻击者一旦发送请求给代理后就主动断开连接,因为代理并不因为客户端这边连接的断开就不去连接目标服务器,因此攻击机的资源消耗相对很小,而从目标服务器看来,来自代理的请求都是合法的。
(4) 畸形报文
非标准的报文格式,有一些机器解析这些报文时耗时很大,甚至出错,更甚至崩溃;大量的这种报文对目标机器构成很大威胁。有以下畸形包种类: frag flood,smurf,land flood攻击,ip畸形包、tcp畸形包、udp畸形包等。
1) frag flood: 链路层MTU限制了数据帧的最大长度,不同网络类型都有一个上限值。以太网MTU是1500,可以用netstat -i命令查看;如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就会对数据包进行分片,使每一片长度小于或等于MTU;IP首部有两个字节表示数据包的大小,所以IP数据包最长只能为0xFFFF,就是65535字节;如果发送总长度超过65535字节的IP碎片,一些老的系统内核在处理的时候就会出现问题,导致崩溃或拒绝服务;如果分片之间偏移量经过精心构造,一些系统就无法处理;
2) smurf: 修改目的地址,并发送ICMP echo广播报文到一个网络中,此网络中的所有机器都发送ICMP echo-reply到目的地址机器,此机器遭到攻击;
3) land flood: 源目IP相同的IPv4报文,一个特别打造的SYN包中的源地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。对Land攻击反应不同,许多UNIX系统将崩溃,而 Windows NT 会变的极其缓慢(大约持续五分钟);
4) ip畸形包: 数据包中的总长度和版本等错误;
5) tcp畸形包: syn/syn-ack里的option、payload有错误;
6) udp畸形包: 包长度、payload有错误。
(5) 连接型DDoS攻击
连接型的DDoS攻击类型有:TCP连接耗尽攻击、TCP慢速连接攻击、连接耗尽攻击、loic、 hoic、 slowloris、 Pyloris、 xoic等慢速的网络攻击
1) TCP连接耗尽攻击:攻击者与被攻击目标握手三次后,立即发送FIN或RST消息 ,释放本地连接,并快速启动新连接,消耗被攻击目标的系统资源;
2) TCP慢连接攻击:攻击者与被攻击目标握手三次后,发送少量数据包来维持连接状态,通过这种异常的TCP连接消耗被攻击目标的系统资源;攻击者还会使用一些其他的攻击手段,如构造大量的并发连接、设置一个小的TCP窗口、发送重传消息等,所有这些都是为了消耗被攻击目标的系统资源。
3) loic、hoic、slowloris、Pyloris、xoic等都是攻击工具。