前段时间我的网站不知被哪位大佬 DDoS 攻击了一波,吓得我直接关机保平安,让本就用爱发电的小破站雪上加霜,我也没想明白一个每日 1 IP 的技术分享博客能得到谁的厚爱,估计是被路过的大佬碰巧用来练手了…

借此机会,花了几天事件查阅和整理了大量资料,也来聊聊 DDoS 攻击的那些事,简单介绍一下 DDoS 攻击的原理以及类别,汇总一下历史上著名的 DDoS 攻击事件。
DDoS 攻击原理
在说 DDoS 攻击之前,先来认识一下拒绝服务攻击(denial-of-service attack,简称 DoS 攻击),也称为洪水攻击,是一种网络攻击手法,其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。
而分布式拒绝服务(distributed denial-of-service attack,简称 DDoS 攻击)就是利用多台受损计算机系统(感染了恶意软件而被攻陷的计算机设备,一般称为机器人或者“僵尸”)作为攻击流量的来源进行 DoS 攻击,如果数量足够大(例如僵尸网络),攻击者通过向每个机器人发送远程指令来发动攻击,就可以通过大规模互联网流量淹没目标服务器或其周边基础设施,这可能导致服务器或网络不堪重负,从而对正常用户流量也拒绝服务。
DDoS 攻击者一般针对重要服务和知名网站进行攻击,如银行、信用卡支付网关、甚至根域名服务器等,严重威胁着互联网的安全。
但随着近年来互联网设备的越来越多,在过去僵尸网络只是由 PC 电脑组成,而如今却加入了许多新成员:网络摄像头、路由器,甚至冰箱、咖啡机这些 IoT 设备都能成为攻击的对象。并且大部分人没有足够的网络安全意识,门槛和成本越来越低。由于是通过入侵其它互联网设备来进行攻击,因此隐蔽性很高,成本也较低,一直是网络攻击者最青睐的攻击方式,如今已经变成了互联网攻击的常态化武器,一言不合就可以给你来一发,不少个人站长都无聊的人随手攻击过,而与之相对的 DDoS 防御成本却很高,导致互联网环境越来越差。

DDoS 攻击类别
我们不妨先认识一下开放系统互连 (OSI) 模型,一种不同的计算机系统相互通信的标准。

OSI 模型的每一层负责处理特定作业并与其上下层进行通信,虽然现代互联网并未严格采用 OSI 模型通信,但 OSI 模型对于解决网络问题仍然很有帮助。DDoS 攻击的目标是特定的网络连接层,主要在 L3-L7 之间,提供数据存储、操作和通信服务,其中:
- L3 – 网络层,提供路由和寻址的功能,促进两个不同网络之间的数据传输,常见协议:IP/ICMP
- L4 – 传输层,负责两个设备间的端到端通信,还负责进行流量控制和错误控制,常见协议:TCP/UDP
- L5 – 会话层,负责建立、管理和断开计算机之间的对话,还负责同步数据传输与检查点,常见协议:RPC/SDP
- L6 – 表示层,负责建立上下文,准备数据,以便应用程序层进行使用,常见协议:SSL/TLS
- L7 - 应用层,直接接触用户数据,用户和应用程序直接交互,与两者进行通信,常见协议:HTTP/SSH/SMTP
DDoS 攻击根据 OSI 模型可以分为基础设施层攻击和应用层攻击两种。
基础设施层攻击
即 L3/L4 攻击,其中:
L3 攻击,主要利用 IP/ICMP 协议,通过制造大量的无用数据包,对目标服务器或者主机发动攻击,使得目标对外拒绝服,例如 Smurf 攻击、ICMP 路由欺骗攻击、IP 分片攻击等。
L4 攻击,主要利用 TCP/UDP 协议,其中通过 TCP 攻击的主要是三次握手过程:

