本文作者:Lemon

本文属于安全脉搏原创现金奖励计划

转载请参考:https://www.secpulse.com/archives/61458.html

1.1 DDOS攻击的治理


对DDOS攻击的治理包括僵尸网络的治理、地址伪造攻击的治理和攻击反射点的治理。

对僵尸网络进行治理,能够从源头停止正在进行的DDOS攻击;对地址伪造攻击进行治理,能够控制和阻止未来可能发生的一部分DDOS攻击,并有利于定位攻击源头;而对攻击反射点的治理则主要在于控制和减少DDOS攻击的规模。


1.1.1 僵尸网络的治理

僵尸网络是一群被僵尸程序(bot)感染的僵尸主机(zombie)的集合,分布于家庭、企业、政府机构等各种场合,接收来自僵尸控制者(botmaster)的指令,进行DDoS、信息窃取、网络钓鱼、垃圾邮件、广告滥点、非法投票等多种攻击行为。由于攻击手段丰富多样、隐蔽性强、有能力发动大规模攻击、以经济利益为目的等特点,僵尸网络已成为黑客产业链中的一个重要环节,受到新闻媒体、安全业界和学术机构的广泛关注。

对僵尸网络进行治理,切断DDOS攻击的源头,从理论上说这是对抗DDOS攻击最有效的方法,然而,在实际操作过程中,治理僵尸网路需要面的诸多的困难和问题。

进行僵尸网络治理的首要困难在于,我们只有能够检测到网络异常,才能够知道系统感染了僵尸程序。如果僵尸主机用户发动DDOS攻击,单位时间内产生大量的攻击流量,那么安装于网络出口的检测设备或许能提示异常,从部分主机的内存占用上也可能看书端倪,但如果这些通信流量很小,并做了加密,那么这些 通信极有可能被淹没于正常的请求中而不被发觉,而我们也就几乎不能够察觉到受了感染,

检测到感染后,一般就能提取到样本,此刻遇到的另一个困难就是需要对样本进行逆向分析,找出需要的信息,依据样本的难易程度,这有可能要花费相当长的时间,不过走到这一步,治理就可以从两方面着手。

一是根据逆向分析的结果,编写僵尸网络程序的清楚工具,分发至企业局域网的其他感染主机进行清除处理,同时将C&C服务器域名或地址以及通信包特征加入规则予以拦截,迫于威胁响应的压力,这种做法通常是优先选择,这样做的不足在于,清楚掉的可能只是僵尸网络的冰山一角,整个僵尸网络仍然可以维持运营,我们的网络仍然面临被攻击的风险,如来自这个僵尸网络的DDOS攻击等。

二是接管或摧毁整个僵尸网络,这种做法往往非常困难,因为僵尸网络的分布通常不局限于一个地区、一个国家甚至一个洲,而常常分布于多个国家、多个洲,其相应的控制服务器也分布广泛,因此,这种跨区域的打击行动就需要政府间的协调合作,这往往只有有实力、影响大的跨国公司才能做到。

作为网络犯罪的主要平台之一,黑客利用僵尸网络展开不同的攻击,可以导致大量机密或个人隐私泄密,也可以通过DDOS攻击使整个基础信息网路瘫痪。因此,对僵尸网络进行治理显得十分迫切而重要。


1.1.2 地址伪造攻击的治理

在当前的互联网环境中,伪造地址发起网络攻击是一件非常容易的事,这一现场给DDOS的治理和防护带来了诸多困难。

首先,伪造地址使得追查攻击源变得更加困难,而攻击者承担的风险更小,也就更肆无忌惮。

其次,伪造地址使得DDOS能够达到更大的攻击规模,尤其是DNS反射式DDOS攻击,可以将原始攻击流量放大数十倍,加剧威胁的程度。

最后,伪造地址使得防护DDOS攻击变得更困难,受害者难以使用源地址过滤的方式阻挡攻击。

很明显,减少地址伪造对DDOS的治理和防护有很大的帮助,而实现这一目标在技术层面并不困难,CERT和IETF都给出了简单有效的解决方案。

1.1.2.1 CERT -- 计算机安全应急响应组(Computer Emergency Response Team)是专门处理计算机网络安全问题的组织。

