07.DDos攻击与防护

1. 互联网通信过程

1.1. TCP/IP 四层模型结构

Pasted image 20250506183221

1.1.1. 应用层(Application Layer)

  • 功能:为应用程序提供网络服务接口,处理特定应用的通信细节。
  • 常见协议:HTTP、FTP、SMTP、DNS、Telnet、SSH 等。

1.1.2. 传输层(Transport Layer)

  • 功能:实现端到端的数据传输,负责数据的分段、传输、重组和差错校验。
  • 常见协议:TCP(传输控制协议)、UDP(用户数据报协议)。

1.1.3. 网络层(Internet Layer)

  • 功能:负责数据包的选路和转发,实现不同主机之间的通信。
  • 常见协议:IP(网际协议)、ICMP、ARP、RARP 等。

1.1.4. 网络接口层/链路层(Network Interface/Link Layer)

  • 功能:负责数据在本地网络中的传输,处理物理地址、帧的封装与解封装。
  • 常见协议:以太网、Wi-Fi、PPP、帧中继等。

1.2. TCP三次握手 4次挥手

客户端                                服务器
   | -----------SYN------------> |
   | <--------SYN+ACK----------- |
   | -----------ACK------------> |
客户端                                服务器
   | -----------FIN------------> |
   | <----------ACK------------- |
   | <-----------FIN------------ |
   | -----------ACK------------> |

2. 类别划分

DOS/DDOS类别:

  • 基于流量的攻击:攻击的目标是通过每秒发送的ICMP或UDP或TCP流量来淹没目标网络的带宽
  • 基于协议的攻击:攻击者通过每秒发送TCP SYN Flood、Ping of death或Fragmented packets攻击等数据包来摧毁目标并使其对其他合法请求无响应,从而集中实际的目标服务器资源
  • 基于应用层攻击:攻击者不会试图破坏整个服务器,而是通过每秒发送请求来集中攻击正在运行的应用程序,例如:攻击Wordpress、Joomla Web服务器,对Apache发出无限请求使其对其他合法请求无响应## 2. DDos攻击手段

3. DDos攻击方式

3.1. 实验环境

  • 受害机: 192.168.8.9(win11 22h2)
  • 攻击机: 192.168.8.10(kali)

3.2. 反射攻击

ddos的反射攻击就是伪造源IP发送给服务器,然后服务器返回数据包给伪造受害者IP

典型反射攻击举例

  • DNS反射攻击:攻击者伪造源IP为受害者,向开放DNS服务器发送查询请求,DNS服务器把大包的响应发给受害者。
  • NTP反射攻击:利用NTP的monlist命令,放大流量。
  • Memcached反射攻击:利用Memcached协议,放大倍数极高。

反射攻击的关键点

  • 源IP伪造:攻击者不直接攻击受害者,而是让第三方服务器“帮忙”攻击。
  • 放大效应:有些协议(如DNS、NTP、Memcached)可以让小请求产生大响应,进一步放大攻击流量(这叫“放大攻击”)。
  • 难以追踪:流量来自全球各地的正常服务器,受害者难以追查真实攻击者。

3.3. 放大攻击

UDP反射放大攻击原理 (请求包远小于响应包 四两拨千斤)
很多协议在响应包处理时,要远大于请求包,一个字节的请求十个字的响应,十个字节的请求一百个字的响应,这就是UDP反射放大攻击最根本的原理。以下将Memcached服务作为实例进一步介绍

Memcached是一款开源的高性能分布式内存对象缓存服务,通过缓存来降低对数据库的访问请求,加快应用程序的响应效率,可以应用于各类缓存需求中。通过查询缓存数据库,直接返回访问请求,降低对数据库的访问次数。

防御(IP 端口限速)
目标IP+源端口限速:可以用于控制反射性攻击,且可以预防未知的反射协议;
源IP限速:单个请求源IP的整体控制;
目标IP限速:单个攻击目标IP的整体可用性控制;
源IP+源端口限速:可以降低部分大客户源IP在访问请求时的副作用影响;
目标IP+目标端口限速:适用于目标IP端口开发范围较大时,可提高业务端口可用率,降低目标整体影响;

