03.12.2008

Итак, что же такое Ботнет...
Вот так вот написано в Викпедии: Ботнет
А по простому говоря боты на то и боты, чтобы быть немного автономными и делать то, что им говорят.

А мы сделаем своего бота.
И нам не нужно чего-то там писать на Си или Асме, нет, ну его... - напишем на языке bat-файлов!

Итак представляемый бот обладает следующими преимуществами:
-----------------------------------------------------------------------------------------------
1. - Он является универсальным.
       С его помощью на компьютер можно загрузить любой файл(лишь бы подключение позволяло) и запустить.
       К примеру можно загрузить другую программу, другой командный файл (даже трояны, короче все, что               угодно).
2. - Бот является невидимым (не показывает своих консольных окон), несмотря на то, что это все-же                            командный файл.
3. - Бот не открывает постоянный порт на компьютере(хотя для этого можно загрузить нужный модуль).
4. - Бот "выходит в сеть" раз в 5 минут и не перегружает этим траффик.
5. - Задания для бота могу быть всего несколько килобайт,
что оправдывает его использования при слабых каналах.
6. - Если бот находится во внутренней сети и\или выходит в интернет через другой компьютер,
таким образом не имя своего айпи, то ему все равно можно отдать команду и он пришлет ответ.
7. - Комманду можно послать как одному боту так и всем,
так и всем кроме определенных, так и только определенным ботам.

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

Сам бот(или как я его назвал Joker, далее Джокером и буду звать) почти готовый.
Имя ему Joker.scr - это самораспаковывающийся архив под видом каринки.
Его мы и подготовим.

После запуска Joker.scr из него извлекаются два главных файла: Joker.bat и JokerLoader.js
Первый это и есть настоящий Джокер, а второй это его загрузчик(написан на jscript).

Нужен загрузчик, чтобы запускать переданные ему в коммандной строке файлы либо в видимом
либо в скрытом режиме. Синтаксис таков: jokerloader.js first second third
Где first может быть либо -runshow либо -runhide либо -autorun.
Первый случай означает запускать все, что передано в следующих параметрах в режиме   видимости
Второй случай означает запускать все, что передано в следующих параметрах в режиме НЕвидимости
Третий же означает, что нужно добавится в автозапуск, так как это первый запуск на данном компьютере.
Так же в этом случае последующие параметры игнорируются и роли не играют
(обычно их просто нет, если Вы не напишите).

Итак после запуска Joker.exe в директорий %userprofile%\Joker извлекаются jokerloader.js и joker.bat.
Затем запускается "jokerloader.js - autorun" который добавляет в автозапуск себя,
точнее в ключ HKCU\Software\Microsoft\Windows\CurentVersion\Run
После этого он запускает "joker.bat -autorun"
(разумеется в скрытом режиме, далее это тоже будет подразумеватся)
Joker.bat обнаружив параметр -autorun считает, что это его первый запуск и создает файл digit.dat
в который он записывает случайное число.
Далее это число будет являтся уникальным идентификатором этого бота!
После этого Джокер (будет подразумеватся Joker.bat) запускает свою копию через загрузчик,
а сам завершается.
Запущенный собой джокер смотрит, что он без параметра -autorun и соединяется с фтп сервером,
куда он отправляет файл %digit%.ans, где вместо %digit% стоит число - уникальный идентификатор бота
(далее под %digit% это всегда будет подразумеватся это число)
В файле содержится информация о времени, дате, имени компьютера, имени пользователя,
и подключениях (в том числе айпи адресса).
Далее бот скачивает задание, а именно файл mastertask.bat, затем он запускает задание и ждет 5 минут,
потом снова лезет на фтп сервер и так пока компьютер не выключится.
А когда включится, то опять будет лезть)))
А задание, которое является полностью автономным после запуска,
уже само забоится о задачах и отсылает отчет о выполнении.

Итак подготовка бота к впариванию)):

Нужно подготовить фтп аккаунт. Идем к примеру на http://www.drivehq.com/ftp/ (или любой другой хостинг, можно и бесплатный, но с поддержкой загрузки файлов по ftp) и регаемся на халяву.

Внимание: не всякий хостинг подходит! (К примеру phpnet.us НЕ подходит). Узнать какой подходит, а какой нет можно по "диагностическим" сообщениям во время отправки\получения файлов или пробным путем.