路由过滤,具体而言,就是互联网服务提供商在网络出入口处的路由器上,对符合以下条件的数据包进行过滤:

  1. 从外部接口进入内部网络的数据包,但源地址属于内部网络;

  2. 由内部网络向外发送的数据包,但是源地址不属于内部网络。

之后众多网络设备和系统厂商都支持这种类型的过滤,包括Cisco、3COM、IBM、Sun等。

1.1.2.2 RFC 2827

Request For Comments(RFC),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。目前RFC文件是由Internet Society(ISOC)赞助发行。基本的互联网通信协议都有在RFC文件内详细说明。RFC文件还额外加入许多的论题在标准内,例如对于互联网新开发的协议及发展中所有的记录。因此几乎所有的互联网标准都有收录在RFC文件之中。

2000年5月,IETF发布了RFC2827“Network Ingress Filtering Defeating Denial of Service Attracks which employ IP Source Address Spoofing”。该文认为,只要对下游流量中的地址欺骗流量过滤,就可以近乎完全消除此类攻击场景,RFC 2027提供了一个实例,如图:

Image.png

攻击者位于204.69.207.0/24网段,属于ISP D的区域中,通过路由器“router 2”,试图攻击其他主机,如果“router 2”执行了入口流量过滤,只允许源地址在204.69.207.0/24网段内的数据包流出,反之则全部禁止,那么攻击将无法进行。

此外, RFC2827提出在网络接入处设置入口过滤(Ingress Filting),来限制伪装源IP的报文进入网络。这种方法更注重在攻击的早期和从整体上防止DoS的发生,因而具有较好效果。使用这种过滤也能够帮助ISP和网管来准确定位使用真实有效的源IP的攻击者。ISP应该也必须采用此功能防止报文攻击进入Internet;企业(校园网)的网管应该执行过滤来确保企业网不会成为此类攻击的发源地,但由于缺乏激励和动力,更大范围的部署迟迟未能实现。

1.1.2.3 Unicast Reverse Path Forwarding

URPF-防止虚假地址攻击

URPF (Unicast Reverse Path Forwarding)是单播逆向路径转发的简称,其主要功能是防止基于源地址欺骗的网络攻击行为。之所以称为“逆向”,是针对正常的路由查找而言的。一般情况下,路由器接收到包后,获取包的目的地址,针对目的地址查找路由Pair(Dst-IP, NextHop),如果找到了就转发包,否则丢弃该包。uRPF通过获取包的源地址和入接口,以源地址为目的地址,在转发表中查找源地址路由对应的出接口是否与入接口匹配,如果不匹配,认为源地址是伪装的,丢弃该包。

Unicast Reverse Path Forwarding也是一种缓解地址伪造的技术,一旦开启了这种功能,路由器会对进入的数据包检查源地址和源端口是否在路由器表中,如果存在,则认为该数据包是通过最优路径到达路由器,应该正常转发,否则丢弃,具体分为5个步骤:

  1. 对于Input方向的数据包,检查访问控制列表ACL是否通过;

  2. 按照Unicast RPF检查是否由最优路径抵达;

  3. Forwarding Information Base(FIB)查找;

  4. 对于Output方向,检查访问控制列表ACL是否允许通过;

  5. 转发数据包。

1.1.2.4 分布式过滤方式

除了上述方法外,还有很多研究者提出了其他方法来缓解和杜绝地址伪造,例如有学者提出了“基于路由的分布式包过滤方法”其原理是路由器根据数据包的源地址和目的地址判断其转发路径是否经过自己。如果不经过,则丢弃数据包,如果所示:https://www.secpulse.com/archives/65477.html

Image [1].png

攻击者位于AS 7中,试图对AS 4的目标进行攻击,于是将攻击源地址伪造成AS 2中的成员。当攻击数据包经过AS 6与AS 7之间的边界路由器时,路由器会判断从AS2到AS4的路径,发现不会经过自己,就将数据包丢弃。

虽然类似的方法已广泛提出,但伪造地址攻击并未得到有效遏制,主要是因为ISP缺乏采用这些技术的动力。


1.1.3 攻击反射点的治理

