Актуально Пишем миниатюрный HTTP-flooder на Python 3

Тема в разделе "Пентестинг", создана пользователем ims0rry, 28 дек 2017.

  1. ims0rry

    ims0rry

    Сообщения:
    122
    Баллы:
    18
    Скрытый контент.
    А прежде чем приступить к прочтению - загляни в мой бложик, там я публикую свои авторские статьи по программированию, вирусологии и прочим интересным вещам https://t.me/ims0rryblog
    Нажмите, чтобы раскрыть...​

    Оригинал статьи -
    Скрытый контент.
    http://telegra.ph/Pishem-miniatyurnyj-HTTP-flooder-na-Python-3-12-28
    Нажмите, чтобы раскрыть...​


    Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
    Вступление
    Для начала, хотелось бы отметить, как 80% типов, выучивших питон пишут HTTP-флуд:
    https://image.prntscr.com/image/rgTFLekgTYCCvV9u41BG2g.png
    Так делать не стоит, потому что, сами видите (с одного потока):
    https://image.prntscr.com/image/40G7ySqCR9GPd6bdmO3htA.png
    Этот метод сжирает очень много времени и не особо эффективен. Разве что, в плане удобства.

    Мы же обратимся в сторону сокетов. На их основе можно написать флудер и под
    TCP, и под UDP протоколы, причем, весьма неплохой. Разумеется, все в этой статье рассматривать я не буду, найти код отправки данных по udp/tcp через сокеты в питоне можно одним запросом в гугл.


    Шаг 1
    Изменяем наш цикл (через скрин выше) на реализацию с сокетом:
    https://image.prntscr.com/image/mSH81C-dRBevSWbev5ji1w.png
    И получаем очень неплохой результат (с одного потока):
    https://image.prntscr.com/image/qtIyEyc2SrOruFp60Pxt5A.png


    Шаг 2
    Набросав каркас самой атаки, можно перейти к юзабилити нашего скрипта. Параметры будем передавать через командную строку: ссылку, порт, потоки, длительность (в минутах).
    https://image.prntscr.com/image/riAdKIwfQTipULqGStbuTw.png
    Разбиваем строку ссылки таким образом, чтоб в хост попал домен, а в url - путь до файла и/или параметры.


    Шаг 3
    Далее переносим функционал отправки запроса в цикле в отдельный класс-поток:
    https://image.prntscr.com/image/l7Pla3MXTH6KOZQq12TR8A.png
    И меняем основной цикл на цикл запусков потоков:
    https://image.prntscr.com/image/1XQTajUiQSylDUgFr-jO3A.png
    После запуска всех потоков спим указанное время (после окончания слипа программа завершится и все потоки вместе с ней).


    Итог
    Тестируем полученный результат на 10(!) потоках:
    https://image.prntscr.com/image/UDYIwGyFSUupZNkTA-EKBg.png
    На 100 потоках результат должен получиться примерно такой же, как и на моей Курияме.

    К слову, с более стабильным интернетом результат будет гораздо лучше. Также, на производительность влияет процессор.


    Тесты проводились на i7-6500U 2.5GHz, 4 cores, интернет 12 mb/s


    Ссылки
    Исходник - https://github.com/ims0rry/HTTP-flooder-python

Поделиться этой страницей

Top