基本概念和原理
定义
通过耗尽系统资源来组织或削弱对网络、系统或应用程序的正常使用
攻击目标
服务的可用性
具体来说,DoS 攻击可以针对:
- 网络基础设施:例如,路由器、交换机、防火墙等网络设备,攻击者通过大量数据拥塞这些设备,导致网络中断。
- 服务器:例如,Web 服务器、邮件服务器、DNS 服务器等,攻击者通过消耗服务器的计算或连接资源,使服务器无法响应正常请求。
- 应用程序:例如,特定的在线应用程序,攻击者利用程序的漏洞或特性,发送大量请求,导致程序崩溃或响应缓慢。
常见的 DoS 攻击类型
泛洪攻击
原理
通过占据系统的网络连接容量来实现攻击,即以量取胜
ICMP 泛洪
利用 ICMP 协议 的大量 ICMP 回送请求淹没目标主机。由于 ping 在网络管理中被广泛使用,很多防火墙和安全设备默认允许 ICMP 流量通过,因此 ICMP 泛洪攻击相对容易实施。
UDP 泛洪
根据 UDP协议 ,攻击者可以伪造大量的 UDP 数据包,发送到目标系统的某个开放的 UDP 端口,目标系统需要处理这些数据包,从而消耗 CPU 资源和网络带宽。因为 UDP 协议是无连接的,攻击者可以轻易的伪造源 IP 地址,使得追踪攻击源变得困难。
TCP SYN 泛洪
利用 TCP协议 建立三次握手过程中的缺陷。
三次握手建立连接
指向原始笔记的链接
- 客户端发送 SYN 请求建立连接,指定初始序号。
- 服务器回复 SYN 和 ACK 同意连接,指定服务端初始序号。
- 客户端回复 ACK 表示收到,可能包含数据。
攻击者发送大量的 SYN 包到服务器,但是不完成后续的 ACK 包,导致服务器为这些半连接分配大量的资源(维护连接队列),这就是 SYN 欺骗
分布式拒绝服务攻击 DDoS
特点
利用大量的“僵尸机”形成僵尸网络来发起攻击。
- 攻击者
- 控制傀儡机
- 攻击傀儡机
- 受害者
基于应用的带宽攻击
这类攻击是针对特定的应用程序服务,通过发送大量的合法请求来消耗服务器的资源。简单来说,就是 “用合法的手段,达到非法的目的” 。由于这些请求往往是符合协议规范的,因此很难被传统的入侵检测系统(IDS)识别。
SIP 泛洪
SIP 协议
Session Initiation Protocol 是一种建立、修改和终止多媒体会话的应用层信令控制协议
指向原始笔记的链接
攻击原理是向 SIP 服务器发送大量的 INVITE 请求,试图建立大量的会话
基于 HTTP 的攻击
发送大量的 HTTP 请求,试图占用服务器的 Web 服务资源
Slowloris 攻击原理
Slowloris 是一种低带宽的拒绝服务攻击,它通过发送不完整的 HTTP 请求,并保持连接长时间存活,从而缓慢地消耗 Web 服务器的连接资源。
- 攻击者首先向目标发送一个合法的 HTTP 请求,但是故意不发送完整的请求头或者请求体
- 服务器会保持这个连接打开,等待剩余的请求数据
- 攻击者会周期性地发送一些后续的请求头字段,以保持连接存活,但始终不发送完整
反射攻击与放大攻击
反射攻击是一种间接的 DoS 攻击,攻击者不直接攻击目标,而是利用中间媒介(即“反射器”)来“反射”攻击流量。攻击者伪造数据包的源 IP 地址为目标的 IP 地址,然后将这些数据包发送给大量的反射器。反射器收到这些伪造的数据包后,会向伪造的源 IP 地址(即目标系统)发送响应。通过这种方式,攻击者可以放大攻击流量,并隐藏自己的真实 IP 地址。
放大攻击是反射攻击的一种特殊形式,它利用特定的网络协议或服务的特性,将攻击者的请求放大,从而产生更大的攻击流量。
DNS 放大攻击
利用 DNS协议 特性来放大攻击流量
DNS 查询
DNS 查找通常会经过下面四步:
- 询问 Resolver
- 询问根服务器
- 询问顶级域名服务器
- 询问次级域名服务器
以用户访问
www.example.com
为例:
- 客户端向递归服务器发起请求: “
www.example.com
的 IP 是什么?”- 递归服务器查询根服务器: 根服务器返回
.com
的 TLD 服务器地址。- 递归服务器查询 TLD 服务器: TLD 服务器返回
example.com
的权威服务器地址。- 递归服务器查询权威服务器: 权威服务器返回
www.example.com
的 IP 地址。- 递归服务器缓存结果,并将 IP 返回客户端。
或者使用迭代查询的方法:
指向原始笔记的链接
某些 DNS 服务器支持递归查询,即如果它们不知道某个域名的 IP 地址,它们会代表客户端向其他 DNS 服务器查询。DNS 放大攻击就是利用这些支持递归查询的 DNS 服务器作为反射器。
- 攻击者伪造源 IP 地址为目标的 IP 地址
- 向大量的 DNS 服务器发送 DNS 查询请求,查询那些响应体积较大的域名记录(ANY 查询)
- DNS 服务器收到查询请求后,会向伪造的源 IP 地址发送大量的 DNS 响应
- 目标系统收到大量的 DNS 响应,攻击成功
由于攻击流量来自合法的 DNS 服务器,因此很难被过滤
拒绝服务攻击的防范与响应
攻击防范
DoS 攻击不能完全被预防
但还是有一些有效的措施和防御手段的
- 阻止虚假源地址:攻击者通常是会伪造源 IP 地址来隐藏自己并放大攻击流量。所以可以在网络入口处(如 ISP 的路由器)实施源地址验证,过滤掉那些源地址明显不合法的流量
- 使用修改过的 TCP 连接处理代码:针对 TCP SYN 泛洪攻击,可以修改服务器的 TCP 连接方式,如使用 SYN Cookie,在不完全建立连接的情况下处理客户端请求
- 阻止 IP 定向广播:IP 定向广播可以将一个数据包同时发送给一个网络中的所有主机,攻击者可以利用这一点放大攻击流量,因此,应该禁用 IP 定向广播
- 使用验证码
攻击响应
- 识别攻击类型
- 这是响应的第一步。不同的 DoS 攻击类型有不同的特点,需要通过分析网络流量(例如,抓包分析)来确定攻击类型,才能采取相应的应对措施 。
- 设计过滤器阻断攻击流量
- 根据攻击类型,设置网络设备(例如,路由器、防火墙)的过滤器,阻止攻击流量进入网络 。
- 过滤器的设置要尽可能精确,避免误伤正常流量。