“破坏之王”DDoS的前世今生(上)
星期一, 九月 23, 2019
震惊的程序员
2018年2月28日,GitHub官方发文宣称其网站遭受DDoS攻击,每秒 1.35 TB 的流量瞬间冲击了这一开发者平台,导致当天的17:21-17:26 UTC 5分钟内GitHub不能访问,对很多依赖于GitHub的企业或者个人开发者或多或少造成了不少影响,包括GitHub 克隆,上传代码等操作均无法进行。
一石惊起千层浪,全世界的程序员都不淡定了:连GitHub都敢黑??
要知道,GitHub作为全球最大的社交编程及代码托管网站,同时也是影响力最大的开源技术开发者社区,在这里聚集了众多来自全世界的程序员,技术能力自然不容小觑。即便如此,GitHub仍然被攻击并且中招,DDoS攻击的能力和威力可见一斑。
那么,问题来了:什么是DDoS?
DDoS(Distributed Deny of Service),即分布式拒绝服务攻击。恶意攻击者利用手上掌握的大量肉鸡,对攻击目标发起大量的请求,耗尽目标设备的带宽或计算资源,使得攻击目标不能为正常用户提供服务。
我们用一个很简单的例子来解释:最近,某外资超市Costco在上海开店首日由于顾客爆满导致暂停营业的消息大家应该都了解,上海人民的战斗力震惊了全世界……
换个思路,假如有一家商店具备Costco这样的人气,但同时它的竞争对手一直在伺机搞垮该商店,这时竞争对手采用了一个方法:低价雇佣大量闲散人员进入该商店。
表面上看,店铺门庭若市,但实际上,这些闲散人员并没有实际购买的需求,一边占据着空间资源,同时又假扮为正常顾客拉着店员四处咨询。这就造成了一个问题:商店由于人力和物力资源有限,会采取限流措施,但有实际购买需求的顾客却很难进入消费,长此以往,自然会慢慢拖垮商店。
同理,对于网站也是一样的。当恶意攻击者伪造大量请求到网站时,便会消耗原本的资源或者带宽,导致合法用户无法得到服务。
那DDoS应该如何防护呢?别着急,未知攻、焉知防,我们先了解下最常见的DDoS攻击方式。
DDoS的攻击方式有哪些?
通过攻击方式的不同,DDoS可以分为四类:
1、协议DDoS攻击
协议DDoS攻击是一种利用协议的缺陷,通过发送特殊报文造成服务异常的攻击。DDoS最初便是利用该特性攻击网络设备,由于网络设备控制面和管理面的处理能力有限,攻击者通过向网络设备发起畸形报文请求,导致CPU无法实时处理消息,引发正常的业务交互流程、内部处理流程阻塞,从而达到拒绝服务的目的。
畸形报文主要包括Frag Flood、Smurf、Stream Flood、Land Flood攻击,以及IP畸形包、TCP畸形包、UDP畸形包、ICMP畸形包等。随着网络协议的不断完善,这类攻击也在不断减少。
比如,“Ping of Death” 攻击便是利用ICMP协议的规则产生的,它的原理是:操作系统规定ICMP数据包最大尺寸不超过64KB,当超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
如果攻击者向目标主机长时间、连续、大量地发送ICMP畸形数据包,便会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理。(目前操作系统已经取消了发送ICMP数据包的大小的限制,解决了这个漏洞)
2、大流量DDoS攻击
即通过发送大量的协议报文,占用目标带宽资源或者计算资源,使目标无法为用户提供服务。它利用了攻击方的资源优势,当大量代理发出的攻击流量汇聚于目标对象时,足以耗尽其网络接入带宽。
常见的带宽消耗攻击类型包括:TCP洪水攻击,UDP以及ICMP洪流攻击,三者可以单独使用,也可同时使用。
在这里,我们简单介绍下Syn Flood攻击,它的攻击原理利用了TCP协议的三次握手机制。现实生活中人和人可以采取见面沟通的方式,在网络中是如何实现通信呢:首先需要保证双方都具有发信和收信的能力,在不知双方能力状态下进行的通信都是无法保证可靠性和通信效率的。那么通信双方如何确认对方的通信能力呢?——通过TCP协议的三次握手连接。
正常的通信应该是这样的:
而SYN Flood攻击则是通过伪造一个源地址的SYN报文,发送给受害主机,受害主机回复SYN-ACK报文给这些地址后,不会收到ACK报文,导致受害主机保持了大量的半连接,直到超时。这些半连接可以耗尽主机资源,使受害主机无法建立正常TCP连接,从而达到攻击的目的。
3、应用层DDoS攻击
也称为CC攻击,如HTTP Flood攻击等,通常针对组织的应用层,并通过恶意请求来淹没应用程序。攻击者借助代理服务器生成指向受害主机的合法请求,实现DDoS和伪装,通常CC完全模拟用户请求,类似于各种搜索引擎和爬虫一样,这些攻击行为和正常的业务并没有严格的边界,难以辨别。
例如,我们都有过这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了。CC就是模拟多个用户不停地进行访问那些需要大量数据操作的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至网络拥塞,正常的访问被中止。
4、反射放大型攻击
以上提到的DDoS攻击都有一个缺点:十分耗时且隐蔽度不够,通常前期需要大量的肉鸡准备工作,相当于“伤敌一千、自损八百”。例如2016年美国东海岸遭受的DDoS攻击,流量规模大概是1.2Tbps,但是攻击者前期感染肉鸡的准备时间就花了3个多月。
这时很多黑客就在思考如何提高攻击效率,当然不得不说黑客的智慧也是无穷的最终便出现了反射放大型攻击:攻击者只需要付出少量的代价,即可对需要攻击的目标产生巨大的流量,对网络带宽资源、连接资源和计算机资源造成巨大的压力。
目前最常见的反射放大攻击有两类:基于DNS的反射放大攻击和基于NTP的反射放大攻击,下面我们分别详细介绍。
首先要了解一点,无论是基于 DNS 还是基于 NTP,其最终都是基于 UDP 协议的。UDP 协议是一种面向无连接的协议,这也是UDP协议与TCP协议的区别,TCP通过三次握手与四次挥手的方式致力于建立一种可靠的连接,但缺点在于通信效率较低,而UDP则采用无连接的方式建立一种快速的通信方式。(相当于通信双方没有互相确认这一步骤)
所以客户端发送请求包的源 IP 很容易进行伪造,当把源 IP 修改为受害者的 IP,最终服务端返回的响应包就会返回到受害者的 IP,这就形成了一次反射攻击。
放大攻击就是一次小的请求包最终会收到一个或者多个多于请求包许多倍的响应包,这样就达到了四两拨千斤的攻击效果。
它的攻击原理是:网络上有大量的开放DNS解析服务器,它们会响应来自任何地址的解析请求,通常我们发出的解析请求长度是很小的,但是收到的结果却是非常大的,尤其是查询某一域名所有类型的DNS记录时,返回的数据量就更大,因此便达到了反射放大的效果。(原理类似于百度输入关键词查询后会出现很多相关联的链接)
攻击者利用被控制的机器发起伪造的解析请求,然后将放大数倍的解析结果返回给被攻击目标,以此达成攻击目的。不过DNS本身抗压能力不行,而且对方请求量过大的话,也会影响到DNS本身的服务,目前此类攻击的规模在数百Gbps级别。
NTP(Network Time Protocol,网络时间协议)是用来使计算机时间同步化的一种协议,它可以使计算机与时钟源进行同步化并提供高精准度的时间校正。在NTP协议的服务器实现上,通常会实现一系列Mode 7的调试接口,而接口中的monlist请求能够获取与目标NTP服务器进行同步的最后600个客户端的IP地址等信息。这意味着,只需要发送一个很小的请求包,就能够触发大量连续的包含IP地址信息等数据的UDP响应数据包,由此达到了反射放大的攻击效果。
近两年,又出现了一种新的反射攻击方式:Memcached。Memcached是一种内存数据库缓存系统,通常部署于IDC、云和基础设施即服务(IaaS)网络中以提高数据库驱动型网站和其他互联网服务的性能。
攻击者会向Memcache服务器发送小字节请求,由于UDP协议并未正确执行,便会产生数万倍的回应。再加上UDP协议的原始IP地址能轻易被欺骗,攻击者便可以轻易诱骗Memcache服务器将大规模的响应包发送给受害者的IP地址。
可以看到,不管是哪类DDoS攻击,最终的目标都是一致的:使网络资源反应迟钝或完全无反应。
DDoS攻击的历史
作为一种行之有效的攻击手段,DDoS攻击的历史已经相当悠久。
可以看到1996年至2000年之间,DDoS还只是极少数的黑客用来炫耀技术和进行个人报复的一种手段,而之后的日子,DDoS逐渐演变成了有组织的攻击方式,大量的黑客组织甚至是一些政府也会利用DDoS攻击以达到一些特殊目的,其中比较著名的有2007年的爱沙尼亚网络战争。
2007年4月底至5月,爱沙尼亚的重要网络基础设施,包括国会、总统府、总理办公室、央行、主要媒体报社等网站都受到DDoS攻击而关闭。最后爱沙尼亚不得不大量关闭对外通讯,以此抵抗外国黑客入侵,事后爱沙尼亚指控攻击方为俄罗斯,这也是世界上爆发的第一例网络战争。(感兴趣的读者可以上网详细了解)
目前,DDoS攻击已经形成了完整成熟的黑色产业链,有着”破坏之王“之称的DDoS对全球网络安全构成了极大的威胁,对于威胁行为者而言,DDoS攻击是从受害者处敲诈金钱、窃取数据、同行恶意竞争的首选武器。除此以外,多金但脆弱的游戏行业也已经成为了DDoS攻击的重灾区。
2016年4月,Lizard Squad组织对暴雪公司战网服务器发起DDoS攻击,包括《星际争霸2》、《魔兽世界》、《暗黑破坏神3》在内的重要游戏作品离线宕机,玩家无法登陆,成为了 2016 年最严重的DDoS攻击事件之一……
2019年1月,暴雪游戏再次遭遇DDoS攻击,部分游戏因此受影响,出现了大片延迟的现象……2019年1月,金山软件西山居旗下的《剑网三》遭遇DDoS攻击,导致服务器出现了短时间的崩溃……
2019年5月,海外黑客组织ACCN小组将箭头瞄准了国内出海的游戏公司,攻击流量高达70G以上,时长多在1小时以上,猛烈的攻击令多家游戏公司业务受损……
可以看到,DDoS攻击暗箭难防,一旦成为DDoS的攻击目标,轻则造成口碑下降、用户流失,重则会对企业造成灭顶之灾。只有做过运维或被 DDoS 攻击过的人才能明白 DDoS 的可怕之处,用闻“D”色变来形容毫不夸张。