反射式DDOS攻击,尤其是DDOS反射攻击,已成为当前最具破坏力的攻击形式之一。

反射式DDOS攻击备受攻击者青睐,主要原因有两个。第一,通过伪造地址隐藏攻击源;第二,大多数反射攻击同时具有放大作用,可以将攻击流量放大数十倍。反射攻击包括ACK、DNS、SNMP、NTP、CHARGEN等种类,其中DNS反射攻击最为普遍。这是因为互联网中存在大量可作为反射点的DNS服务器,而且DNS反射攻击可以实现较大的反射倍数。

对于放大攻击来说,流量一旦经过反射点放大,占用宽带就会急剧上升,而无论采用何种防护方法,也都意味着成本或代价急剧上升,所以,针对反射点进行治理,对于减少流量型DDOS攻击具有事半功倍的效果。

治理反射点最直接有效的方法是提高DNS服务器的安全性,而大多数DNS服务器的管理员并非不想做到这一点只是无从入手,针对不同的需要,主要介绍三种方式:

  1. Open Resolver Project
    Open Resolver Project是一个国际组织,它致力于减少DNS放大攻击造成的威胁,这个组织定期维护一份DNS服务器列表。
    Open Resolver Project提供查询功能,使用者可以查询任何网段中开放的地址解析器,查询结果包括从多个地址向其发送请求的相应结果,如果一个DNS服务器可以被从任意地址访问,并无限速地回应查询请求,那么它就可以被用做DDOS攻击的反射点。
    Open Resolver Project建议DNS的维护者检查以下配置:
    1)限制允许访问的地址范围,以防被滥用,具体操作可以参考Team CYMRU Website.
    2)采用RRL,Knot DNS和NSD已经将其作为标准选项,而BIND还需要安装一个补丁程序。
    3)用户端设备不应在广域网接口监听DNS数据包,包括网络和广播地址。

  2. 响应速率限制
    2013年7月,互联网系统协会宣布,为了防御利用DNS发起的反射式DDOS攻击,最新版的BIND软件增加了响应速率限制模块,并声称这会是缓解DNS反射攻击的最有效方法。
    响应速率限制是对DNS协议的一种增强功能,目的是缓解DDOS放大攻击,RRL官方网站认为,之所以DNS服务器很容易被用于反射攻击,是由于三个原因:
    1)DNS查询通常使用UDP协议,因为这是一种不验证来源的协议,所以很容易伪造,攻击者可以将发送的请求数据包的源地址改为目标的地址,这样DNS服务器会向受害者发送回复,也就是反射式DDOS攻击。
    2)大部分ISP不检查发自他们的数据包中源地址是否真实,这使得互联网中伪造地址盛行。
    3)几个字节的DNS请求数据包,就可以引发数倍甚至数十倍大小的响应,例如,查询isc.org的ENDS0数据包只有36个字节长,而触发的相应数据包长达3576个字节。攻击者可以控制攻击引发巨大的增幅。

  3. NIST SP 800-81
    NIST  --  美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)直属美国商务部,从事物理、生物和工程方面的基础和应用研究,以及测量技术和测试方法方面的研究,提供标准、标准参考数据及有关服务,在国际上享有很高的声誉。

NIST SP800系列标准

SP800是美国NIST(National Institute of Standards and Technology)发布的一系列关于信息安全的指南(SP是Special Publications的缩写)。文档很多,也很细,值得大家学习。

2006年5月,NIST发布了特别出版物SP 800-81 第1版,名为“安全域名系统部署指南”。2013年9月,第2版发布。

这份指南认为,由于DNS缺乏对系统边界的定义,以及缺乏数据验证,使得它会面临以下威胁:

  1. 利用假冒身份欺骗DNS服务器,借以实施拒绝服务攻击。

  2. 入侵者或虚假的DNS信息提供者可以毒化DNS的缓存,例如一个企业的DNS信息提供服务器,这将导致错误访问子域名。

  3. 篡改DNS服务器中对历史查询的缓存,可能导致使用该DNS服务器的用户访问有害的非法资源。

  4. 如果域名解析请求的数据违反了DNS规范的定义,就可能产生不良影响,例如增加系统的负载、保存过时的数据,甚至使系统无法提供服务,对于DNS,数据内容决定着整个系统的完整性。

