DDoS攻击是目前非常流行的黑客攻击方式,本文将对DDoS攻击定义、常用手段以及防御方法进行分析和介绍。
DDoS攻击概述
DDoS攻击的中文名称是分布式拒绝服务(Distributed Denial of Service)攻击,也就是我们经常说的洪水攻击。DDoS攻击可以实现在不同位置的多个攻击者同时向一个或者几个目标发起攻击,而在目前的互联网环境中,更为常见的情况是由黑客控制多台位于不同位置的计算机并利用这些计算机对目标发起攻击,这些被黑客控制的计算机就是我们所说的肉鸡。
DDoS攻击发展趋势
DDoS攻击并不是新技术,该攻击方式最早可以追溯到1996年,2002年时在我国就已经开始频繁出现。在DDoS攻击发展的这十几年间,DDoS攻击也在不断变化。DDoS攻击的发展趋势,主要可以体现在以下几方面:
1. DDoS攻击流量越来越大
随着互联网规模和网民数量的不断扩大,整体网络流量也在不断增加,黑客控制的肉鸡总数也在不断增长,黑客控制用于实施DDoS攻击的流量从几年前几十上百兆的流量到后来的几十上百G流量,再到现在的几百G的DDoS攻击流量的出现,DDoS攻击流量的不断增加,无疑给DDoS攻击防御工作带来了更大挑战。
2. 针对应用层的攻击越来越多
随着互联网环境中防火墙设备应用范围的不断扩大,传统的DDoS攻击手段被防火墙设备拦截,导致类似SYN Flood攻击方式的传统DDoS的攻击效果并不是很明显,所以黑客在这种背景下研究出了针对应用层的DDoS攻击,如针对网站服务器的HTTP GET攻击以及针对DNS服务器的DNS放大攻击等。这类攻击针对的目标是工作在应用层的服务程序,导致服务程序占用了大量的CPU资源和网络带宽,进而无法为网民提供正常服务。
3. 商业化DDoS攻击越来越多
正如网上介绍的黑客利用技术手段窃取商业机密并买给竞争对手的新闻一样,DDoS攻击也已经成为商业化竞争手段的一部分。在互联网行业中,有很多公司为了遏制竞争对手,花钱雇佣黑客通过DDoS攻击的方式,攻击对方的网站服务器或者是后台提供支持的服务器,实现对方服务器因拒绝服务攻击导致网络交易的无法进行而造成巨大的经济损失。
4. 实施DDoS攻击成本越来越小
目前互联网环境中实施DDoS攻击基本上不需要什么技术手段,也不需要投入太多的成本就可以实现,只需要手中有一套DDoS攻击软件和大量的肉鸡就可以实现实施DDoS攻击。而这两个实施DDoS攻击的必需品在网上花很低的价钱就可以买到,甚至某些卖家针对没有任何技术基础的“小黑客”提供视频教程等辅助材料,在购买了软件和肉鸡以后,只需要跟着视频教程按步骤操作就可以实现对目标的DDoS攻击。
常见DDoS攻击手段
在了解了DDoS攻击定义以及DDoS攻击发展趋势后,接下来对目前常见的DDoS攻击手段进行分析和描述。常见DDoS攻击手段主要包括以下几种:
1. SYN Flood攻击
SYN Flood攻击是网络环境中最常见的DDoS攻击方式,它利用了TCP协议的缺陷,在建立连接的三次握手过程中,通过向目标服务所在的端口发送大量伪造源IP地址的数据报文,造成目标服务器中半开连接队列被占满,进而导致合法用户无法进行正常访问。为了更好地理解SYN Flood攻击以及后续介绍的常见攻击方式,我们首先对TCP协议相关的一些信息进行介绍。TCP数据包首部结构如下图1所示。
图1
我们比较关注的是TCP首部中的6个标志位。其中SYN标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接。FIN标志位表示发送端已经没有数据要求传输了,希望释放连接。RST标志用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。URG标志位为紧急数据标志。如果它为1,则表示本数据包中包含紧急数据。此时紧急数据指针有效。ACK标志位为确认标志位,如果为1,表示包中的确认号时有效的。否则,包中的确认号无效。PSH标志位如果置位,则接收端应尽快把数据传送给应用层,不必等缓冲区满再发送。
SYN Flood攻击则是利用TCP的缺陷,在建立连接过程中实现的攻击。正常情况下,建立TCP连接需要客户端和服务端进行三次通信,也就是我们常说的三次握手,过程如下图2所示。
图2
首先,客户端发送一个带有SYN标志位的数据报文给服务端,表示询问服务端是否可以与其建立连接。然后服务端会返回SYN+ACK标志的报文用于确认客户端的SYN请求和发送建立连接的请求,最后客户端接收到服务端的数据报文后,会对服务端的SYN标志进行确认,至此TCP连接就建立成功了。
SYN Flood的攻击则是客户端发送SYN请求时,数据包中的源IP地址是经过伪造的,也就是说服务端在接收到客户端的SYN请求以后,会将含有SYN+ACK标志位的报文发送至伪造的IP地址,而该地址会认为没有请求与该地址建立连接,因此不会予以回应。服务器因为没有收到回应,会继续尝试三到五次发送请求并且等待一个SYN超时以后丢弃这个连接。该过程如下图3所示。
图3
SYN Flood攻击就是利用了TCP的这一缺陷,发送大量的伪造源IP地址的数据报文至服务端,服务端因为把持着大量的没有接受回应的SYN请求导致半开连接队列被占满而无法为合法用户提供服务。
2. ACK Flood攻击(大量时间用来检查地址是否存在、状态是否合法)
ACK Flood攻击是发生在TCP连接建立以后,客户端向服务端发送大量带有ACK标志位的数据报文,服务端在接收到这种报文以后,会检查该数据报文的源IP地址、目的IP地址、源端口和目的端口是否存在,如果存在则检查数据包所表示的状态是否合法,进而再向应用层发送这个数据包。如果检查发现该数据包不合法,则服务端系统协议栈会返回一个RST数据包通知客户端目标端口不存在。ACK Flood攻击就是利用协议处理方式的特点,发送大量的带有ACK标志的数据包至服务端,使得服务端发送大量的CPU时间片来做检查和处理的工作,导致资源被占满无法提供正常服务。
3. ICMP Flood攻击
对于ping命令,网民用户一定都不会太陌生,很多时候网民用户使用ping命令去尝试与百度或新浪等大型网站建立连接来测试本地网络是否处于可连接状态,ping命令利用的就是ICMP协议。ICMP Flood攻击则是与ACK Flood攻击方式很类似,属于流量型攻击方式,通过构造大量的ICMP协议数据包发送至服务端,借此给服务端造成较大负载进而影响到服务端的正常服务。早在2001年中美黑客大战时期,中国红客集合广大网络安全爱好者就尝试使用名为“死亡之Ping”的工具,对美国白宫的网站进行攻击,该工具利用的就是ICMP Flood攻击。目前,很多的防火墙的安全策略都是直接过滤掉ICMP协议的数据报文,所以导致ICMP Flood攻击效果并不是很明显,而且出现频率也越来越低。
4. Connection Flood攻击
Connection Flood攻击是原理简单但是功效效果很明显的一种利用小流量冲击大带宽网络服务的DDoS攻击方式。黑客控制大量肉鸡并将这些肉鸡发起真实的数据连接请求,在与服务端建立之后,客户端长时间保持连接不释放,长时间占用服务端的资源,造成服务器上的连接数过多而导致效率降低、资源耗尽,导致服务端无法相应其他合法用户建立连接的请求。
5. UDP Flood攻击
UDP协议是一种面向无连接的网络协议,UDP Flood的攻击原理也相当简单,黑客向服务端发送大量伪造源IP地址的UDP数据报文发送至服务端,进而对服务端应用服务造成压力。目前,UDP Flood攻击更多地被用于攻击DNS服务器、流媒体视频服务器等。
6. HTTP Get攻击(CC攻击)
HTTP GET攻击(CC攻击)主要是针对Web应用程序设计的,尤其是针对使用动态脚本语言和数据库结合的应用,黑客通过控制大量肉鸡或者在线代理服务器与目标服务器建立正常的TCP连接,并不断地向服务端Web应用程序提交查询、列数据等大量消耗数据库资源的调用,导致服务器无法提供正常服务。
7. UDP DNS Query Flood攻击
UDP DNS Query Flood攻击是指黑客向域名解析服务器发送大量的域名解析请求,而这些请求解析的域名通常是随机的或者是不存在的,DNS服务器在接收到黑客发送的域名解析请求以后首先会在服务器上查找是否存在对应的信息,如果不存在,服务器会将该请求向上一层DNS服务器递归查询域名信息。大量的域名解析的过程会给DNS服务器带来很大的负载压力,当每秒钟域名解析请求超过一定的数量时,就会造成DNS服务器解析域名超时。
DDoS攻击实施全过程
在了解了常见的DDoS攻击手段以后,我们结合攻击实例来描述实施DDoS攻击的全过程。利用肉鸡实现攻击的操作本身没有什么太多需要描述的,这里我们选择利用网上公布的免费代理服务器和使用CC攻击工具实现的CC攻击。CC攻击网络流量图如下图4所示。
图4
利用代理服务器实施CC攻击的目的是解决单一客户端无法实现控制过多连接数和连接请求的操作,而利用代理服务器可以将大量的请求首先发送到代理服务器作为中转,然后再由代理服务器将数据内容转发至目标服务器,实现有更多客户端请求的目的。那么如何获取到更多的代理就成为攻击的关键,代理越多,攻击的效果就会更明显。
获取代理服务器的方法有很多种,可以通过使用代理扫描工具扫描的方式,也可以通过访问免费代理在线公布网站获取免费代理地址的方法。我们这里使用第二种方法获取免费的代理服务器地址,如下图5所示,很容易获取到大量的免费的代理服务器地址。
图5
在获取完代理服务器以后,就是将获取到的代理服务器地址导入到CC攻击工具中,并将配置相应的攻击信息。由于CC攻击主要是针对Web应用程序将服务器的资源浪费在查询数据库操作上的,所以配置过程中我们需要填写相应的动态链接地址,并将其他数据信息填写完成以后进行攻击即可实现大量的HTTP请求数据报文发送的效果,如下图6所示。
图6
如何防御DDoS攻击
就目前互联网环境而言,对于DDoS攻击的防范,一直都是网络工程师们最为头痛的问题之一。因为针对DDoS攻击一直没有一个根治的方法,尤其是针对大流量的DDoS攻击来说,想依靠某些应用防护产品解决问题是不现实的,DDoS攻击的防御可以说是一个系统的工程,不仅需要购买大量的网络设备,还需要有较大的带宽支持,作为应用服务器或网站的管理人员对于DDoS攻击的防御可以从以下几方面做起:
1. 购置高性能的网络设备
对于很多企业来说,网络设备可能是其整个业务运营过程中的瓶颈,所以对网络设备的选用可能直接关系到整个网络的运营,如路由器及硬件防火墙等设备应该尽量选择一些用户反映比较不错的产品,这类产品一般都会有比较好的过滤效果,当大流量的DDoS攻击发生时候,可通过在网络接入点的硬件设备上对流量进行限制,或添加相应的规则进行过滤,而且这种限制和规则过滤的方法对于某些特定种类的DDoS攻击来说效果非常明显。
2. 配备较大的网络带宽
因为网络带宽的大小直接关系到网络运行的快慢以及能够抵御DDoS攻击的大小。例如某个小型公司网络带宽仅有10-20M,那么如果有黑客通过恶意DDoS攻击对其进行攻击的话,无论该公司采取任何手段和措施也很难抵抗常规的DDoS攻击。但是配备较大的带宽的做法又是相对的,因为经济的问题,网络带宽将是企业网络运营中开销的一部分,所以对带宽大小的选择和配备也只能根据企业实际情况进行选择。
3. 网络设备应避免使用网络地址转换
网络地址转换(NAT)虽然可以很好地解决因IP地址不足而存在的资源分配的问题,但是路由器和硬件防火墙等设备应该尽量避免使用NAT功能,因为NAT功能会在很大程度上降低网络的通信能力,在进行网络地址转换时,需要对网络数据包进行校验和计算,从而导致过多此类工作占用了CPU的时间,导致资源浪费。
4. 升级服务器的硬件设备
从上述我们对DDoS攻击的原理和常用手段我们了解到,DDoS攻击的目的就是浪费掉服务器的资源,而服务器资源性能主要是由服务器的硬件设备决定的,所以从服务器硬件角度来说,CPU、内存、硬盘以及网卡的性能将直接影响到服务器对抗DDoS攻击的整体水平。
5. 将动态Web应用改为静态页面
目前网络环境中,针对应用层的DDoS攻击越来越多,而且现在主要的攻击对象就是网站的运营,因此防御CC攻击也是防御DDoS攻击的一部分,而针对CC攻击最有效的方法就是将动态应用修改为静态页面的方式,该方式不仅可以降低服务器资源的消耗,同时还能在很大程度上减少黑客入侵的风险。
但是上述几种防御方法对于中小型企业来说可能是无法支撑的,因为过多的硬件设备和带宽的消费往往会给中小型企业带来很大的压力。针对这种情况,中小型可以选择使用目前网络环境中提供的云DDoS防火墙,管理人员可以将自身网站的流量导向至云DDoS防火墙中,并由它们帮助实现对流量进行过滤和清洗,使得合法用户的流量可以正常通过,进而为正常类用户进行服务。而且这类防火墙往往提供免费的基础防护措施或者针对特定的服务收取较少的费用,是中小型企业应对DDoS攻击的比较理想的方式。
如果说黑客利用技术手段对网站进行渗透攻击是网络神偷的话,那么实施DDoS攻击的攻击者就是赤裸裸的的强盗和劫匪。就目前网络环境而言,对DDoS攻击的防范已经不再是网站或服务器的管理人员本身关注的事情,而是结合更多的安全人员进行防护的工作,如网络安全软件对僵尸网络客户端的查杀、域名运营商对其反弹地址域名的封杀等,只有经过多方面的共同协作,才能更加有效地全面围剿DDoS攻击行为的发生,保护互联网环境中网络服务的正常运营。