NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

“破坏之王”DDoS 的前世今生(上)

  • 2019-11-08
  • 本文字数:4109 字

    阅读完需:约 13 分钟

“破坏之王”DDoS的前世今生(上)

今天,我们不聊产品,只聊技术——从 DDoS 的技术源头出发,来了解 DDoS 的前世今生。兵家有言:知己知彼,百战不殆。看完这篇 DDoS 技术科普干货,相信你会有更多收获。

震惊的程序员

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 本身抗压能力不行,而且对方请求量过大的话,也会影响到 DNS 本身的服务,目前此类攻击的规模在数百 Gbps 级别。


NTP 反射放大攻击:


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”色变来形容毫不夸张。


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/20GaKP5w-29f45F-sajzEA


2019-11-08 15:561239

评论

发布
暂无评论
发现更多内容

有趣的技术知识1 | 为什么这些网站电脑打不开,手机却可以访问?(附智能追剧解决方案)

Java_若依框架教程

有趣的技术知识

【遇见Doris】Apache Doris Parquet文件读取的设计与实现

ApacheDoris

【遇见Doris】

[C++总结记录]struct与class注意点

图解AI

c++

[C++总结记录]构造函数与析构函数调用时机

图解AI

c++

RUOYI 框架教程 8 | 若依给页面加水印这么简单,你见过么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 11 | 若依主页面调用类目表,写入主表相关信息,居然这么简单!(第九篇~)

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

【遇见Doris】Spark Doris Sink的设计和实现

ApacheDoris

【遇见Doris】

RUOYI 框架教程 3 | 操作小技巧,快看看你掌握了多少!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

【遇见Doris】Apache Doris 在百度商业大规模微服务全链路监控的实践

ApacheDoris

【遇见Doris】

【遇见Doris】Apache Doris在京东双十一大促中的实践

ApacheDoris

【遇见Doirs】

RUOYI 框架教程 6 |若依日期操作居然这么多写法,你敢信么!

Java_若依框架教程

Java Ruoyi 教程 框架 若依

[C++总结记录]构造函数与析构函数注意点

图解AI

[C++总结记录]构造函数初始化注意点

图解AI

c++

[C++总结记录]对象内存占用情况及this指针注意点

图解AI

c++

【实践分享】ProxySQL实现Doris FE高可用

ApacheDoris

RUOYI 框架教程 10 |若依Excell数据导出小数处理,你会么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 4 | 若依操作小技巧,快看看你学"废"了吗!(第二篇~)

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 9|若依数据权限这样控制到个人,你是这么用的么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

有趣的技术知识 2 | 来了,阿里云网盘公测!

Java_若依框架教程

有趣的技术知识

RUOYI 框架教程 2 |小白都能学会的 3 分钟搭建框架教程

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

【遇见Doris】 Apache Doris 基于 Bitmap的精确去重和用户行为分析

ApacheDoris

【遇见Doris】

【Doris全面解析】存储层设计介绍2——写入流程、删除流程分析

ApacheDoris

RUOYI 框架教程 5 |若依Excell导入这么做,0经验小白都能写!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 7 |若依js设置高度及自适应居然这么简单,你敢信么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

【遇见Doris】Apache Doris在一点资讯自媒体平台的应用

ApacheDoris

【遇见Doris】

[C++总结记录]函数相关细节注意点

图解AI

c++

【遇见Doris】Doris基于Hive表的全局字典设计与实现

ApacheDoris

【遇见Doris】

RUOYI框架教程1 |小白都能学会的3分钟搭建框架教程

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

【遇见Doris】寒冷冬日的一次温暖相聚 · Doris开发者沙龙

ApacheDoris

【遇见Doris】

【Doris全面解析】存储层设计介绍1——存储结构设计解析

ApacheDoris

【遇见Doris】Doris核心功能介绍——数据模型和物化视图

ApacheDoris

“破坏之王”DDoS的前世今生(上)_安全_U文案_InfoQ精选文章