常见的 SYN 洪水攻击是通过向目标发送大量带有伪造源 IP 地址的初始连接请求 SYN 数据包,使目标主机无法与其完成 3 次握手,从而占满系统的协议栈队列,导致资源得不到释放。每次握手都可能成为攻击的对象,如 SYN Flood 攻击、SYN-ACK Flood 攻击和 ACK Flood 攻击。
而 UDP 攻击是目标服务器发起大量的 UDP 数据包,这些数据包通常比较大且速度很快,消耗大量的网络带宽资源从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。UDP 攻击的方式主要为 UDP Flood 攻击、UDP 分片攻击等。
应用层攻击
即 L7 攻击,主要是通过短时间内的大量请求耗尽目标的 CPU 和内存资源,如发送大量的 HTTP 请求,频繁进行搜索功能或者调用 API 等。L7 的攻击创建成本较低,虽然相比前面的更容易识别,但却更难以缓解。应用层攻击的种类主要有 HTTP Flood、HTTP 慢速攻击、HTTPS Flood、SSL DDoS 攻击、SIP Flood 等。
我们在网上经常会看到类似 DDCC 攻击这样的术语,那么 DD 和 CC 是什么,区别又是什么呢?
DD 是 DDoS 的简称,这里的 DD 一般指的是基础设施层攻击,而 CC(Challenge Collapsar Attack)的中文意思是挑战黑洞攻击,CC 攻击本身属于 DDoS 攻击的一种,主要是对 Web 应用层的拒绝服务攻击,也就是网页攻击,攻击者通过代理服务器生成指向受害主机的合法请求,来实现 DDOS 和伪装,会使被攻击网站的带宽资源严重被消耗,CPU、内存利用率飙升,直至服务器瘫痪。比如大家查四六级成绩的时候,成千上万的人同时打开查询页面,网页就很难打开,甚至报 502 错误,这也相当于 CC 攻击,只不过不是恶意的。
除了上面的传统 DDoS 攻击之外,各种新型 DDoS 技术不断产生,可利用的物联网设备也越来越多,而且这些攻击往往会以多种形式组合出现,防御的成本和难度更大。
历史上著名的 DDoS 攻击
史上第一次 DDoS 攻击
DDoS 攻击由来已久,虽然在网上搜索第一次 DDoS 攻击,大概率都会说是 1996 年发生在美国的一家互联网服务提供商 Panix 身上,但经过查阅当时的新闻,其实并没有体现分布式攻击的特点,可能是从单一主机发起的,准确的说应该是第一次 DoS 攻击。