对于这些威胁,SP 800-81提出了以下通用的建议:

  1. 实施适当额系统和网络安全控制,确保DNS托管环境,如操作系统和应用程序安装补丁程序、进程隔离和网络的兼容性。

  2. 对于一个企业控制范围内的DNS服务器,对DNS事务进行保护,例如域名解析数据的更新和备份,保护的方法可以参考互联网工程任务组的事务签名规范,使用基于共享秘密的散列消息认证码。

  3. 使用基于非对称加密的数字签名来保护DNS的请求/应答事务,具体内容可以参考IETE的域名系统安全扩展规范。

如何配置和部署DNS以防止DDOS攻击:

  1. DNS协议和服务基础组件;

  2. 讨论DNS主机环境的威胁、安全对象和防护方法;

  3. 推荐的DNS请求/应答机制安全性;

  4. 减少DNS的信息泄露;

  5. DNS的安全管理操作。


1.2攻击的缓解


前半部分介绍了治理对抗DDOS攻击的方法,大部分的治理方法需要在DDOS攻击发生之前就配置。并且需要世界范围内的网络运营商、网络公司和网络组织进行有效合作,才能达到较好的对抗效果。然而,对于世界上许多中小型的企业和组织来说,他们并没有能力进行大范围的网络治理和僵尸网络打击活动,却比大型公司和组织更可能遭受DDOS攻击,对于这些小中型企业和组织来说,在DDOS攻击已经发生的情况下,可以通过一些缓解技术来减少攻击对自身业务和服务的影响,从而在一定程度上保障业务正常运行。

缓解DDOS攻击的主要方法是对网络流量进行清洗,即设法将恶意的网络流量从全部流量中去掉,只将正常的网络流量交付该服务器,然而,随着分布式拒绝服务攻击的流量不断增大,单一的流量清洗设备和流量清洗中心已经无法处理如此大规模的网络流量了,因此,面对DDOS攻击时,在进行流量清洗前还需要进行流量稀释。


1.2.1 攻击流量的稀释

Image [2].png

在面对超大流量的分布式拒绝服务攻击时,首先要做的就是将流量稀释和分散,在流量被稀释和分散后,攻击情况就从多对一变成了多对多,这样到达没个流量清洗设备或流量清洗中心的网络流量都会下降到其能够处理的范围之内,也就能够进行进一步的清洗工作了。

目前比较流量的攻击流量稀释的方法是使用内容分发网络或任播技术。

1.CDN

CDN技术的初衷是提高互联网用户对网站静态资源的访问速度,但是由于分布式多节点的特点,它也能够对分布式拒绝服务攻击的流量产生稀释的效果。

CDN,就是在互联网范围内广发设置多个节点作为代理缓存,并将用户的访问请求导向最近的缓存节点,以加快访问速度的一种技术手段。

那么,用户的访问请求是如何被导向最近的缓存节点的呢?这通常通过智能DNS来实现,在许多情况下,对于资源和服务的访问请求是以域名的形式发出的,传统的域名解析系统会将同一域名的解析请求解析成一个固定的IP,因此,整个互联网对于该域名的访问都会导向这个IP地址。

Image [3].png

智能DNS则有所不同,在智能DNS系统中,一个域名会对应一张IP地址表,当收到域名解析请求时,智能DNS会查看解析请求的来源,并给出地址表中距离请求来源最接近的IP地址,这个地址通常也就是最接近用户的CDN缓存节点的IP地址,在用户收到域名解析应答时,认为该CDN节点就是他请求的域名所对应的IP地址,并向该CDN节点发起服务或资源请求。

Image [4].png

CDN节点在收到用户的请求时,会在其存储的缓存内容中寻找用户请求的资源,如果找到,就直接将资源响应给用户;如果在CDN节点中找不到用户请求的资源,则CDN节点会作为代理服务器向源网站请求该资源,获取资源后将结果缓存并返回给用户,对于有大量静态资源的网站,使用CDN进行代理缓存一般能减少源站80%的访问流量。

可以看到,在使用CDN技术之后,互联网上的用户可以通过智能DNS利用CDN的节点快速获取所需要的资源和服务,同时由于CDN节点的缓存作用,能够在很大程度上减轻源站的网络流量负载。

