Валентин Холмогоров - PRO вирусы. Версия 4.0
- Название:PRO вирусы. Версия 4.0
- Автор:
- Жанр:
- Издательство:ООО «ЛитРес», www.litres.ru
- Год:2020
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Холмогоров - PRO вирусы. Версия 4.0 краткое содержание
В формате PDF A4 сохранен издательский макет.
PRO вирусы. Версия 4.0 - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
С помощью специального набора команд оператор мог очень гибко настраивать параметры атаки: определять значения TCP-флагов, указывать такие характеристики пакетов, как maximum segment size и timestamp , отправлять пустые пакеты, пакеты со случайными значениями или информацией из конфигурации трояна, задавать целевой порт и размер отсылаемых данных, а также управлять прочими TCP-параметрами. Кроме всего прочего, Mirai позволял флудить на заданный узел инкапсулированными пакетами GRE с использованием Transparent Ethernet Bridging. В этом случае встроенный пакет включал в себя полноценный Ethernet-фрейм, в котором MAC-адреса как получателя, так и отправителя Mirai генерировал случайным образом.
В общем, у разработчиков получился довольно мощный DDoS-комбайн, позволяющий реализовывать разные сценарии атак и объединять зараженные умные девайсы с почти любой аппаратной архитектурой в полноценные ботнеты. Один из важных функциональных модулей Mirai — сканер уязвимых хостов, с которыми можно соединиться по протоколу Telnet. Этот сканер был практически полностью позаимствован из исходников Linux-трояна Fgt. В общих чертах алгоритм работы модуля состоит из четырех этапов: поиск уязвимых хостов в сети, перебор логинов и паролей по словарю, после успешного соединения — отправка на скомпрометированный девайс sh-скрипта, который в качестве финального аккорда выкачивает с управляющего сервера троянский бинарный файл под нужную архитектуру.
А теперь по порядку. Для начала сканер создает 256 структур данных, содержащих случайный IP-адрес, параметры сокета и другую полезную информацию. Из списка генерируемых адресов исключаются все локальные и частные диапазоны. Затем с каждым из них троян пытается установить соединение, при возникновении ошибки отсылая на собственный управляющий сервер сообщение. В ответах атакуемого узла сканер ищет строки user, login, pass, dvrdvs или name , указывающие на требование передачи логина, который он и отправляет, воспользовавшись словарем из конфига. Если логин успешно угадан, на управляющий сервер уходит сообщение login prompt found с указанием номера структуры и порядкового номера задачи, в противном случае троян рапортует об ошибке или тайм-ауте. Затем в ответе хоста ищутся строки, указывающие на запрос пароля. Если они обнаружены, хосту передается строка из словаря, а полученный ответ проверяется на наличие значений invalid, incorrect, fail, again, wrong, accessdenied, error, bad, success, busybox, shell или dvrdvs . Они свидетельствуют об успехе или провале авторизации. Соответствующий отчет также отправляется на командный сервер. После этого процедура брута повторяется в цикле для всех 256 структур. Таким образом, за каждый проход цикла сканер может «окучить» до 256 случайных IP-адресов.
Если авторизация прошла успешно, на взломанный хост отправляется команда wget, которая выкачивает с управляющего сервера и сохраняет в папку /tmp/ sh-скрипт. Он, в свою очередь, загружает из сети бинарный файл трояна, соответствующий архитектуре устройства. С помощью этого нехитрого алгоритма организуется автоматическое распространение Mirai и заражение новых умных устройств, из которых впоследствии формируется ботнет.
Любой программный продукт эволюционирует со временем: его создатели устраняют выявленные ошибки и понемногу добавляют новые функции. Это в полной мере относится и к Mirai.
В следующей версии, распространявшейся летом 2016 года, создатели трояна отказались от динамического выделения памяти для хранения конфига в пользу статической области — видимо, чтобы повысить стабильность работы программы в целом. Поксоренные строки в конфиге после расшифровки и чтения зашифровывались обратно прямо в памяти. Наконец, был исправлен баг с пропуском имен убиваемых процессов, если те оказывались на границе блока данных, — теперь парсер научился обращаться к ним по индексу, совпадающему с позицией строки в массиве. Был полностью переписан генератор псевдослучайных значений, а при запуске Mirai определял IP-адрес зараженного устройства, постучавшись на DNS-сервер Google (раньше он обращался для этого к собственному управляющему серверу). Троян научился взаимодействовать с обработчиками сигналов и игнорировать SIGINT посредством sigprocmask с очевидной целью не дать пользователю принудительно остановить вредоносный процесс.
В новой версии Mirai была реализована функция смены адреса управляющего сервера с помощью SIGTRP, а поступающие команды стали обрабатываться строго по одной во избежание формирования очереди. Для удобства работы с сокетами в составе трояна появился собственный локальный сервер. Так, берклиевский сокет PF_INET биндился на порт 48101 локалхоста и переходил в режим ожидания входящего соединения. Если вредоносу не удавалось создать сокет и подключиться к нему, троян находил владеющий сокетом процесс и убивал его: таким образом исключалось зависание программы при циклических попытках установить связь посредством функции bind с занятым сокетом. Вот почему для защиты от Mirai некоторые специалисты по информационной безопасности рекомендовали заблокировать на устройстве TCP-порт 48101 , если он не используется, — это нарушало нормальную работу встроенного в троян сервера. В обновленной версии была полностью пересмотрена самозащита: вместо костыля с файлом .shinigami троян научился определять PID и не убивал процесс, идентификатор которого совпадал с текущим. И без того богатые функции Mirai пополнились возможностью устраивать атаки типа DNS Amplifcation, зато в списке исчез флуд по протоколу HTP — впрочем, в одной из следующих версий он вернулся на свое законное место.
Модификация трояна, которую создатели опубликовали на hackforums, несколько отличалась от предыдущих редакций Mirai. Прежде всего, программа обрела способность отключать сторожевой таймер watchdog, чтобы, если система зависнет, она автоматически не перезагрузилась. Чтобы затруднить поиск трояна на устройстве, имя его процесса выбиралось случайным образом в виде последовательности символов латинского алфавита и цифр. Еще один интересный момент: сразу после запуска Mirai удалял с диска собственный исполняемый файл. Наконец, при обнаружении процесса с именем .anime троян не просто выгружал его из памяти, но еще и уничтожал соответствующий исполняемый файл — чем-то создатели этого бота явно насолили разработчикам. Помимо всего прочего, в исходниках сентябрьской версии Mirai для архитектуры x86 обнаружился примечательный баг: из-за неверно указанного имени бинарного файла конфигурационная структура для него корректно не заполнялась, однако затем троян предпринимал попытки чтения из конфига. Но, несмотря на эту ошибку, троян был вполне работоспособным, а богатый арсенал его функций покрывал практически все потребности ботоводов.
Читать дальшеИнтервал:
Закладка: