【CSDN编者按】DDoS攻击近几年来非经常见,许多知名的平台网站都遭遇过。当应用层DDoS攻击当前已经是很常见的攻击类型之时,对于程序员而言,有哪些必须把握的DDoS攻击的知识点,更为 关键的是,如何进行有效的防御实践?在「CSDN在线峰会——阿里云核心技术竞争力」上,在系统、应用、网络安全领域拥有14年研究经验的阿里云资深安全专家叶敏深入分享了新型应用层DDoS攻击防御的很佳实践,希望能够对所有技术人有所启发及裨益。
复制链接或点击「阅读原文」可免费观看叶敏老师分享视频:
s://edu.csdn.net/course/play/28249/388361
作者|叶敏,阿里云资深安全专家
责编|唐小引
头图|CSDN下载自东方IC
出品|CSDN(ID:CSDNnews)
一、应用层DDoS攻击介绍
DDoS攻击长久以来困扰着互联网企业,从我们云盾监测到的DDoS攻击流量峰值来看,很近几年攻击流量在大幅上涨,从2021年我们对外公布防御了全球很大的DDoS攻击,453.8Gbps,到现在T级别的DDoS也变得很常见。
大流量DDoS攻击存在了很多年,虽然攻击流量一直在增长,但是攻击类型变化不大,一直以SYNFlood、UDPFlood、UDP反射攻击为主。针对大流量攻击已经有了非常有效的防御手段,以前这种大流量攻击碰到安全设备时,就像进了黑洞一样被吞噬,防御成功率很高,但是黑客们不服输,他们向这个黑洞发起了新的挑战。
假如把攻击流量伪装成正常业务的流量,那么安全防御设备就很难区分出攻击流量,这样就能穿过防御设备攻击到后端的应用,这就是应用层DDoS攻击,也叫CC(ChallengeCollapsar)攻击,就是挑战黑洞的意思。
二、应用层DDoS的攻击方式
应用层DDoS很近几年越来越受到黑客的青睐,从监测到的数据来看,应用层DDoS攻击在2021年就有翻倍增长。
除了简单绕过防御设备,还有一个重要的原因是应用层DDoS攻击更加高效,因为应用层的攻击都要触发上层应用的处理逻辑,其中可能有数据库查询、远程API调用、文件读写,甚至有复杂的计算逻辑,所以这些流量会对服务端带来更大的压力。攻击者精心挑选的带有复杂逻辑的URL进行攻击,可以用很小的流量对应用或数据库产生巨大压力。攻击者不需要用到很大的带宽,甚至对服务端只有小幅度的QPS上涨,让检测和防御都变得更有挑战。
DDoS攻击很典型的方式是僵尸网络,黑客控制了大量的傀儡主机(肉鸡或bot)向目标发起攻击。这些傀儡主机可能是服务器、PC、手机或IoT设备。
在应用层DDoS攻击中,我们发现另一种借刀杀人的攻击方式也很常见,黑客在一些热门的网页中嵌入了带有攻击行为的JavaScript代码,当访问者打开这些网页时,浏览器就循环对目标发起攻击,在一些停留时间比较长的网页,比如长篇小说或小电影网站,再加上不停的有新用户访问,攻击就会持续很长时间。虽然黑客没有控制这些设备的权限,但是他借助这些正常用户的浏览器实现了大规模的应用层DDoS攻击。
互联网上/S服务占比很大,所以针对/S协议的应用层DDoS攻击也是很常见的,我们把它叫Flood。虽然都是发起请求,但是也有不同的方式,防御的难度也不一样。我们分析过很多DDoS木马,有些直接拼接报文内容发送给服务端,这种通常攻击手法比较单一,而且也没有考虑Cookie和跳转,更不能执行JavaScript。
进一步我们发现有些木马使用现成的库,它对协议的支持更完善,部分可以支持Cookie和跳转,但没有浏览器引擎所以不能执行JavaScript。
再进一步我们发现带有浏览器引擎的攻击方式,它其实就是个无窗口的浏览器,可以完整的支持Cookie、跳转和JavaScript。我们也发现直接使用浏览器进行攻击的,有Windows平台的恶意软件中嵌入IE控件,移动App中嵌入WebView控件,前面讲到的热门网页嵌入JavaScript也是浏览器攻击的例子。因为攻击流量本身就是浏览器发起的请求,所以这种识别难度更大。
另外一种应用层DDoS攻击是针对SSL,据统计全球超过85%的网页已经启用S协议了,所以攻击目标范围很大。我们知道建立一个SSL连接的开销是比较大的,有人分析过,建立一个SSL连接服务端消耗的计算资源是客户端的15倍,所以假如攻击者向目标服务器发起大量SSL连接握手,就会对目标服务器产生巨大的性能压力。这里还有一个挑战在于,只有在SSL握手完成以后,才会传输应用层的数据内容,所以通过数据包内容来检测攻击,在这里就不适用。
前面讲的很多攻击方式跟/S业务有关系,但是私有协议也是存在应用层DDoS攻击的,这个在很多游戏业务中比较常见。一些粗暴的攻击方式是建立TCP连接后,发送随机的垃圾数据,一般情况下服务端碰到非法数据会直接断开这个连接。
但是也有一些耐心的攻击者,对正常的业务流量进行抓包,然后用重放的方式对目标发起攻击,一方面是这种正常的流量会让服务端执行更多的业务逻辑计算,比如登录操作需求查询数据库,从而产生更大的攻击效果,另一个方面是很难把重放流量跟正常用户流量区分开来,对检测和防御有更大挑战。
从这些攻击方式中可以看到,应用层DDoS攻击不再是简单粗暴的大流量冲击,而是攻击者精心构造的数据包,伪装成正常流量绕过防御设备,攻击后端的应用和服务。
三、传统的应用层DDoS防御方案
传统的防御策略是频率限制,在源IP、URL精度进行限速,拦截高频的访问者。目前大多数CC防御产品都向用户提供限速功能。但是频率限速有很多缺陷,因为不同的业务QPS差异很大,默认的限速策略并不能适用于所有场景,比如如下所示,第一个流量图,峰值流量达到20万QPS,而第二个图峰值才2万QPS,我们直觉上判定第二个是攻击行为,但是显然这两个业务不能用相同的限速策略的。
另一个问题是,当一个网站访问量很大时,一些脆弱的接口能承受的QPS又很低,全局的限速策略就不适用了。粗暴的拦截IP还可能引起误伤,假如一个源IP访问量过大就把IP加黑名单,有可能将NAT出口IP拉黑,在大的公司、学校里有一个人发起攻击就把整个出口IP拦截了会影响到正常用户的访问。
所以应用层DDoS防御有个 关键点是要做更精细化的策略,很多CC防御产品支持用户自定义策略,将指定的数据包丢掉。对于非协议,部分产品提供让用户配置报文过滤特征,对协议,多数安全产品都提供用户配置各个维度的组合拦截条件。但是DDoS防御都是争分夺秒的,这种人工分析和配置策略存在严重的滞后性。另外这种策略非常依靠安全专家经验,以及对业务的了解。
一些自动化的方案也在广泛使用,大家可能碰到过访问一个网站时出现一个白屏页面,上边提示在做安全检测,几秒钟后跳转到目标页面,这个叫JavaScript挑战。服务端向客户端返回一个校验页面,里边包含了校验浏览器的JavaScript代码,假如用真实浏览器访问并且有正常用户行为,就可以校验通过。它也有一些缺点,就是只适用于网页,假如是API接口,这种挑战会让正常业务中断,另外也不适用于非协议。
人机校验方式也被用于应用层DDoS防御,包括图形验证码或者需要用户点击、滑动的校验方式,这种做法虽然很多场景在使用,但非常影响用户体验,而且它同样存在缺陷,只能适用于网页,不能用于API接口和非协议。
四、智能化的防御方案
1.纵深防御的架构
这些方案都存在一定的缺陷,没有一个方案是可以解决所有场景下的DDoS攻击,所以我们在很近几年做了一个纵深防御方案,考虑到了各种不同的攻击方式,我们从多个维度进行了流量分析和防御,包括数据包内容特征、访问行为、客户端挑战和智能化的限速,其中大量应用了自动化分析建模,精细到每个业务、每个URL进行访问基线分析,自动发现其中的异常,并且基于阿里云的优势大规模应用了威胁情报技术。以下图中大部分新的防御手段都是为防御应用层DDoS攻击而设计的。
2.智能的自适应方案
不管是默认的防护模板,还是让用户去配置,都不是个好的方案。当有大量不同业务的时候,我们必须要一个自适应的方案,根据业务的历史流量自动分析出正常情况下的基线,基于这个基线去发现异常,并阻断异常请求。
难点一:如何自动刻画业务基线,并避免历史攻击的干扰?
比如以下图中第一个流量图,我们能够自动识别出来它的周期性波动并生成它的频率基线,虽然峰值QPS非常高,但是它符合历史频率基线,所以我们判定它是正常行为。第二个图,虽然峰值QPS不高,但是它不符合历史基线,所以判定存在攻击行为。
整个过程需要基于数据自动完成,因为在存在大量不同业务的情况下,人工标注是不现实的。同时,倘若网站历史上存在攻击,也需要自动剔除攻击时的数据,避免干扰。
难点二:如何在攻击第一时间发现异常并作出处置?
发现流量存在异常仅仅是第一步,很重要的是识别出来哪些流量是异常的,并且自动生成策略把它阻断掉。每个业务的流量都不一样,攻击方式也千变万化,显然不能用一个固定的特征去区分出攻击流量和正常流量。同样的,找出攻击流量的 关键是要知道正常流量长什么样,我们从几十个维度,在业务正常的时候学习出流量的基线画像,精细到每个域名、每个端口、每个URL,同样也是千人千面。当发生攻击时,流量分析引擎可以根据当前流量和基线的对比,自动生成拦截攻击流量的策略。
3.降维打击的协同防御
在阿里云我们天天防御了海量的攻击,每一次防御都是可以输出有价值的信息用于保护更多的其他客户。
就像免疫系统一样,一个客户遭受过一种类型的攻击,该攻击情况就会进入威胁情报系统中,自动分析出攻击手法和攻击源IP特性,并生成多维度的针对性方案。下次再发生这种攻击时,所有客户都可以受到保护。
五、应用层DDoS攻防的发展
DDoS防御需要争分夺秒,能快一分钟,业务中断就少一分钟,整个防御系统要足够实时。在流量的采集、分析和拦截都要做到实时化,尤其是攻击流量大的时候,实时分析对整个链路的性能都有很大挑战。要做到足够快,人工分析一定是来不及的,必须要足够自动化、智能化,通过离线的基线画像计算,加上实时的智能策略,我们现在做到了95%以上的应用层DDoS攻击都可以在3分钟内自动防御成功,将业务恢复,因为整个分析决策链路长,其中还是有很大改进空间。
应用层DDoS还有很多挑战等着我们去解决,误杀问题是其中一个,当业务有促销、秒杀活动时,短时间内流量激增,部分秒杀场景中大量IP集中访问一个页面,甚至此时正常业务就已经受到影响,服务端响应过慢了,此时各个维度都跟正常基线相关非常大,攻击检测系统很简单将这种行为误判为DDoS攻击。
另外一个难题是,防御系统非常依靠业务的基线画像做防御策略,假如一个新上线的业务就遭受攻击,或者业务刚接入防御系统,此时防御系统缺少该业务的画像,并不知道它正常流量是怎样的,防御效果就会大打折扣。另外一个问题也发生过多次,在一些业务中客户端有重连的逻辑,或者出错后重传的逻辑,假如客户端逻辑设置不当,当服务端发生异常时不断重连或重传,也简单误判为攻击行为,导致整个IP被封禁。针对这些防御缺陷,我们也在设计新的技术方案,包括访问源、客户端的信誉评分,尽量减少对正常用户的误杀。
从历史发展来看,DDoS的攻防技术一直在发展,但是攻击和防御从来都没有哪一方是占据绝对优势的,双方的技术总是在螺旋上升。只要有利益存在,黑客就会不断挑战我们的防御方案,虽然今天我们做了大量防御技术上的创新,但是道高一尺,魔高一丈,黑客一定会研究新的攻击技术绕过我们的防御系统,从简单、粗暴的攻击方式往精细化、智能化方向发展,进而迫使我们研究新的防御技术,未来攻击和防御技术都会迈上一个新的台阶。
作者简介:叶敏,阿里云资深安全专家,在系统、应用、网络安全领域有14年研究经验,阿里反钓鱼、云盾反入侵、网络安全产品技术负责人,在网络安全攻防方面有丰富的经验,其主导建设的多项安全技术保护了阿里云百万级客户。
作为“百万人学AI”的重要组成部分,2020AIProCon开发者万人大会将于6月26日通过线上直播形式,让开发者们一站式学习了解当下AI的前沿技术研究、核心技术与应用以及企业案例的实践经验,同时还可以在线参加出色多样的开发者沙龙与编程项目。参与前瞻系列活动、在线直播互动,不仅可以与上万名开发者们一起交流,还有机会赢取直播专属好礼,与技术大咖连麦。
评论区留言入选,可获得价值299元的「2020AI开发者万人大会」在线直播门票一张。快来动动手指,写下你想说的话吧!
下一篇:店铺DSR在淘宝流量的重要性
文章地址:https://www.tianxianmao.com/article/online/11751.html