Нам нужны будут имя и пароль на фтп аккаунт.
Заходим в свой фтп аккаунт и создаем папочку htdocs (если ее нет) а в ней папки upload и download

Скачиваем бота
Извлекаем куда-то все это.
Отрываем блокнотом файл Joker.bat(правой - изменить) - правка - заменить:
ftppass на ваш пароль и ftpuser на ваше имя пользователя
А так же ftphost на имя вашего фтп (для http://phpnet.us это ftpphpnet.us)
Жмем на кнопочку "Заменить все"  - если все ОК сохраняемся.
При необходимости заменяем файл picture.jpg на свой сохранив имя.
Выделяем все наши файлы кроме файла pic.ico и создаем такой архив:
Самораспаковывающийся архив. Метод сжатия маскимальный.
Параметры sfx - загрузить значок: выбираем наш pic.ico
ОК, теперь жмем на нашем архиве точка ехе правой - открыть в винрар.
Жмем комментарий и вписываем такое:

Path=%userprofile%\Joker
SavePath
Setup="%userprofile%\Joker\JokerLoader.js" -autorun
Setup="%userprofile%\Joker\picture.jpg"
Silent=1
Overwrite=1

ВНИМАНИЕ: если Вы не положили в архив картинку, то строчку Setup="%userprofile%\Joker\picture.jpg" не нужно писать!

ОК, меняем рассширение с exe на scr (а можно оставить exe) и бот готов(точнее это же у нас мм... картинка ;-) ).

Значит с Джокером разобрались немного.

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

Подробно коммандый файл bot-master'а разбирать не буду, так как там довольно таки не мало написано
и лучьше я раскажу самые главный моменты,а тот, кто знает язык коммандых файлов,
тот разбереться (а кто не знает, вот ссылка на книжку)
К тому же мне можно персонально задать по этому вопросы в комментариях или на форуме HackZone

Скачиваем мастер
Извлекаем файлы в директорию, где наш бот-мастер будет рассполагатся.
Запускать нужно master.bat т.к. он главный. Можно даже ярлык сделать для удобства))
Правой - изменить на master.bat - правка - заменить:
ftppass на ваш пароль и ftpuser на ваше имя пользователя
А так же ftphost на имя вашего фтп (для http://phpnet.us это ftpphpnet.us)
Жмем на кнопочку "Заменить все"  - если все ОК сохраняемся.
Теперь если бот впарен, а мастер есть можно приступать к тому чего так долго ожидалось - управлению!
А чтобы было легче разберем менюшки бот-мастера
(хоть это и коммандный файл, но все таки свои менюшки есть)... попутно буду переводить.

Главное меню.

Вы можете:
---------------
1.  - Просмотреть онлайн статус ботов.
2.  - Просмтореть результаты выполнения задания.
3.  - Скоммандовать ботам.
4.  - Совершить операции с файловой системой.
5.  - Запустить\Завершить процессы или просмотреть их список.
6.  - Получить информацию о системе.
7.  - Посмтореть, что пользователь делает.
8.  - Послать маленькие шутки :-)
9.  - Выключить-Перезагрузить выйти из системы (разумеется у бота).
10.- Послать уже сделанное задание. (задание сделанное предыдущий раз можно послать еще раз
или же сдесь отсылается задание, сдекланное только что)
11.- Начать проект сначала (предыдущее сделанное задание удалится, как текущее так и сделанное до)

(1) - Просмотреть онлайн статус ботов
-----------------------------------------------------
(1) - Проверить только последний онлайн статус.
Просто получаем все файлы *.dat и смотрим на число в них, затем число сравниваем с нашим.
Если разница не превышает 6 минут, то пишем, что статус данного бота "онлайн".
В противном случае оффлайн.
Здесь кроется небольшое НО: если у бота время не совпадает с нашим, то показания будут неправильными.
(2) - Послать запрос и ждать ответа.
В отличие от предыдущего способа этот дает почти 100% уверенность, что боты онлайн.
С сервера удаляются все файлы *.dat, а затем ждется 6 минут и получаем все файлы *.dat
И все боты файлы которых получены есть онлайн!
(3) - Ждать, пока не получим ответ.
Способ идентичный предыдущему, только ждем мы все время пока не получим отчет о задании.
Опрашивание сервера на предмет появления файлов идет периодически с интервалом 2 минуты.

