В конце марта 2026 года команда FortiGuard Labs выявила ранее неизвестный вариант ботнета Gafgyt, получивший название C0XMO. Главное отличие новинки от предшественников - разделение функций латерального перемещения и атакующей части: сценарий на Python отвечает за поиск новых целей, а основное вредоносное тело выполняет DDoS-операции и закрепление в системе. Такая архитектура позволяет злоумышленникам быстрее заражать устройства с разными архитектурами и типами оборудования.
Описание
Атака начинается с эксплуатации уязвимости CVE-2021-27137. Это переполнение буфера в стеке службы UPnP (протокол универсальной автоматической настройки устройств) в некоторых версиях прошивки маршрутизаторов DD-WRT. Проблема возникает, когда парсер SSDP некорректно обрабатывает чрезмерно большие значения в поле ST:uuid: в специально сформированных M-SEARCH-запросах, отправляемых через UDP-порт 1900. Хотя целью было выбрано японское технологическое предприятие, исходный IP-адрес вредоносной активности находился в Германии. Скомпрометированный хост загружал вредоносное ПО в каталог /tmp/.cache, а его образцы компилировались под разные архитектуры Linux: ARM, MC68000, MIPS R3000, PowerPC, SuperH, Intel 80836 и AMD64.
После доставки на жертву C0XMO проходит четыре этапа закрепления. Сначала он проверяет свой путь выполнения через /proc/self/exe, затем копирует себя в скрытые расположения: /tmp/.sys, /var/tmp/.sys и /dev/shm/.sys, назначая права на выполнение (755). При наличии домашнего каталога копия создаётся и там: $HOME/.sys. Далее ботнет создаёт задачи cron, запускающие его каждые 15 минут, и дописывает команды выполнения в файлы профилей оболочки: ~/.profile, ~/.bashrc, ~/.bash_profile. Кроме того, C0XMO может самостоятельно перезапускаться, если его процесс был прерван.
Важная особенность - механизм уничтожения конкурирующих ботнетов. Вредоносная программа сканирует все активные процессы в /proc, сравнивая их имена с внутренним чёрным списком. Если имя совпадает, процесс немедленно завершается. Затем проверяются пути к исполняемым файлам: при совпадении с чёрным списком путей файл удаляется. В списки попадают другие ботнеты, сетевые службы, инструменты для программирования и утилиты red team. Более того, C0XMO старается стереть не только бинарники соперников, но и связанные с ними механизмы автозапуска: cron-задачи, rc.local, службы init.d и systemd, а также скрипты профилей.
После локального закрепления ботнет подключается к серверу управления (C2) с адресом 85[.]215[.]131[.]70. Соединение устанавливается через собственное рукопожатие: бот отправляет магическую строку 669787761736865726500 и общий секрет FS2@SA__=A23cAxs3S3@23AF@A3454DFSA0D, сервер отвечает HANDSHAKE_OK. Затем C0XMO передаёт идентификатор BOT, получает OK и в финале отправляет последовательность FF FF FF FF 75. После подтверждения сервер отправляет приветственное сообщение.
Командный обработчик распознаёт пять основных команд: ping (проверка активности, ответ PONG), stop, scan, stopscan и атакующие. Поддерживается 19 методов DDoS-атак, охватывающих различные сценарии: UDP-флуд, TCP-флуд, гибридный TCP+UDP, SYN-флуд, атаки на игровые серверы (Valve Source Engine, FiveM), обход защиты OVH, NTP- и Memcached-амплификацию, ICMP-флуд, Ping of Death, а также HTTP-методы - шторм запросов, медленное истощение, спуфинг, GET-флуд и обход Cloudflare.
Однако самой примечательной чертой C0XMO является выделение сканера в отдельный Python-сценарий. После закрепления ботнет загружает скрипт с того же IP-адреса и порта (217[.]160[.]125[.]125:15527), откуда распространяется основное вредоносное тело. Перед запуском устанавливаются пакеты requests, paramiko и beautifulsoup4. Затем скрипт выполняется с аргументами, указывающими на случайное сканирование IP-адресов и портов (23, 22, 80, 443, 8080, 5555, 5511, 5554, 4443, 81, 8000, 7547, 8081, 8443, 8888), длительность работы и адрес C2. Специалисты FortiGuard Labs обнаружили, что сценарий содержит около 22 функций, сгруппированных в шесть классов: основная программа, рабочие потоки, чёрный список, Telnet, SSH, HTTP-эксплойты и ADB-эксплойты.
Чёрный список загружается из файлов blacklist.txt и failed.txt, чтобы избежать сканирования ловушек (honeypot), исследовательских институтов, уже известных узлов ботнета и ранее неудачных IP. Рабочие потоки проверяют цель на принадлежность к чёрному списку, сканируют открытые порты, определяют тип службы и пробуют несколько векторов атаки: подбор учётных данных по Telnet и SSH, HTTP-эксплойты, а также эксплуатацию открытого Android Debug Bridge (ADB). После успешного проникновения скрипт определяет архитектуру цели и загружает соответствующую полезную нагрузку C0XMO.
В число HTTP-эксплойтов входят: инъекция SOAP через UPnP (CVE-2021-27137), инъекция CGI, HNAP SOAP Injection (CVE-2015-2051), командная инъекция DVR, Systools Command Injection, GLPI htmLawed RCE (CVE-2022-35914), GLPI Barcode Injection, уязвимость AVTECH DVR (CVE-2025-34054, CVE-2016-15047), NVMS-9000, Broadband Router и Zyxel SysTools RCE. Отдельно отрабатывается эксплуатация ADB на открытых Android-устройствах.
Подводя итог, C0XMO представляет собой значительное усложнение по сравнению с типовыми вариантами Gafgyt. Модульная архитектура, фазированное распространение и расширенный набор DDoS-методов указывают на высокую операционную зрелость разработчиков. Отделение сканера от основного бинарника даёт возможность быстрее адаптировать код под новые уязвимости и архитектуры. Компаниям и операторам устройств интернета вещей настоятельно рекомендуется установить последние версии прошивок на всех сетевых устройствах, отключить неиспользуемые службы удалённого доступа (Telnet, UPnP), внедрить сложные пароли и регулярно мониторить исходящие аномальные сканирования. Аудит публичных служб и своевременное закрытие известных уязвимостей помогут снизить поверхность атаки, которую активно использует C0XMO.
Индикаторы компрометации
IPv4
- 176.100.37.91
- 85.215.131.70
IPv4 Port Combinations
- 217.160.125.125:15527
SHA256
- 20042f1efb59c99e3addf822a3e9e5a496f0b701362df038a50a32a9f504a136
- 3ddb67ab079509dd1e7ac77fc4cfed25a271526668c68f8a2221e96a4cc21812
- 41e8e327abbf2ba721be677ad8a416a7295708257b39688a0af03275fb199cec
- 444a9d34a9f59dc7975dfabefb47d789813a4497bbac9127c4806dd816e85211
- 450ea44da0c9d96a2e8f4d6bad34f1c35cd35743295b8cd2defa9f7a9884685d
- 7413cbb6eab4d6b10346f71be5dd76d7cf2f4817f7776367b162f83755aefa1f
- 8fc2d35b66c692d37a85ae9d30dc5c7f06f0b3eaf01112a5a6398a1a0feb3aee
- 9394666007fac4014a4641fdae150c1b969ed2bc4299876318a336fd386abf59
- b61a5508847a2167b737d31193dc393e92c5be2aa5141bbe4b7ea6f440fd4799
- b6f835ced11059d341222eba11fff3a4672f4de47a3a4d791fad86059a2b06d4
- d452f22dacab9785539484245c13e9cce58df23fc82eeef205684fcd196da20b
- dff0edae6e8854ddd3e617054ee0bd74c696c91411f704dff60aabaec839bec9
- ea44138b9701fce1b2fe13de8f9e00681c007c9adc625edc9f507f177704c2e8
- eead44c0af7ddb12cece1a6125cf213bab3c22511cd59aff9d63dcfddb7d4386
- f02b1d8010dac35b007796def0cbd5d0c9414df790e2b55b105c95df2f2ffa91