Pasted image 20250506235232

3.4. ICMP 泛洪攻击

ICMP(Internet Control Message Protocol)泛洪攻击是一种利用ICMP协议的特性对目标系统进行攻击的手法ICMP是用于在IP网络中传输控制消息的协议,常用于网络诊断和错误报告,在ICMP泛洪攻击中攻击者发送大量的伪造的ICMP请求消息(通常是ICMP回显请求,也称为Ping请求)到目标系统,这些请求消息被发送到目标系统的网络接口,导致目标系统不堪重负并可能导致其资源耗尽

早期互联网用的比较多,现在用的少,且危害不如从前

攻击过程

#命令示例
hping3 --rand-source --icmp -d 56 --flood 192.168.8.9

#参数说明
黑客机IP(192.168.8.10伪造任意IP地址向服务器IP(192.168.8.9发送如洪水般的ping包,数据包大小是56
--rand-source  随机化源IP地址
--flood 以最快速度持续不断地发送数据包(洪水模式)不等待响应,最大化流量
--icmp 指定发送ICMP协议包(即“ping”包)
-d 指定每个ICMP包的数据部分大小为56字节(不包括ICMP头部)越大带宽越大

Pasted image 20250506213615
Pasted image 20250506213914

3.5. UDP 泛洪攻击

基本介绍
UDP(User Datagram Protocol)泛洪攻击是一种网络攻击方法,利用UDP协议的特性对目标系统进行攻击,UDP是一种无连接的传输层协议,常用于快速传输数据的应用,例如:DNS和实时流媒体,在UDP泛洪攻击中,攻击者发送大量的伪造的UDP数据包到目标系统的特定端口上,这些数据包被发送到目标系统的网络接口导致目标系统不堪重负并可能导致其资源耗尽

hping3 --rand-source --udp -d 56 --flood 192.168.8.9

Pasted image 20250506214240

3.6. TCP泛洪

发送大量TCP连接,占满服务器的连接表,

  • 但由于3次握手,导致无法此方法无法伪造IP隐藏自己(第一次握手伪造了IP,第二次请求就无法到达)

3.7. SMURF攻击

基本介绍

SMURF攻击是一种早期的网络攻击方法利用ICMP(Internet Control Message Protocol)协议中的回显请求(Echo Request)和广播地址的特性对目标网络发起攻击,这种攻击方式的名称源自最早用于执行此类攻击的程序名"smurf",在SMURF攻击中攻击者发送大量的ICMP Echo Request数据包将源IP地址伪装成受害者的IP地址并将目标IP地址设置为广播地址,由于广播地址会将数据包发送到网络中的所有主机,每个收到数据包的主机都会生成一个ICMP Echo Reply响应并将响应发送给被伪装的受害者IP地址,这样一来攻击者发送的单个数据包就会导致网络中的大量响应流量集中在受害者上,造成带宽消耗、网络拥塞和服务中断

攻击演示
在攻击主机中打开scapy工具,随后192.168.8.10(黑客机)模仿 192.168.8.9(受害机)发送给192.168.8.255(受害者网络的所有主机)报文

攻击者
   |
   | 伪造源IP为受害者,向广播地址发送ICMP Echo请求
   v
[广播地址] --------------> [局域网内所有主机]
                                 |
                                 | 所有主机都向受害者IP回复ICMP Echo响应
                                 v
                            [受害者主机]
hping3 --icmp -a 192.168.8.9 --flood 192.168.8.255
#参数说明:
--icmp:发送ICMP Echo请求
-a 192.168.8.9:伪造源IP为受害者
--flood:以最快速度发送
192.168.8.255:目标广播地址

Pasted image 20250506215454

Pasted image 20250506215556

防御方法

  • 路由器/交换机禁止对广播地址的ICMP响应。
  • 主机配置不响应ICMP广播请求。
  • 网络边界设备过滤伪造源IP的包。

3.8. SYN泛洪

利用TCP握手的重传机制搭配伪造IP

3.9. RST泛洪 RST复位攻击

发送RST数据进行“盲打”
基本介绍
TCP RST(Reset)复位攻击是一种网络攻击方法,利用TCP协议中的RST标志位发送伪造的TCP RST数据包,终止或中断现有的TCP连接,这种攻击利用了TCP协议中的重置机制,欺骗目标系统以终止其与其他主机之间的连接,在TCP RST复位攻击中攻击者发送伪造的TCP RST数据包到目标系统,这些数据包带有合法的源IP地址和目标IP地址以及源端口和目标端口,目标系统接收到伪造的RST数据包后会误认为与该源IP地址和目标IP地址之间的连接已经终止,从而中断正在进行的TCP会话

攻击演示
情形1:黑客机伪装客户机发过去RST包给服务器(发包给服务器)
客户机远程连接目标服务器的SSH端口并使用Wireshark进行抓包

hping3 -R -a 192.168.8.9 -p 22 192.168.8.18 --flood
-R:发送TCP RST包
-p:指定目标端口
--flood:以最快速度发送(泛洪) 
#伪造IP 192.168.8.9对192.168.8.18的22端口进行RST泛洪攻击。

Pasted image 20250506221644
可以看到发送了大量的RST数据包,但这里我没有实现让ssh连接断开。

情形2:黑客机伪装客户机发过去SYN包给服务器
客户机远程连接目标服务器的SSH端口并使用Wireshark进行抓包

hping3 -R -a 192.168.8.9 -p 22 192.168.8.18 --flood
-S:发送SYN 包
-p:指定目标端口
--flood:以最快速度发送(泛洪) 

这里我还是没有实现让ssh连接断开
理论上:服务器认为客户机已经是正常连接又来建立新连接,于是服务器就会中断与客户机的连接
Pasted image 20250506222305
可以看到有伪造客户端向服务器发送的 SYN请求,以及服务器向客户端回应的 SYN,ACK

3.10. 消耗计算资源 http泛洪

如进行io查询, http基于TCP协议所以无法伪造IP(通常是使用代理池)

4. DDos的治理与缓解方法

防御DDoS(分布式拒绝服务)攻击时,可以采取以下措施:

  • 网络流量监控和分析:实时监控网络流量,及时发现异常流量模式,以便快速应对攻击
  • 流量过滤:使用防火墙、入侵检测系统(IDS)和入侵防御系统(IPS)等设备过滤恶意流量,阻止攻击流量进入网络
  • 负载均衡:使用负载均衡设备将流量分发到多个服务器上,以分散攻击压力,并确保服务的可用性
  • CDN服务:使用内容分发网络(CDN)将流量分发到全球各地的服务器上,减轻原始服务器的负载,提高整体的网络性能和可用性
  • 黑洞路由:将攻击流量引导到“黑洞”,即虚拟的丢弃点,使攻击流量不会对正常流量造成干扰
  • 流量清洗:将流量传送到专门的流量清洗中心,通过识别和过滤出攻击流量,将正常流量传递到目标服务器上
  • 增加带宽:提高网络带宽以容纳更多的流量,从而使得网络更加抗攻击
  • 配置合适的防护策略:根据网络的特点和攻击情况,采用合适的防护策略,例如基于签名的检测、行为分析等
  • 定期更新安全补丁:及时更新系统和应用程序的安全补丁,修补已知的漏洞,减少受到攻击的可能性
  • 应急响应计划:建立完善的应急响应计划,包括备份恢复、紧急通信等,以便在遭受DDoS攻击时能够迅速应对并降低损失

4.1. 治理伪造IP

4.2. CDN

缓解作用有限

4.3. 流量清洗设备

Pasted image 20250506184108
IP信用库
算法对流量进行模式识别是否真人