(2) - Просмтореть результаты выполнения задания
------------------------------------------------------------------------
(1) - Проверить результаты один раз.
Здесь запрашиваются все файлы *.ans, а затем проверяется номер задания в них
(который генерируется случайным образом при создании задания)
и если он совпадает с тем, что записан у нас в файле last.task,
то это наше задание и мы выводим статистику и запрашиваем вывод самих файлов.
Если же номера не совпадают,
то делаем вывод, что это задание мы когда-то отсылали, но это не наше последнее.
(2) - Ждать получения результатов.
То же, но будем ждать бесконечно, периодически опрашивая фтп сервер раз в 2 минуты.

(3) - Скоммандовать ботам
-------------------------------------
(1) - Вставить ручную команду.
Пишем комманду, она будет выполнена в контексте cmd.exe,
а вывод автоматически запишется в файл отчета
(2) - Вставить паузу.
Всавить паузу перед выполнением следующего пункта в сценарий задания
(3) - Вставить Коммандный пакет.
Вставляется коммандный пакет, созданный прежде,
он должен лежать в папке packets (как и все небольшие прилагающиеся файлы)

В этом и предыдущем случаях если выбирать спрятать комманду, то никаких консольных окон не будет видно,
а вывод комманды или коммандного файла запишется в файл ответа.
В этом случае скрытия применимо к коммандному файлу желательно вставить комманду паузы
после того как вставили коммандный файл,
так как главный сценарий задания mastertask.bat не ждет завершения нашего коммандного файла
и могут бытьпроблемы.
Выводы в файл ответа могут перемешатся с выводами остальных комманд главного сценария.
Или, что более вероятно ответ отошлется до того как
выбранный нами командный файл завершит вывод в файл отчета.
Короче будут проблемы, поэтому после того как добавили командный файл
добавьте команду паузы на столько секунд, сколько вы считаете командный файл будет выполнятся
(лучше переборщить с запасом, чем недобрать)

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

Если же Вы хотите, чтобы созданный Вами коммандный файл запускался скрытно
и  вывод не перенаправлялся в файл отчета,
то добавьте ручную комманду: JokerLoader.js -runhide .\tasks\"имя вашего файла.bat"
и перед отправкой задания добавьте в папку tasks ваш файл.
В этом случае так же в Вашем коммандном файле нужно Вам написать инструкции отправки ответов,
так как главное задание ждать не будет!

(4) - Совершить операции с файловой системой
-------------------------------------------------------------------
(1) - просмтореть дерево файлов.
Указываете Путь к папке или диск (С:)
и получите все дерево дочерних папок и файлов в них.
(2) - Просмтореть просто содержимое папки - Аналогично можно указать С:
(3) - Закачать файлы.
Файлы бот загружает файлы с компа в папку с именем upload на фтп сервере
(корневой папкой для бота есть папка Joker на сервере).
(4) - Скачать файлы.
Файлы бот скачивает с папки download с фтп сервера и сохраняет их в папку download у себя
(5) - Удалить файлы.
Удаляет файлы на компе.
Можно например задать маску: C:\Temp\*.txt

(5) - Запустить\Завершить процессы или просмотреть их список - Выводится список процессов
--------------------------------------------------------------------------------------------------------------------------------------
(1) - Просмтореть список
(2) - Запустить процесс скрытно.
Запускается загрузчиком Джокера процесс скрытно, вывод идет в файл отчета.
Главное задание НЕ ждет завершения процесса!
(3) - Запустить процесс видимым.
Запускается загрузчиком Джокера процесс видимо, вывод НЕ идет в файл отчета.
(4) - Завершить процесс.
Процесс завершается принудительно.
Если неудалось то в файл отчета запишется ошибка.

(6) - Получить информацию о системе
------------------------------------------------------
(1) - Полную системную информацию.Информация с помощью systeminfo пишется в файл отчета.
(2) - Имена пользователей - Имена всех пользователей системы.
(3) - Статистика соединений - Запрашивается статистика текущих соединений
(4) - Глобальные переменные - Вывод значений всех глобальных переменных среды.
(5) - IP конфигурация - Вывод конфинурации подключений
(6) - Установленные программы - ВЫводится список файлов в директории ярлыков всех программ