Image [5].png

在发生了分布式拒绝服务攻击时,智能DNS会将来自不同位置的攻击流量分散到对应位置的DNS节点上,这使得CDN节点成为区域性的流量吸收中心,从而达到流量稀释的效果。在流量被稀释到各个CDN节点后,就可以在每个节点处进行流量清洗,只将正常的请求交付给源站,从而达到防护源站的目的。

不过,利用智能DNS实现的CDN技术智能分散和稀释通过域名发起的分布式拒绝服务攻击的流量,如果攻击者直接通过IP而不是通过域名进行攻击,那么不会进行智能DNS解析,攻击流量也无法分散到各个CDN节点上。更好的流量稀释方法是使用Anycast技术。


2.Anycast

Anycast技术是一种网络寻址和路由的方法,通过使用Anycast,一组提供特定服务的主机可以使用相同的IP地址,同时,服务访问方的请求报文将会被IP网络路由到这一组目标中拓扑结构最近的一台主机上。

Anycast通常是通过在不同的节点处同时使用BGP协议向外声明同样的目的IP地址的方式实现的,如图,服务器A和服务器B是Anycast的两个节点,他们通过BUG协议同时向外声明其IP地址为10.0.0.1。

Image [6].png

当客户端位于路由器1的网络内时,他将会通过路由器1来选择路由的下一跳,而在路由器1看来,到达服务器IP地址10.0.0.1的网络拓扑如图。

Image [7].png

显然,转发到路由器2的距离最短,因此,路由器1会将请求报文转发给路由器2而不是路由器3,从而实际上发送给服务器A,达到发送给Anycast之中“最近”节点的目的。

对无状态的服务Anycast通常用来提高可用性保障和负载均衡,例如NDS服务。几乎全部的互联网根域名服务器都部署了Anycast。在各大洲不同位置的A,C,E,F,I,J,K,L和M根域名服务器都使用了Anycast寻址技术,以提供一种分布式的服务。同时,许多商业DNS服务提供商也部署了Anycast寻址以便提高查询性能,保障系统冗余并实现负载均衡。

Anycast通常具有高度的可靠性,它可以提供自动故障恢复。Anycast应用通过外部“心跳”来监测服务器的功能,如果服务器出现故障,就会立即撤销服务器的理由公告。

使用Anycast技术能够稀释分布式拒绝服务攻击流量,在Anycast寻址过程中,流量会被导向网络拓扑结构上最近的节点,在这个过程中,攻击者并不能对攻击流量进行操控,因此攻击流量将会被分散并稀释到最近的节点上,每一个节点上的资源消耗都会减少(见图)。

Image [8].png


1.3 攻击流量的清洗


流量清洗是指在全部的网络流量中区分出正常流量和恶意流量,将恶意流量阻断和丢弃,而只将正常的流量交付给服务器。

与其他的网络安全检测和防护手段类似,流量清洗也需要考虑漏报率和误报率的问题,通常,漏报率和误报率是一对矛盾,需要通过对检测和防护规则的调整来进行平衡。

如果流量清洗的漏报率太高,就会有大量的攻击请求穿透流量清洗设备,如果无法有效地减少攻击流量,也就达不到减轻服务器压力的效果。

相反,如果误报率太高,就会出现大量的正常请求在清洗过程中被中断,严重影响正常的服务和业务运行。

优秀的流量清洗设备,应该能同时将误报率和漏报率降低到可以接受的成都,这样就能够在不影响网络或业务系统正常运行的情况下,最大限度的将恶意攻击流量从全部网络流量中去除,要达到这个目的,需要同时使用多种准确而高效的清洗技术,这些技术包括:IP信誉检查、攻击特征匹配、速度检查与限制、TCP代理和验证、协议完整性验证和客户端真实性验证。

Image [9].png

Image [10].png


1.3.1 IP信誉检查

IP信誉检查原本是用于识别和对抗垃圾邮件的一种技术,不过这种技术也可以用来在网络层进行流量清洗。

