Заражённые маршрутизаторы, межсетевые экраны и IP-камеры операторы Linux-ботнета Evooo1Bot используют как прокси-серверы SOCKS5 для собственного трафика. Разбор семейства опубликовала FortiGuard Labs – публичных отчётов по нему прежде не выходило. Судя по телеметрии управляющей инфраструктуры, заражения идут с , а первичный доступ даёт эксплуатация десяти известных уязвимостей в оборудовании, доступном из интернета. Движок DDoS перенесён из утёкшего исходного кода Mirai, поверх него надстроены шифрованный канал управления, подбор паролей по SSH, перехват учётных данных и отдельный модуль эксплойтов.
Mirai – вредоносная программа для устройств интернета вещей, исходный код которой выложили в открытый доступ . С тех пор код служит основой для десятков производных ботнетов.
Десять уязвимостей в маршрутизаторах и промышленных шлюзах
Семейство попало в поле зрения через телеметрию систем предотвращения вторжений Fortinet: перехваченные попытки эксплуатации вели к одному и тому же адресу загрузчика – 91.92.40[.]118/wget.sh. Набор целей разнородный, домашние маршрутизаторы Tenda и D-Link соседствуют с телефонной платформой Alcatel OmniPCX Enterprise и промышленными телеметрическими контроллерами ME-RTU.
Граничные устройства – оборудование на стыке локальной сети и интернета: маршрутизаторы, межсетевые экраны, IP-камеры, промышленные шлюзы. Именно такие устройства перечислены в отчёте как основные цели Evooo1Bot.
Самой старой из задействованных брешей девятнадцать лет, самые свежие получили идентификаторы в 2025 году. Шесть позиций из десяти – внедрение команд, то есть класс уязвимостей, при котором пользовательский ввод без проверки попадает в системный вызов и позволяет выполнить произвольную команду операционной системы.
| Идентификатор | Оборудование | Тип уязвимости |
|---|---|---|
| CVE-2007-3010 | Alcatel OmniPCX Enterprise | Удалённое выполнение кода |
| CVE-2016-6277 | Маршрутизаторы NETGEAR | Удалённое выполнение кода |
| CVE-2018-14558 | Tenda AC7, AC9, AC10 | Внедрение команд |
| CVE-2019-14931 | Контроллеры ME-RTU (Mitsubishi Electric Europe, INEA) | Внедрение команд |
| CVE-2020-10987 | Tenda AC1900, модель AC15 | Удалённое выполнение кода |
| CVE-2021-46422 | Telesquare SDT-CW3B1 | Внедрение команд |
| CVE-2022-37055 | Маршрутизаторы D-Link | Переполнение буфера |
| CVE-2024-29269 | Telesquare TLR-2005KSH | Внедрение команд |
| CVE-2025-10123 | D-Link DIR-823X | Внедрение команд |
| CVE-2025-55583 | D-Link DIR-868L B1 | Внедрение команд |
Метка кампании встроена прямо в команду скачивания и своя для каждой уязвимости: у целей Mitsubishi Electric это -s mitsu, у оборудования Alcatel-Lucent – rep.alcatel. По меткам оператор отдельно считает отдачу от каждой бреши.
Скрипт wget.sh и двенадцать сборок под разные архитектуры
Сам загрузчик устроен просто и перебирает четыре способа скачивания подряд: wget, busybox wget, curl, tftp. В скрипте перечислены двенадцать сборок исполняемого файла под разные процессорные архитектуры, подходящая записывается во временный каталог, получает права на запуск и выполняется. Следом очищается история команд Bash – чтобы стереть следы атаки.
Проверка на отладчики, песочницы и виртуальные машины
Строки внутри двоичного файла закрыты многослойным шифрованием, наложенным при сборке: одна и та же процедура расшифровки обслуживает более 60 блоков. Ключи AES-256-CTR и ChaCha20 целиком в файле не лежат – каждый собирается при запуске из двух 32-байтовых констант в секции .data, объединяемых операцией XOR. Часть строк в секции .rodata закрыта дополнительным однобайтовым XOR.
Перед выходом на связь проверяется окружение, и проверок четыре:
- наличие в файловой системе инструментов анализа – отладчиков strace, gdb, lldb, дизассемблеров radare2, Ghidra, IDA, анализаторов трафика Wireshark и tcpdump, средств криминалистики YARA, binwalk, Volatility;
- имена запущенных процессов, включая frida и frida-server;
- названия служб песочниц – Cuckoo, CAPE, Joe Sandbox, Hybrid Analysis, Sandboxie и других;
- признаки виртуальных сред и контейнеров: VMware, VirtualBox, QEMU, Firejail, Bubblewrap, gVisor, Kata.
Когда ни одна проверка не сработала, устанавливается шифрованное соединение с управляющим сервером на порту 443. Порт выбран не случайно: на периметре сети такой поток неотличим от обычного HTTPS. Дальше узел ждёт команд – всего интерфейс удалённого управления насчитывает 28 штук, среди них загрузка и выгрузка файлов размером до 10 МБ и интерактивная оболочка на псевдотерминале.
Ретранслятор SOCKS5: прямой режим и обратный канал
Наиболее значимой с оперативной точки зрения частью Evooo1Bot в FortiGuard Labs называют именно ретранслятор. В прямом режиме на заражённой машине открывается слушающий сокет SOCKS5 на TCP-порту 1080; сначала предпринимается попытка поднять двухстековый сокет IPv6, при неудаче происходит откат к IPv4. Каждое принятое подключение передаётся обработчику сеанса.
SOCKS5 – протокол проксирования, описанный в RFC 1928 в марте 1996 года. Работает с TCP и UDP, поддерживает авторизацию и, в отличие от HTTP-прокси, не разбирает содержимое передаваемых данных.
Обратный режим устроен иначе. Вместо открытого порта бот сам устанавливает исходящее шифрованное соединение с указанным оператором сервером-ретранслятором и держит его как управляющий канал. Получив запрос на новый сеанс, он открывает к тому же серверу второе шифрованное соединение, регистрирует его за идентификатором сеанса и передаёт обработчику SOCKS5. Управление и полезный трафик разнесены, поэтому несколько сеансов работают параллельно, не мешая постоянному каналу.
Возможность заметно повышает ценность заражённого узла для атакующих. IP-адрес жертвы годится, чтобы замаскировать вредоносный трафик, обойти региональные ограничения или получить доступ во внутреннюю сеть через уже скомпрометированную машину.
– FortiGuard Labs, отчёт от 13 августа 2026 года
В крупной сети та же функция позволяет собрать распределённую прокси-инфраструктуру и продавать доступ под видом резидентных прокси – сервисов, пропускающих трафик клиента через IP-адреса домашних пользователей и небольших компаний. Рядом работает перехватчик учётных данных: он читает /proc/net/tcp, вылавливает заголовки HTTP Basic Authorization и Cookie и складывает их в файл /tmp/.sniff.log.
Подбор паролей по SSH с двумя проверками на ловушки
До начала перебора учётных данных сканер дважды проверяет, не попал ли он на ловушку – специально уязвимую систему, которую исследователи выставляют в сеть ради сбора образцов и наблюдения за атаками. Первая проверка идёт на этапе рукопожатия, до отправки любых паролей: баннер SSH сверяется с зашитым списком из пятнадцати строк, куда входят Cowrie, Kippo, HonSSH, Glutton, OpenCanary, а также идентификаторы библиотек paramiko, libssh, russh и Twisted. При совпадении цель молча пропускается, без записи в журнал и без дальнейшего взаимодействия.
Вторая проверка выполняется уже после успешного входа. Сканер читает /proc/version и /proc/1/cmdline, ищет каталоги Cowrie и Kippo и отбрасывает цель, если в выводе версии ядра нет признаков настоящего Linux. Проверки не дублируют друг друга: первая отсеивает ловушки, выдающие себя реализацией SSH, вторая – те, что показывают правдоподобный баннер, но выдают себя структурой файловой системы.
Собственный клиент SSH отдаёт баннер SSH-2.0-OpenSSH_9.7p1. Встроенный словарь содержит более 150 записей, и помимо стандартных заводских комбинаций для устройств интернета вещей в нём есть служебные учётные записи jenkins, postgres, oracle, nagios, deploy – такие встречаются в корпоративных и промышленных сетях, а не на домашних маршрутизаторах.
Пять механизмов закрепления и защита от перезагрузки
Одна команда оператора ставит сразу все механизмы автозапуска:
- служба systemd с описанием Apache HTTPD Cache Manager и параметром Restart=always;
- сценарий SysV в каталоге /etc/init.d;
- задание cron, каждые пять минут заново скачивающее и запускающее сценарий;
- внедрение в /etc/profile.d, срабатывающее при входе пользователя;
- дописывание строки запуска в /etc/rc.local.
Устойчивость к принудительному завершению обеспечивают ещё два приёма. Через запись в /proc/self/oom_score_adj понижается собственный приоритет для механизма OOM-killer, а открытый дескриптор /dev/watchdog не даёт сторожевому таймеру перезагрузить устройство и прервать работу.
Шестнадцать методов DDoS и модуль эксплойтов на восемь уязвимостей
Атакующая часть структурно повторяет утёкший код Mirai: шестнадцать методов флуда, от простого UDP и DNS до SYN, ACK, STOMP, инкапсуляции в GRE, фрагментированного TCP и отдельного варианта, рассчитанного на обход фильтрации OVH. В режиме HTTP оператор задаёт метод запроса, заголовки, значение User-Agent и длину тела.
Модуль эксплойтов появился только в последней сборке – в более раннем варианте есть все команды, кроме трёх, отвечающих за атаки по CVE. Внутри двоичного файла лежит открытая таблица, где идентификатору уязвимости сопоставлены готовые HTTP-запросы, а адрес сервера с полезной нагрузкой оператор подставляет в момент запуска. Предусмотрен и одновременный перебор всех записей.
| Идентификатор | Продукт |
|---|---|
| CVE-2021-36260 | IP-камеры Hikvision |
| CVE-2022-26134 | Atlassian Confluence |
| CVE-2022-29464 | Продукты WSO2 |
| CVE-2022-30525 | Межсетевые экраны Zyxel |
| CVE-2023-1389 | TP-Link Archer AX21 |
| CVE-2024-4577 | PHP-CGI в Windows |
| CVE-2024-10914 | Сетевые хранилища D-Link |
| CVE-2025-1974 | Kubernetes ingress-nginx |
Работает не всё. Часть записей не воспроизводит настоящий вектор атаки: либо тип уязвимости несовместим с внедрением команд, либо у цели нет интерфейса, к которому обращается запрос. Показательна запись для CVE-2023-34362 в MOVEit Transfer – передаётся аргумент файлу human2.aspx, но сама загрузка веб-оболочки не выполняется, поэтому атака заведомо не срабатывает.
Заключение
От Mirai в Evooo1Bot взят только движок флуда, остальное написано заново: шифрованный канал связи, три слоя запутывания строк, разветвлённый интерфейс управления, проксирование и перехват учётных данных. Такой набор рассчитан на длительное присутствие в сети жертвы, а не на разовую DDoS-кампанию, и заражённое устройство ценно оператору само по себе – как чистый IP-адрес, через который можно пропускать чужой трафик.
Риск ложится прежде всего на владельцев оборудования на периметре сети, для которого производитель давно не выпускает прошивки: в списке целей есть бреши 2007 и 2016 годов. Практический минимум – закрыть административные интерфейсы от доступа из интернета, обновить прошивки там, где обновления ещё выходят, и отследить исходящие соединения на порт 443 к незнакомым адресам. В антивирусных базах Fortinet семейство проходит как Linux/Agent.BDS!tr; индикаторы компрометации, включая хеши файлов, приведены в отчёте.