(7) - Посмотореть, что пользователь делает
-------------------------------------------------------------
Принт скрин экрана с заданной периодичностью и количеством скринов.
Используется capturemation.
Имена файлов имеют формат: время_дата_имя компа_имя юзера_(active, full или title)_нумерация.bmp
Файлы сжимаются и отправляются на сервер в главную папку(Joker).
Архивы имеют формат имени: screens_уникальный идентификатор_(active, full или title).arj
(1) - Полный принт скрин - это принт скрин всего экрана, он же full
(2) - Принт скрин окна с указанным заглавием(title).
Заглавие должно точно совпадать с тем что видно на экране!
(3) - Принт скрин активного в данный момент окна - Он же active

(8) - Послать маленькие шутки
------------------------------------------
(1) - Простое сообщение "привет" - Вылетает 10 окон с текстом, который указывается
(2) - Показать окно "Форматирование диска А:"
(3) - Перейти на указанную страницу - Загружает в браузере страничку

Послать маленькие шутки --) (4)Показать "цыфровой скринсейвер"
На черном экране бегут цыферки, до поры до времени,
впрочем это даже не скринсейвер, короче смотрите сами.

(9) - Выключить-Перезагрузить выйти из системы (разумеется у бота)
---------------------------------------------------------------------------------------------------
(1) - Перезагрузить
(2) - Выключить
(3) - Выйти из системы

(10) - Послать уже сделанное задание - Отсылается задание сделааное предыдущий раз или только что
------------------------------------------------------------------------------------------------------------------------------------------
(1) - Послать всем ботам
(2) - Послать всем кроме... - Боты номера которых указаны задание делать не будут
(3) - Послать только выбранным - Только боты номера которых указаны будут делать задание

(11) - Начать проект сначала
-----------------------------------------
Аналогично тому, что вы закроете мастер, а потом откроете его

Следует заметить, что когда вы это выбираете или запускаете мастер предыдущее задание сохраняется.
Если Вы выберети в меню любой пункт, кроме 1, 2, 10 то задание очистится и начнется создание нового.
Внимание: нужно внимательно все читать!
Непосредственно перед отправкой задания файлы заданий сжимаются архиватором arj (если они есть),
после этого делается задержка в 5 секунд, чтобы вы успели прочитать успешно ли выполнено сжатие.
Если нет, то вы должны не отправлять и снова попробовать переделать задание!
(Вероятность ошибки очень мала, но это на всякий случай).

По поводу задания: между
rem /////////////////////////////////////////////////////////////////////////////
rem ------------------------------Start of your instructions---------------------

rem -------------------------------End of your instructions----------------------
rem /////////////////////////////////////////////////////////////////////////////

можно вписывать свои инструкции если вы выбрали отослать задание но еще не выбрали кому именно,
то именно на этой стадии и можно его отредактировать(mastertask.bat - файл задания)
при необходимости добавляя к каждой своей команде вывод в файл таким образом: >>%digit%.ans

Итак бот-мастера тоже разобрали.

Теперь более конкретный пример использования:

- hacker: Привет.
- lamer : Привет.
- hacker: Зацени новую фотку (дает picture.scr)
- lamer : Давай... О прикольно: "карта эмоций Сигала"
- hacker: Да мне тоже понравилось.

Теперь hacker запускает master.bat - пункт 1 - 1 и смотрит... ага бот онлайн... такой-то айпи.
Посылает задание получить информацию о системе: 6 - 1 - 7 - 10 - 1 - 1
бот-мастер ждет пока результат не появится...

Или же делает так: 6 - 1 - 7 - 10 - 1 закрывает бот-мастера,
ждет сам несколько минут а затем запускает бот-мастера: 2 - 1
Опля есть.

Теперь думаю понятно, что даже не нужно обладать познаниями в программирование на C или Assembler'е
чтобы сделать свой мини-ботнет))
Хех, страшно жить в онлайне да и только :-) ...
Как защитится от такой напасти?
А не нужно брать что попало на свой комп, да и какое нафиг может быть scr рассширение у картинки.
К тому же нужно иметь фаерволл на компьютере, бот вообще не умеет обходить никаких фаерволлов.

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

З,Ы: Принимаются замечания, указания на ошибки и предложения.