IP信誉机制是指为互联网上的IP地址赋予一定的信誉值,那些过去或限制经常被作为僵尸主机发送垃圾邮件或发动拒绝服务攻击的IP地址会被赋予较低的信誉值,说明这些IP地址更有可能成为网络攻击的来源。

当发生分布式拒绝服务攻击时,流量清洗设备会对通过的网络流量进行IP信誉检查,在其内部的IP地址信誉库中查找每一个数据包来源的信誉值,并会优先丢弃信誉值低的IP地址所发来的数据包或建立的会话连接,以此保证信誉高的IP地址与服务器的正常通信。

IP信誉检查的极端情况就是IP黑名单机制,即如果数据包的来源存在于黑名单之中,则不进行任何处理,直接丢弃该数据包,这种方式一般会造成较多的误报,影响正常服务的运行。


1.3.2 攻击特征匹配

在大多数情况下,发动分布式拒绝服务攻击需要借助攻击工具,为了提高发送请求的效率,攻击工具发出的数据包通常由编写者伪造并固化到工具当中的,而不是在交互过程中产生的,因此一种攻击工具所发出的数据包载荷会具有一种特征。

流量清洗设备可以将这些数据包载荷中的特征作为指纹,来识别工具发出的攻击流量。指纹识别可以分为静态指纹识别和动态指纹识别两种。静态指纹识别是指预先将多种攻击工具的指纹特征保存在流量清洗设备内部,设备将经过的网络数据包与内部的特征库进行对比,直接丢弃符合特性的数据包;动态指纹识别则需要清洗设备对流量的网络数据包进行分析,在分析到若干个数据包的载荷部分之后,将其指纹特征记录下来,后续命中这些指纹特征的数据包会丢弃,而长期不被命中的指纹特征会逐渐老化甚至消息。


1.3.3速度检查与限制

一些攻击方法在数据包载荷上可能并不存在明显的特征,没有办法进行攻击特征匹配,但却在请求数据包发送的频率和速度上有着明显的异常,这些攻击方法可以通过速度检查与限制来清洗流量。

例如,在受到THC SSL DOS攻击时,会在同一个SSL会话中多次进行加密秘钥的重协商,而正常情况下是不会反复重协商加密秘钥的,因此,当流量清洗设备进行统计时,如果发现SSL会话中秘钥重协商的次数超过了特定的阈值,就可以直接中断这个会话并把来源加入黑名单中。

再如,在受到Slowloris和慢速POST请求攻击时,客户端和服务器之间会以非常低的速率进行交互和数据传输,流量清洗设备在发现HTTP的请求长时间没有完成传输时,就可以将会话中断。

此外,对于UDP洪水攻击等一些没有明显特征、仅通过大流量进行攻击的方法,可以通过限制流速的方式对其进行缓存。


1.3.4 TCP代理和验证

SYN洪水攻击等攻击方式都是利用TCP协议的弱点,将被攻击目标的连接表占满,使其无法创建新的连接而达到拒绝服务攻击的目的,流量清洗设备可以通过TCP代理和验证的方法来缓解这种攻击造成的危害。

在一个TCP SYN请求到达流量清洗设备后,设备并不将它交给后面的服务器,而是直接回复一个SYN+ACK响应,并等待客户端回复。如果SYN请求来自合法的用户,那么他会对SYN+ACK进行响应,这时流量清洗设备会代替用户与其保护的服务器建立起TCP连接,并将这个连接加入到信任列表当中,如图

Image [11].png

合法的用户和服务器之间就可以透过流量清洗设备,进行正常数据通信。对于用户来说整个过程是完全透明的,正常的交互没有受到任何影响。

而如果这个SYN请求来自攻击者,那么他通常不会对SYN+ACK进行应答,从而形成半开连接。这样流量清洗设备会暂时保留这个半开连接,并在经过短暂的超时时间之后丢弃这个连接。如图所示

Image [12].png

相比于所保护的服务器,流量清洗设备对连接表操作进行了专门优化,能够处理极其庞大的连接请求数量,因此即使有非常多的SYN请求同时涌向清洗设备,清洗设备也能够处理,在这个过程中,由于清洗设备拦截在被保护的服务器之前,服务器并没有消耗任何的连接资源,因此保证了服务器的性能不受影响。

