PRO вирусы. Версия 4.0 (Холмогоров) - страница 71


Основной модуль трояна

Запустившись в системе, основной модуль Hajime пытается убить все процессы, имеющие входящие и исходящие соединения с 23-м портом, для чего анализирует содержимое файлов / proc/net/tcp и /proc/net/tcp6. Затем троян модифицирует iptables, чтобы перекрыть доступ к портам 7547, 5555, 5358, и удаляет цепочку CWMP_CR, которая используется в части роутеров Movistar:

iptables — A INPUT — p tcp — destination-port 7547-j DROP

iptables — A INPUT — p tcp — destination-port 5555-j DROP

iptables — A INPUT — p tcp — destination-port 5358-j DROP

iptables — D INPUT — j CWMP_CR

iptables — X CWMP_CR

После инициализации Hajime отправляет NTP-запрос к серверу pool.ntp.org, чтобы определить временную зону устройства, а также корректное значение текущей даты. Если запрос не дал результата, используется локальное время. Точное определение времени и даты очень важно для синхронизации ботнета, а некоторые умные устройства, где используются установленные по умолчанию параметры авторизации, имеют неправильную конфигурацию системного времени. Если пользователь не изменил логин и пароль, с чего бы ему менять другие настройки? Создатели Hajime учли этот тонкий момент.

Затем командой unlink троян удаляет собственный файл из системы, после чего при помощи функции strcpy меняет символьную строку argv [0], в которой хранится имя программы, на telnetd. Наконец, с использованием системного вызова prctl (PR_SET_NAME, argv [0]) он меняет имя своего процесса. Таким хитрым способом Hajime пытается замаскироваться под стандартный демон Telnet, чтобы не вызывать у пользователей подозрений. Дальше управление передается модулю, который отвечает за работу DHT-протокола Kademlia, предназначенного для организации одноранговых децентрализованных файлообменных сетей. Непосредственно для приема и передачи данных ботнет использует транспортный протокол uTorrent. Это, в частности, позволяет зараженным девайсам успешно работать под NAT.


Ботнет

Маршрутизация в ботнете Hajime базируется на модифицированном проекте KadNode, который поддерживает шифрование и инфраструктуру открытых ключей (PKI). Передаваемые файлы сжимаются при помощи модифицированного алгоритма LZ4, но некоторые файлы могут транслироваться и в несжатом виде.

После инициализации протокола Hajime устанавливает соединение с пирами Torrent-ботнета и скачивает актуальный конфигурационный файл. Для опознавания пиров в сети используются уникальные идентификаторы ботов, генерируемые на основе текущей даты и хеша SHA-1, полученного от имени файла трояна. Наличие свежего конфигурационного файла на других узлах ботнета Hajime проверяет с интервалом в десять минут. Типичный конфиг содержит обозначение процессорной архитектуры, для которой собраны исполняемые файлы, имена этих файлов и timestamp, позволяющий трояну определить их версию. Если файл в сети свежее того, информация о котором сохранена в локальной конфигурации вредоноса, он скачивает бинарник для соответствующей аппаратной конфигурации и запускает его в качестве своего дочернего процесса. Аналогичным образом работает самообновление Hajime. P2P-ботнет, созданный по такой схеме, получается одноранговым, а значит, децентрализованным и отказоустойчивым. Он не зависит от наличия управляющих серверов, следовательно, не прекращает свою деятельность, если какое-то количество инфицированных устройств вдруг «вылечится» или перестанет работать. Да и перехватить управление таким ботнетом физически невозможно.