破坏之王——DDoS攻击与防范深度剖析
一.技术介绍
1.DDoS(Distributed Denial of Service)能够取得辉煌战果的原理:持续制造局部优势。
2.可实施攻击行为的技术,其发展历程可用四个阶段来概括:探索期→工具化→武器化→普及化。
3.僵尸网络,特性:自动执行预定义功能
组成僵尸网络的可以是普通PC,高性能服务器,移动设备或者自愿的真实参与者。图1.1展示了简化版的僵尸网络拓扑。
图1.1简化版的僵尸网络拓扑
注1:普通PC变成僵尸网络要经历的四个步骤:感染传播,安装执行,接入僵尸网络和命令执行。
注2:僵尸网络的主要控制形式有:IRC,HTTP,P2P。
注3:僵尸网络与DDoS工具的差别:
a.僵尸主机拥有真实的IP且分布广泛,DDoS工具是在单台主机上开启多个线程来模拟主机,后者更容易被防御。
b.僵尸网络可以像正常用户一样访问目标资源,而DDoS攻击工具缺少交互机制,容易被过滤。
c.僵尸网络具有传播功能,DDoS工具更像是单兵作战。
注4:僵尸网络除去DDoS攻击这一危害外,还有发送垃圾邮件,窃取敏感信息,抢占系统资源等危害。
二.DDoS的攻击方式
1.分布式拒绝服务攻击的精髓:利用分布式的客户端,向服务提供者发起大量看似合法的请求,消耗或长期占用大量资源。从而达到拒绝服务的目的。
2.直接攻击
a.ICMP/IGMP洪水攻击。被攻击目标可以在网络边界直接过滤并丢弃ICMP/IGMP数据包使其无效化。
b.UDP洪水攻击。使用大量64字节的数据包占用资源,或者1501字节的数据包迫使攻击目标接收到数据时进行分片重组,造成网络拥堵。当被攻击目标本身网络性能强大时,影响并不大。
3.反射和放大攻击:有效隐蔽攻击来源
a.攻击者将数据包发送给反射器,源IP地址伪造成攻击目标(DNS的模式允许查询包中的IP源地址设置为任意地址),目的IP地址为反射器,借助于无连接的UDP协议,使反射器将响应数据包回送给攻击目标。
b.放大攻击,响应数据包数量多于发送的源数据包
可供实施的手段有ACK放大攻击,DNS放大攻击,NTP放大攻击,SNMP放大攻击
注1:DNS放大攻击的变种EDNS0
DNS的响应数据包比查询数据包要大。传统的DNS查询响应被限制在512字节内,超过的部分可能会被丢弃,也可能使用TCP建立连接之后再重新发送。EDNS0扩展了数据包的结构,记录了客户端能够处理的最大UDP报文大小的信息,服务端响应DNS请求时,会记录下客户端能够处理的最大UDP报文大小,并根据该大小生成响应报文。利用该漏洞,攻击方发送给反射器的查询数据包一般为60字节,而查询器发送给攻击目标的数据包大小在3000字节以上,能够达到50倍以上的放大效果。
DNS反射攻击必须找到大量反射源(开放查询服务的第三方DNS服务器),否则防护方可以通过黑名单机制屏蔽攻击来源。
互联网上开启递归查询功能,且高放大倍数的反射源很多且分布广泛。
小结:DNS放大攻击的条件
a.伪造报文的源IP;
b.所选择的DNS服务器支持EDNS扩展机制;
c.用相应的端口扫描工具获得一份开放查询服务的第三方DNS服务器列表;
d.列表中的反射源开启递归查询功能。
图2.1展示了攻击流程
图2.1典型DNS反射攻击拓扑图
对于防御方,可以采取以下措施加固反射源:
a.对开放查询服务的DNS服务器作限制,只对可信的区域主机提供解析服务;
b.强制某些DNS查询类型(如TXT,ANY)使用TCP传输,并限制单个源IP的查询速率;
c.及时更新补丁,采用最小化权限。
注2:NTP(UDP123端口)放大攻击的原理
NTP协议的服务器上会有一系列的Mode7的调试接口,接口中的monlist请求能够获取与目标NTP服务器进行同步的最后600个客户端的IP地址等信息。攻击方正是发送一个极小的Monlist请求包,触发反射器向攻击目标发送大量响应数据包。攻击在发起之前会伪造客户端与NTP服务器交互,增加“和NTP服务器交互的客户端数量”来提高放大倍数,最高能达到700倍,且在该服务器的NTP关闭或重启前一直能保持该放大倍数。
为了防控可能达到2T级别的攻击流量,公开的NTP服务器需要进行有效的管理和配置,全部的NTP服务服务软件要升级到最新版本,并在配置文件中添加Noquery参数来限制客户端的monlist或其他信息查询请求。
注3:SNMP放大攻击原理
在SNMPv2中有一种GetBulk请求,通知设备返回尽可能多的数据。但该方法需要获取设备的通信字符串作为认证凭据,放大效果为25倍左右,故危害不及DNS和NTP放大攻击。
4.攻击链路
攻击的对象是骨干网上链路的带宽资源。攻击者首先判明各个僵尸主机和攻击目标链路的位置关系,然后使攻击链路两侧的主机进行通信并收发大量数据。
此种攻击办法的危害是无法将这些通信数据与正常用户的通信数据有效区分。
5.对不同资源的攻击
a.攻击的资源对象可以分为:网络带宽资源,系统资源和应用资源。
b.攻击流量的大小不能完全反映攻击的危害程度。
举例来说SYN洪水攻击消耗系统连接表资源,相同攻击流量的SYN洪水攻击比UDP洪水攻击危害更大。
6.攻击TCP连接
TCP连接有三个阶段:创建连接,数据传输和连接终止,这三个阶段都可以进行攻击。
a.创建连接阶段:TCP洪水攻击
三次握手的过程中,服务器会创建并将TCP连接信息保存在连接表结构中。连接表的储存容量用完之后,服务器就无法创建新的TCP连接了。
攻击者建立大量恶意的TCP连接占满被攻击目标的连接表,攻击目标就无法接受新的TCP连接请求。
b.SYN洪水攻击
攻击者制造大量半连接(收到服务器SYN+ACK报文后不再发送ACK)。在连接超时之前,半连接会一直保存在服务器的连接表中。
普通的攻击会暴露出进行SYN洪水攻击的攻击者IP地址,同时响应报文会作为反射流量占用攻击者的带宽资源。所以危害更大的攻击方案是伪造源IP地址来隐藏攻击来源。
c. PSH+ACK洪水攻击
当服务器端收到设置了PSH+ACK标志的报文时,意味着当前的数据传输已经结束,需要立即将这些数据递交给服务进程并清空接收缓冲区。此种攻击方法消耗的是因为不断清空接收缓存区而浪费的系统资源。
PSH+ACK攻击不会单独发动,而是与SYN洪水攻击组合使用增强攻击效果。
d.RST洪水攻击
此种攻击方法用来切断目标用户与服务器的连接,造成暂时的掉线。
RST报文是用来中断TCP四次挥手终止连接的。接收端收到RST报文后,会清空缓冲区并关闭连接,不必发送ACK报文进行确认。
攻击者可以发送伪造的带有RST标志位的TCP报文,强制中断客户端与服务器的TCP连接。攻击过程中,服务器端的IP地址和端口号是已知的,攻击者只需要设法获得客户端的IP地址和端口号,并且使RST报文的序列号处于服务器的接收窗口之内。如果攻击者和被攻击客户端不处于同一内网内(若在同一内网内,这些数据很容易获取),可以利用大量受控主机进行猜测盲打。
e. Sockstress攻击
洪水攻击是通过快速发送大量数据和请求,达到迅速消耗大量资源的目的,而慢速攻击是缓慢而坚定地发送请求并长期占用,蚕食目标资源。
Sockstress攻击方式1:将受控主机和攻击目标之间建立连接的第三次握手的ACK字段中,将接收窗口设为,迫使服务器不断发出TCP窗口探测包,询问其TCP窗口是否更新,耗尽TCP连接表。
Sockstress攻击方式2:将ACK字段的接收窗口设为极小的值,使得服务器不得不把需要发送的数据切分成大量分片,从而消耗目标的内存和处理器资源。
7.攻击SSL连接
SSL协议加密,解密和秘钥协商的过程中会消耗大量系统资源,严重降低机器性能,且客户端与服务器端消耗的CPU计算资源不对等,适合进行放大攻击,如果使用RSA4096公钥密码算法,放大倍数大约是25倍。
a.无止境的SSL新连接
进行SSL数据传输之前,通信双方要进行SSL握手,以协商加密算法交换加密秘钥。连接建立后,也可以通过Renegotiation选项进行秘钥的重新协商以建立新的秘钥。攻击者反复进行秘钥重新协商,能够进行15倍左右的放大攻击。若被攻击服务器不支持Renegotiation,攻击者也可以通过另外打开新的连接来造成放大攻击。
b.SSL洪水攻击
SSL握手的过程中,对于客户端发过来的数据,服务器需要花费大量的计算资源来进行解密,才能对数据进行有效性检验。攻击者在这一过程中构造大量秘钥交换过程中的请求数据,可以大量消耗被攻击目标的计算资源。
8.针对应用资源的攻击
a.DNS QUERY(攻击DNS服务)
向DNS服务器发送大量查询请求,迫使DNS服务器需要消耗额外的资源进行迭代查询。
发动攻击的要点是每一个DNS请求都不同,且有效避开DNS服务器缓存中的解析记录。
b.DNS NXDOMAIN(攻击DNS服务)
向DNS服务器发送大量针对不存在域名的查询请求,填满服务器本地缓存,并争取让DNS服务器进行递归查询消耗资源。
c.HTTP洪水攻击(攻击WEB服务)
HTTP请求分为GET(获取数据)和POST(提交资源)两种,WEB服务器在处理HTTP请求时需要解析请求,处理和执行服务端脚本,验证用户权限并多次访问数据库消耗大量计算资源和IO访问资源。HTTP洪水攻击的核心原理就是向WEB服务器发送大量恶意HTTP请求。
HTTP洪水攻击中会使用HTTP代理服务器避免被追查,并且为了提高效率,攻击者在连接代理服务器A并发送完请求后,可以直接切断与A的连接并连接代理服务器B发动新的攻击,而A与目标WEB服务器的HTTP连接依然保持并消耗WEB的资源。
WEB服务也存在缓存机制,攻击者发出的HTTP请求为了避免命中服务器缓存通常是针对不同资源和页面和无法被缓存的资源(关键词搜索结果,用户相关资料)。
进阶HTTPS洪水攻击危害更大,一是因为HTTPS通信会消耗更多的资源来进行认证和加解密,二是因为部分防护设备无法处理HTTPS加密通信数据流,导致攻击流量能够绕过防护设备。
d. Slowloris慢速HTTP攻击(攻击WEB服务)
HTTP头部以连续的“\r\n\r\n”作为结束标志,WEB服务器在处理HTTP请求时会等待头部传输结束后再进行处理。因此,若WEB服务器没有接收到HTTP头部结束标志,就会一直接收数据并保持与客户端的连接。
攻击者大量发送不含结束标志的HTTP GET请求头字段就能长时间与WEB服务器保持连接并耗尽WEB服务器的连接资源。
注:这一漏洞不是所有的WEB服务器都存在。
e.慢速POST请求攻击(攻击WEB服务)
HTTP头部信息中,可以使用Content-Length字段来指定HTTP消息实体的传输长度,WEB服务器接收到HTTP头部信息时,会将该字段作为HTTP BODY的长度,直到接收数据量达到HTTP BODY的长度时才会对HTTP数据包进行处理。
攻击者将恶意HTTP请求头文件中的Content-Length字段设置为极大值,并将HTTP BODY以非常缓慢的速度单字节发送(保证连接不因超时而中断),达到长时间占用连接的效果。
注:所有的WEB服务器都会受到该攻击影响。
f.数据处理过程攻击
攻击者恶意构造请求数据的内容,可以显著地增加数据处理过程中的资源消耗。
实例之一是正则表达式拒绝服务攻击。
NFA正则引擎在确定“否定匹配”时,即输入字符串与正则表达式不匹配时,正则引擎需要对所有可能的匹配路径进行测试。利用该漏洞,攻击者只需要提交相对较短的字符串(30个字符左右)就可以强制正则引擎处理数亿个匹配路径,放大攻击效果惊人。
实例之二是哈希冲突拒绝服务攻击。
正常的哈希表中哈希冲突较少,因此进行查找和插入的速度很快。若攻击者构造恶意POST数据造成大量哈希冲突,会使得保存POST数据的哈希表会退化成链表,对链表的遍历操作会占用大量计算资源。
9.混合攻击
DDoS攻击的分类方法:
按照攻击的目的,可划分为消耗网络带宽资源的攻击,消耗系统资源的攻击和消耗应用资源的攻击;
按照攻击数据包所在网络层次,可划分为网络层攻击,传输层攻击和应用层攻击;
按照攻击数据包发送频率和速度,可划分为洪水攻击和慢速攻击。
攻击者在攻击时为了达到目标可以发动其所能发动的所有攻击手段,对其来说,发动混合攻击的成本与只发动一种攻击的成本没有区别。
混合攻击的另一种目的是掩护,比如用洪水攻击掩护慢速攻击,用DDOS掩护数据窃取等危害性更高的攻击手段。
但对防御者来说,同时面对各种种类的攻击方法,分析,响应和处理的成本很大。需要战胜对手,必须要首先精通各种攻击方法的原理,理解各种漏洞,才能最终战胜邪恶!
三.攻击者的成本与收益
1.攻击者的分工:不同的人在发现漏洞,开发工具,入侵,处理账户方面各显其能。
2.DDoS已经成为一种服务,普通人租用DDoS攻击已经成为可能,国际上的大组织提供的租用服务费用较低,每小时可低至10美元。
3.破坏只是DDoS攻击的手段,最终的目的还是利益。
4.收益来源:
a.敲诈勒索
b.获得渠道,比如说广告,僵尸肉鸡来源
c.报复活动,用对手经济上的损失来弥补自己的心灵的创伤
d.获取竞争优势,打击对手
注:用于战争上则主要目的是攻击敌对势力的信息发布渠道。
5.只要网站是可被攻击的,它就有被攻击的价值。
6.DDoS攻击者完全可能获得超过300%的利润,攻击者完全可能为了这高额的利润率犯任何罪行。
四.DDoS攻击的治理和缓解
1.治理:阻止正在发生或者即将发生的DDoS攻击,减小DDoS攻击的规模;
缓解:在DDoS已经发生的情况下,被攻击的目标采用方式减小DDoS攻击造成的影响,从而保障其服务的可用性。
2.僵尸网络的治理
难点一:只有检测出系统异常,才知道系统感染了僵尸程序,如果攻击用的通信流量很小且做了加密,管理员很难察觉。
难点二:检测到感染后需要提取样本,并对样本进行逆向分析。
治理方案一:编写僵尸程序清除工具,分发至企业局域网的其他感染主机,同时封杀C&C服务器及其通信包。效果不佳,只能清除部分可见的僵尸网络信息。
治理方案二:联动跨国力量接管或摧毁整个僵尸网络。难度大。
注:任何一台计算机都可能成为僵尸网络的一部分,保护电脑信息安全刻不容缓。
3.地址伪造攻击的治理
a.CERT Advisory CA-1996-21
互联网服务提供商在网络出入口处的路由器上,对符合以下条件的数据包进行过滤:
·从外部接口进入内部网络的数据包,但源地址属于内部网络
·由内部网络向外发送的数据包,但源地址不属于内部网络
b.RFC 2827
·过滤下游流量中的地址欺骗流量,比如在出口路由器中只允许源地址在某一个网段内的数据包流出,反之全部禁止。
·远程访问服务器在入口处检查每一个数据包,实现自动过滤。(大规模部署尚未实现)
c.Unicast Reverse Path Forwarding(单播反向路径转发)
路由器的最优路径检查:对进入的数据包检查源地址和源端口是否在路由表中,否则丢弃。
具体的5个步骤
(1)对于入方向的数据包,检查ACL是否允许通过;
(2)按照UnicastRPF进行最优路径检查;
(3)Forwarding Information Base(FIB)查找;
(4)对于出方向,检查ACL是否允许通过;
(5)转发数据包。
d.基于路由的分布式包过滤方法
路由器根据数据包的源地址和目的地址判断其转发路径是否经过自己,若不经过,则丢弃。
该类方案更多停留在实验室中,实际操作中会有很多问题,并且ISP缺乏采用这些技术的动力。
4.放大器的治理
由第二段的介绍可得,反射式DDoS攻击危害一是通过伪造地址隐藏攻击源,二是反射攻击同时具有放大作用。在治理时需要对绝大多数反射点进行有效管理和配置,才能减小放大攻击的威胁。
以DNS服务器为例,为了提高DNS服务器的安全性,可以从以下三点入手:
a.Open Resolve Project
OpenResolve Project是一份列表,提供查询功能,使用者可以查询任何网段中开放的地址解析器。若一个DNS服务器可以被从任意地址访问,并无限速地回应查询请求,则其可被用作反射点。
OpenResolve Project也提供了很多专业的建议减小DNS服务器被攻击的风险,以下为主要的三点:
(1)限制允许访问的地址范围,以防被滥用
(2)采用RRL
(3)用户端设备不应该在广域网接口监听DNS数据包。
b.Response Rate Liminting(响应速率限制)
DNS服务器的漏洞来在于三个方面:
(1)DNS查询使用UDP协议,很容易伪造来源
(2)大部分ISP不检查他们的出口数据包中源地址是否真实
(3)DNS请求数据包的放大效应
RRL能够增强DNS协议。
c.NIST SP 800-81(安全域名系统部署指南)
指南指出DNS服务器面临如下威胁:
(1)假冒身份欺骗DNS服务器,来实施拒绝服务攻击;
(2)虚假DNS信息毒化DNS缓存,造成DNS劫持;
(3)不合规范的域名请求数据会造成不良影响。对于DNS来说,数据内容决定整个系统的完整性。
指南提出的治理方案:
(1)实施适当的系统和网络安全控制;
(2)对于一个企业控制范围内的DNS服务器,对DNS事务进行保护,例如域名解析数据的更新和备份。保护方法可以参考互联网工程任务组(IETF)的事务签名(TSIG)规范,使用基于共享密码的散列消息认证码。
(3)使用基于非对称加密的数字签名来保护DNS的请求/应答事务.具体内容参考IETF的域名系统安全扩展(DNSSEC)规范。
指南认为,DNS安全的主要目标是数据的完整性和来源认证,从而可以保证DNS响应的真实性和传输途中的完整性。
5.攻击流量的稀释缓解
系统优化的方法指对被攻击系统的核心参数进行调整,但在大流量攻击面前,系统优化的方法显得微乎其微。
增加带宽的退让方式在理论上可行,但经济角度和实际运用中不可行。因为攻击者增加攻击规模的代价很小,但要增加带宽,提高处理器性能的代价很高且没必要。
防火墙在设计原理中没有考虑针对DDoS攻击的缓解,传统的防火墙是以高强度的检查计算来进行防护,面对DDoS攻击,防火墙的性能会下降;同时,防火墙部署在网络入口位置,自身也是DDoS攻击的目标。
入侵检测、防御系统是基于特征的应用层攻击检测设备,当前的DDoS攻击流量都是基于合法的数据包,因此,入侵检测、防御系统无法对DDoS攻击进行基于特征的有效检测,且在大流量攻击下,入侵检测、防御系统的性能也会下降。
以上四种方法均不能缓解DDoS攻击。
可靠的方法是对大流量的DDoS攻击进行稀释和分散,使到达每个流量清洗设备或流量清洗中心的网络流量下降到其能够处理的范围之内。
a.Content Delivery Network(内容分发网络)
在互联网范围内广泛设置多个节点作为代理缓存,并将用户的访问请求导向最近的缓存节点,以加快访问速度。
传统的域名解析系统会以固定IP地址的形式解析针对同一域名的解析请求,整个互联网对于该域名的访问都会被导向这个IP地址。
智能DNS系统中,一个域名会对应一张IP地址表,智能DNS根据解析请求的来源,给出地址表中距离最近的IP地址(最接近用户的CDN缓存节点的IP地址)。用户收到解析应答后,会向该CDN节点发起进一步请求。CDN节点收到用户请求时,先在其存储的缓存内容中寻找,找不到再向源站请求该资源(自身作为代理服务器)。对于有大量静态资源的网站,使用CDN进行代理缓存能够减少源站80%的访问流量。
总之,互联网上的用户通过CDN节点能够快速获得所需的资源和服务,源站也的网络流量负载也能得到稀释。
面临DDoS攻击时,智能DNS会将来自不同位置的攻击流量分散到各个CDN节点上,使得CDN节点成为区域性的流量吸收中心。流量进行稀释后,就可以在每个节点处进行流量清洗,筛选出正常的请求交付给源站。
该方法的缺点是只能防御DNS攻击,而对来自于IP的攻击无能为力。
b.Anycast(任播)
几种不同的网络寻址方式:
·单播:网络地址和网络节点是一对一的对应关系
·多播:每一个目的地址对应一群接收可复制消息的节点
·任播:每一个目的地址对应一群接收节点,但消息只会发送给路由信息最优的节点。
任意播通常用来提高可用性保障和负载均衡,互联网根域名服务器都会部署任意播来提供分布式服务。
任意播的实现方式:在不同的节点处同时使用BGP协议向外声明同样的目的IP地址。如果服务器出现故障,就会立即撤销服务器的路由公告,所以任意播具有高可靠性。
利用任意播,一组提供特定服务的主机可以使用相同的IP地址,同时,服务请求报文将会被路由到这组目标中路由信息最优的主机。面对DDoS攻击时,攻击者并不能对攻击流量进行操控,而且分布式攻击流量会被分散,达到稀释的效果。具体来说,当任意播组中部分成员遭到攻击时,路由器可以根据各个组成员的响应时间来决定报文应该转发到哪个成员上。即使少数节点被打垮,周围的节点也能快速顶上,使得服务保持可用。
6.攻击流量的清洗缓解
流量清洗的核心是在全部网络流量中分出正常流量和恶意流量,并处理好漏报率和误报率的问题。
a.IP信誉检查
对互联网上的IP地址进行信誉评分,有黑历史的IP赋予较低的信誉值。面临攻击时,清洗设备首先会通过网络流量进行IP信誉检查,尽量保证信誉高的IP地址与服务器进行通信。
此方法误报较多。
b.攻击特征匹配
某些攻击工具所发出的数据包载荷会具有一些特征,流量清洗设备将这些特征作为指纹,来识别工具发出的攻击流量。静态指纹识别指预先将多种攻击工具的指纹特征保存在流量清洗设备内部,设备自行进行比对。动态指纹识别是指清洗设备学习并记录流过的网络数据包的指纹特征,丢弃含有连续命中指纹特征的数据包,而长期不被命中的指纹特征会逐渐老化直至消失。
c.速度检查与限制
一些攻击方法在数据包载荷上并不存在明显的特征,但在请求数据包发送的频率和速度上有着明显的异常。举例说,针对SSL的攻击会在SSL会话中多次进行加密秘钥的重协商,清洗设备发现SSL会话中秘钥重协商的次数超过了特定的阈值,可以直接中断这个会话并把来源加入到黑名单中。而UDP洪水攻击等方法可以通过限制流速的方式进行缓解。
该方法与上一小节提出的系统优化方法相比,区别在于该方法是动态的,响应速度更快,命中率更高。可以与攻击特征匹配方法配合使用。
d.TCP代理和验证
SYN洪水攻击的目的是占满攻击目标的连接表,使其无法创建新的连接而导致拒绝服务。利用TCP代理和验证后,当一个TCP SYN请求到达流量清洗设备后,设备直接回复ACK响应,等待客户端回复,并不交给后面的服务器。若SYN请求来自合法用户,清洗设备会代替用户与后端服务器建立连接,并将该连接加入信任列表中,合法用户和服务器之间可以透过清洗设备中继通信,对于用户来说该过程透明。具体的过程如图4.1所示。
攻击流量通常保持半开连接,清洗设备会暂时保留半开连接,经过短暂的超时时间后丢弃该连接。除了拦截半连接外,清洗设备还能对TCP协议做一些交互式验证以识别不合法的连接。
相比于后端的服务器,清洗设备对连接表操作进行了专门优化,能够处理极庞大的连接请求,并且保护服务器不被恶意连接消耗资源,影响性能。
图4.1正常用户的TCP交互
e.协议完整性验证
大多数攻击只发送攻击请求,不接收服务器响应数据以提高攻击效率。协议完整性验证即对请求来源进行交互性验证,对于协议实现不完整的请求来源,作丢弃处理。
举例来说,在DNS解析的过程中,如果响应数据中的FLAGS字段的Truncated位被置位,合法用户会使用TCP53端口重新发送域名解析请求。而攻击者由于不处理解析响应数据便不会试图重新连接,流量清洗设备可以利用这个特征筛选出攻击流量。整个拦截过程如图4.2。
图4.2正常用户的域名请求交互
对于提供HTTP服务的WEB服务器,可以使用302重定向来验证请求的来源是否接收了响应数据。HTTP的302状态码表示被请求的资源被临时转移,并给出一个转移后的地址。正常的合法用户在接收到302重定向后会顺着跳转地址寻找对应的资源。而攻击者若不处理响应数据则流量会被清洗设备拦截,WEB服务器不会受到其影响。拦截过程见图4.3。
图4.3正常用户的WEB页面重定向过程
一些攻击工具在开发过程中使用现成的协议库能够通过协议完整性检验。
f.客户端的真实性验证
客户端真实性验证是指对客户端程序进行挑战-应答式的交互验证,检查客户端能否完成特定的功能,以此来确定请求数据是否来自真实的客户端。
对于基于页面的WEB服务,当收到HTTP请求时,清洗设备会使用JavaScript等脚本语言发送一条简单的运算操作。真实浏览器会回送正确的结果并通过验证,来自于不含JS解析功能的攻击工具发送的流量则被拦截。拦截过程如图4.4。若攻击工具添加了JS解析功能,则使用验证码(反向图灵测试)进行人机识别。
验证码的全称是“全自动区分计算机和人类的图灵测试”(CAPTCHA)。清洗设备会直接丢弃无法识别验证码的请求,拦截过程如图4.5。
图4.4正常客户端的脚本验证
图4.5正常用户完成验证码输入后进行WEB访问
注1:图灵测试和反向图灵测试
图灵测试是指由人来出考题考验机器,其目的是让出题人无法分辨给出答案的是人还是机器,用来测试机器是不是具备人类智能的方法。反向图灵测试是由机器来自动生成题目,其目的是让出题人有效地分辨出给出答案的是不是真实的人。
注2:DDoS的云端清洗服务和本地缓解设备的不同功能
云端清洗服务主要采用稀释和分流的方法,擅长应对流量型DDoS攻击;而本地缓解设备能够处理的流量较小,更容易组合使用多种清洗技术,适合用于对抗系统资源消耗型和应用资源消耗型DDoS攻击,两者不能相互替代。
五.DDoS的未来发展
1.APT时代:技术高级,过程持续,危害严重。
2.技术高级:更强大的主机平台,更有效的攻击方法,更智能的攻击工具。
具体来说,有以下这些特征。
a.用高性能,高带宽,长在线时间的WEB服务器代替普通PC僵尸主机,管理僵尸网络的开销降低,攻击能力上升。
b.偏好于放大技术。
c.攻击请求能够模拟浏览器行为,绕过客户端验证算法;模拟人类访问行为,绕过人机识别算法。
3.持续时间长
黑客为了保证DDoS的攻击效果,在各个阶段的攻击中不断对其攻击方式及策略进行修改,增加防护难度。
4.危害严重
当前的DDoS攻击往往伴随着经济犯罪。
例如,当攻击者对比特币交易平台发起攻击时,会产生如下危害:
a.比特币汇率动荡,对比特币持有者造成损失。
b.黑客会以DDoS攻击为掩护窃取比特币。
5.未来的趋势
毋庸置疑,DDoS攻击会越来越普遍,正义与邪恶的较量必将会持续角力。
对于防护方来说,主要有以下难点:
a.攻击者越来越擅长将自己伪装成真实用户(真实浏览器);
b.复杂的攻击方式使得攻击模式的提取工作越来越繁重;
c.攻击流量增长速度越来越快。
面对这种局面,大数据技术确得心应手。
例如,当某台服务器的访问量突然增大,前端设备自动开启分析功能,并从云端发送给协同工作的同类设备,发起攻击的僵尸网络地址也被记录在信誉系统,类似攻击再次发生时可以做到快速阻断。攻击者的武器使用的次数越多,效果则会越来越差。
六.笔记小结
1.只看流量,不问攻击内容都是耍流氓。
2.DDoS攻击只是手段,背后的目的更值得关注。
3.拒绝服务对用户能造成十足的恐慌,本科毕设期间,在截止时间之前,学校的毕业设计系统奔溃,对学生造成巨大的心理压力。焦虑来源于对所依靠事物宕机的无力感。
4.DDoS与信息传播的联系值得注意。一边是针对新闻媒介的攻击,另一边是发布自己的诉求,转移矛盾,吸引眼球。目前较著名的事件是与穆斯林相关的“燕子之春”。攻击者攻击了美国金融业的网站,宣扬自己的宗教主张。目前在国内,不排除有人煽动宗教矛盾,制造国家分裂的活动。
5.如何解决双十一活动那样的的“伪DDoS(瞬时高并发流量)”?
区别:不让客户访问,服务方没有利润;客户无法结账,但服务方利润丰厚。
方案一:把程序优化到可以简单地通过增加一倍硬件来增加一倍性能,之后再砸钱。CDN网络缓解+服务器算法优化
方案二:为了某一活动特意增加硬件开支不合算,需要与云平台联合。
一点启发:电商业务的瓶颈不在网络,在于大数据,高并发,强一致性,高可用场景下的磁盘读写。
领取专属 10元无门槛券
私享最新 技术干货