流量清洗设备在作为TCP代理进行防护时,除了拦截半开连接外,还可以进行TCP协议的一些交互式验证。例如,在收到第一个SYN请求时,通过直接丢弃、发送POST包或发送错误序列号的ACK包的方式来中断连接过程,并检查客户端是否重新发起连接请求,通过这种验证,也可以识别并丢弃许多不合法的连接。


1.3.5协议完整性验证

为了提高发送攻击请求的频率,大多数的攻击方法都会只发送攻击请求,而不接收服务器响应的数据,或者无法完全理解和处理响应数据,因此,如果能够对请求来源进行交互式验证,就可以检查请求来源协议实现的完整性,对于协议实现不完整的请求来源,通常可以将其作为攻击主机丢弃其发送的数据。

在DNS解析的过程中,如果域名解析请求获得的响应数据中Flags字段的Truncated位被置位,通常客户端就会使用TCP 53端口重新发送域名解析请求。如图所示

Image [13].png

而攻击者使用的攻击工具由于不接收或不处理解析请求的响应数据,也就不会使用TCP 53端口进行重新连接。流量清洗设备可以利用这个区别来有效地区分合法用户与攻击者,拦截恶意的DNS攻击请求。如图所所以

Image [14].png

对于提供HTTP服务的web服务器,也可以使用类似的方式类似的方式进行协议完整性验证。例如,可以使用HTTP协议中的302重定向来验证请求的来源是否接收了响应数据并完整实现了HTTP协议的功能,HTTP的302状态码表示被请求的资源被临时转移,并会给出一个转移后的地址,正常的合法用户在接收到302重定向后会顺着跳转地址寻找对应的资源,如图所示

Image [15].png

而攻击者的攻击工具由于不接收或不处理响应数据,则不会进行跳转,因此攻击请求会被清洗设备拦截,Web服务器不会受到任何影响。如图所示

Image [16].png


1.3.6客户端真实性验证

进行协议完整性验证能够清洗掉一部分简单的攻击工具所发送的攻击流量,但是,一些攻击工具在开发过程中使用了现成的协议库,这样就能够完整实现协议交互,通过协议完整性验证。对于这些攻击工具,需要使用客户端真实性验证技术进行攻击流量清洗。

客户端真实性验证是指对客户端程序进行挑战-应答式的交互验证,检查客户端能否完整特定的功能,以此来确定请求数据是否来自真实的客户端。

对基于页面的web服务,可以通过检查客户端是否支持JavaScript来验证请求是否来自真实的浏览器客户端。当收到HTTP请求时,流量清洗设备会使用JavaScript等脚本语法发送一条简单的运算操作。如果请求是由真实的浏览器发出的,那么浏览器会进行正确运算并返回结果,流量清洗设备进行结果验证后就会让浏览器跳转到web服务器上真正的资源位置,不会影响正常用户的访问。如图所示

Image [18].png

当然,攻击者也可以牺牲工具的一部分攻击效率,并在工具中加入JavaScript的解析和执行能力,以便通过JavaScript验证,这时,则需要使用验证码进行人机识别。

验证码的全称是“全自动区分计算机和人类的图灵测试”这是一种用于分辨人与计算机的反向图灵测试。

常见的验证码是让用户输入一个扭曲变形的图片上所显示的文字,对于真实的人类用户来说,通常能够比较容易的识别出这些文字,给出正确的识别结果,从而通过测试并继续进行访问。如图所示

Image [19].png

而对于计算机来说,想要识别验证码中的文字则相当困难。对于无法给出验证码正确识别结果的请求,流量清洗设备会直接丢弃,从而保护web服务器不受影响,如图所示

Image [20].png

所有的防御是不完美的正如攻击是不完美的一样,好的防御者在提升自己的防御能力趋于完美的同时也要善于寻找攻击者的不完美,寻找一次攻击中的漏洞,不要对攻击心生恐惧,对于Ddos攻击而言,发起一次攻击一样是存在漏洞的,如果我们都能够擅长利用其中的漏洞并且抓住后面的攻击者那么相信以后的ddos攻击案例将会减少很多,在针对目标发起攻击之前攻击者也会做更多的权衡,损失,利益和法律。

源链接

Hacking more

...