Panix 成立于 1989 年,是历史第三悠久的互联网服务提供商(ISP)。1996 年 9 月 6 日,Panix 公司的邮件、新闻、Web 和域名服务器同时遭受到了攻击,造成至少 6000 名用户无法接收和发送邮件。攻击的方式很简单,主要是针对 SMTP(简单邮件传输协议)端口,攻击者不断向服务器发送连接请求,面对每秒发来的 150 个 SYN 数据包,服务器难以负载,从而无法回应正常的用户,很快系统被流量的洪水淹没了。此外,攻击者还采用了随即伪造源 IP 的方式,使得来源难以追踪。后来,这两种攻击方式都有了一个闻名于世的名字,SYN FLOOD 攻击和 IP 欺诈攻击。
而历史上真正意义上的第一次 DDoS 攻击应该是发生在 1999 年 8 月 17 日,美国明尼苏达大学的多台服务器遭受到了来自至少 227 多个远程主机的拒绝服务攻击,其中有一些并不在美国境内,攻击数据包都是 UDP,没有隐藏源 IP,调查人员尝试追踪这些 IP 地址,联系这些主机的拥有者以停止攻击,但并未奏效,因为攻击者在不断的新增攻击主机。有人在一台服务器上发现了 Trinoo 程序的源代码,这也是已知最早的 DDoS 攻击工具,还同时发现了一个包含 888 个 IP 地址的文件,这可能是当时 Tirnoo 网络的规模,在另一个名为 “216” 的目录中,还发现了包含 10549 个 IP 地址的文件,这可能是存在漏洞的潜在控制目标。
史上最大的 DDoS 攻击
史上最大的 DDoS 攻击可能不止一个,因为 DDoS 攻击的类型很多,造成的影响也无法统一比较,根据攻击方法的不同,DDoS 攻击的强度可由三种方式衡量:BPS(每秒传送位数)、PPS(每秒传送的数据包数)或 RPS(每秒的请求数量)。BPS 旨在耗尽互联网管道,PPS 针对的是数据中心/云中的网络设备,而 RPS 攻击针对的是运行 Web 应用的边缘服务器。因此从不同的角度看,他们都是最大的攻击。
2021 年 Cloudfare 遭受最大的 RPS(每秒的请求数量)攻击
Cloudfare 在 2021 年 8 月 19 日报告了一次 DDoS 攻击,其自主边缘 DDoS 保护系统自动检测并缓解迄今为止遇到的最大 DDoS 攻击,峰值高达每秒 1720 万次请求。Cloudflare 在 2021 年第二季度平均每秒处理 2500 万个 HTTP 请求,而这次攻击达到了每秒 1720 万次请求的峰值,该攻击几乎是之前记录的任何 DDoS 攻击的三倍。
2020 年 AWS 遭受最大的 BPS(每秒传送位数)攻击
亚马逊在 AWS Shield Threat Landscape (PDF) 中披露,AWS 在 2020 年 2 月缓解了一次大规模 DDoS 攻击,这次攻击持续了三天,峰值流量速率达到 2.3 Tb/s,但是 AWS 没有透露这次攻击的目标是哪一个客户。
攻击者使用了遭到劫持的无连接轻量目录访问协议(CLDAP)Web 服务器。CLDAP 是一种用户目录协议。它是这种协议的较老版本 LDAP 的替代品。自 2016 年底以来,该协议一直被滥用于 DDoS 攻击,CLDAP 服务器能将 DDoS 流量放大 56 到 70 倍,使其成为 DDoS 的常用工具。
2020 年 Akamai 遭受最大的 PPS(每秒传送的数据包数)攻击
Akamai 报告称于 2020 年 6 月 21 日星期日欧洲某大型银行遭大规模 DDoS 攻击,尽管这次攻击并非带宽密集型攻击且攻击速度仅为 418 Gb/s,但其网络遭遇每秒 8.09 亿个数据包的洪水攻击,就针对 PPS 的攻击而言,这是一项新的行业记录。
其它著名的 DDoS 攻击
2018 年 GitHub 遭受的 DDoS 攻击
有记录可验证的最大型 DDoS 之一目标是 GitHub——数百万名开发人员使用的代码管理服务。这次攻击达到 1.3 Tbps,数据包发送速率达到 1.269 亿个/秒。
GitHub 遭受的攻击是一次 memcached DDoS 攻击,因此没有涉及僵尸网络。攻击者利用了 memcached 这种流行数据库缓存系统的放大效应。通过向 memcached 服务器发送大量虚假请求,攻击者成功将其攻击放大约 5 万倍。
幸运的是,GitHub 采用了 DDoS 保护服务,在攻击发起后 10 分钟内自动得到警报。警报触发了缓解过程,GitHub 得以迅速阻止了攻击。这次大规模 DDoS 攻击仅持续了大约 20 分钟就结束了。
2017 年 Google 遭受的 DDoS 攻击
Google Cloud 于 2020 年 10 月报告了一次攻击。2017 年 9 月,Google 服务遭受了一次大规模的 DDoS 攻击,规模达到 2.54 Tbps。攻击者向 18 万个暴露的 CLDAP、DNS 和 SNMP 服务器发送虚假请求,后者将响应发送给 Google。这次攻击并非一个孤立的事件,攻击者在之前六个月内已对 Google 的基础设施发动了多次 DDoS 攻击。
2016 年 Dyn 遭受的 DDoS 攻击
另一次大型 DDoS 攻击发生于 2016 年 10 月,主要域名服务 (DNS) 提供商 Dyn 遭受每秒 1 TB 的流量洪水攻击,有证据表明,DDoS 攻击实际上可能达到了每秒 1.5 TB 的速度。流量海啸使 Dyn 的服务下线,对很多主要网站造成了破坏,导致包括 GitHub、HBO、Twitter、Reddit、PayPal、Netflix 和 Airbnb 在内的许多知名网站无法访问。
这次攻击使用了一个名为 Mirai 的恶意软件。Mirai 利用受损的物联网(IoT)设备(如相机、智能电视、收音机、打印机,甚至婴儿监视器)创建僵尸网络。为形成攻击流量,这些受损设备均经过编程,全部向单一受害者发送请求。
幸运的是,Dyn 在一日内击退了攻击,但一直未能确定攻击动机。黑客组织声称对此次攻击事件负责,理由是维基解密创始人 Julian Assange 在厄瓜多尔被拒绝使用互联网,但没有证据能够支持这一说法。
2013 年 Spamhaus 遭受的 DDoS 攻击
2013 年针对针对非营利性组织 Spamhaus 的攻击也是一场规模空前的攻击,Spamhaus 是一家帮助打击垃圾邮件和垃圾邮件相关活动的组织。Spamhous 负责过滤多达 80% 的垃圾邮件,因而频频遭到希望垃圾邮件顺利到达目标收件人的恶意分子攻击。
尽管作为反垃圾邮件组织的 Spamhaus 经常受到攻击并且已经使用 DDoS 防御服务,但这次攻击以 300 Gbps 的速度向 Spamhous 发送流量,足以破坏其网站和并导致部分邮件服务离线。攻击开始后,Spamhous 立即向 Cloudflare 寻求帮助并达成协议。Cloudflare DDoS 保护缓解了攻击。攻击者的回应是攻击特定互联网数据交换中心和带宽提供商,试图弄垮 Cloudflare。这次攻击没有达到目的,但确实给伦敦互联网交换中心(LINX)造成了重大问题。攻击的罪魁祸首原来是英国一名少年黑客,受雇发动此次 DDoS 攻击。
网络攻击可追溯到一家名为 Cyberbunker 的荷兰公司的成员,该公司显然是在被 Spamhaus 列入垃圾邮件黑名单后做出的报复行为,雇佣了英国的一名少年黑客发动了此次 DDoS 攻击。
写到这里,按照惯例该做个总结,但想来想去也没啥好写的,毕竟被打这件事,确实没啥规律可循,就和软件病毒一样,政治行为、同行竞争、恶意勒索甚至不小心压到 F5
,都可能导致被打。至于 DDoS 的防御,这里就不再过多叙述了,除了在应用层做点策略限制之外,有钱的加钱上高防 IP 或者服务器,没钱的比如我上 Cloudflare CDN 就行了,或者直接躺平,被打就一键关机,删库跑路🐶
参考文章:
- WikiPedia - Denial-of-service attack
- The New York Times - New York’s Panix Service Is Crippled by Hacker Attack
- Cloudflare - 轰动一时的 DDoS 攻击 | 有史以来规模最大的 DDoS 攻击
- A10 Networks - Five Most Famous DDoS Attacks and Then Some
如果你认为这篇文章还不错,可以考虑为我充电 ⚡️