Умный ботнет

Николай «GorluM» Андреев

Хакер, номер #076, стр. 076-112-1

(gorlum@real.xakep.ru)

Просто, но со вкусом, о создании плагинного ботнета

Основным недостатком современных public-ботнетов является почти полная невозможность добавления в сеть новой функции. Сложность даже не в модификации исходного кода бота – с этим справится любой более-менее продвинутый кодер, а в его переустановке. Если админу для этого надо оббежать все машины в сети, то хакеру обычно проще новую сеть собрать. Таких проблем не стало бы, будь ботнет плагинным с динамической подкачкой модулей.

Ботнет – это распределенная сеть ботов. Чем различаются бот и какой-нибудь RAT (Remote Administration Tool)? По возможностям, пожалуй, ничем. А по принципу управления отличия кардинальны. Обычно ты командуешь одной RAT за раз – скопироватьпереместитьудалитьнастроить – все на одной машине. Если машин 500, и на каждой надо, например, поправить какие-нибудь настройки? Стандартными способами тут уже не обойтись. Поэтому и были придуманы боты, фактически те же RAT, только управляемые сервером. Скомандовал сервер: «Всем выключиться», все и выключились. Не надо к каждой машине коннектиться и объяснять, в чем дело и что делать.

Такой подход, надо признать, невероятно удобен всем. Админам – одновременно все компьютеры в локальной сети настраивать, хакерам – управлять DDoS’ом и перебирать пароли, физикам-математикам – что-нибудь обсчитывать глобальное (ведь распределенные вычисления из той же оперы). Задачи у всех разные, на них останавливаться я не стану. Я просто постараюсь объяснить, как можно написать универсальный бот, который сможет удовлетворить (гусары, молчать!) потребности любого человека, способного написать примитивную динамическую библиотеку. Я расскажу, как сделать плагинный ботнет.

Команды

Самый простой способ управлять кучей ботов – это заставить их самих скачивать команды с web-сервера раз в какое-то время. Зарегался, скажем, на бесплатном хостинге, положил туда текстовой файл с командами. А бота написал так, чтобы он все время этот файл скачивал, парсил и выполнял. В принципе, так должно быть. Но только есть одна проблема: бот должен знать все команды, описанные в файле. Если он что-то не знает, то просто не выполнит. Логично. Угадать заранее, какие от бота потребуются функции, практически невозможно, т.к. потребности постоянно меняются (бывает даже, что админ становится хакером). Следовательно, надо иметь возможность удаленно, уже после установки ботнета, добавлять (менять, удалять) функции бота. Звучит страшно, но на самом деле все еще страшнее ;).

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

message Сообщение от бота!

pingaddr www.xakep.ru

Такой бот поддерживает всего две команды «message» и «pingaddr». И ничего другого он не поймет. А должен. Надо поправить его таким образом, чтобы его можно было бы обучать новым командам прямо из скрипта. Оказывается, делается это всего лишь внедрением более или менее сносной плагинной (сервисной) системы и новой команды «load», которая бы скачивала модули с остальными командами.

Содержание  Вперед на стр. 076-112-2
ttfb: 3.4749507904053 ms