Семейство вредоносных программ Tengu, произошедшее от известного Mirai, показывает, как современные ботнеты для интернета вещей превращаются из простых инструментов для организации атак на отказ в обслуживании в многофункциональные платформы. Tengu нацелен на Linux-устройства, которые подключены к сети, но плохо обслуживаются - от роутеров и камер до телевизионных приставок на Android. Вредонос сочетает зашифрованный протокол связи с управляющим сервером, возможность работать как прокси, обновлять свою полезную нагрузку, собирать данные о системе и сети, а также проводить атаки разного типа, в том числе направленные на игровые серверы. Особое внимание уделено механизмам закрепления в системе и самозащите, которые затрудняют обнаружение и удаление.
Описание
Заражение происходит через Telnet-брутфорс: злоумышленники подбирают слабые пароли и запускают скрипт-загрузчик. Этот скрипт скачивает исполняемый файл под конкретную архитектуру устройства с того же сервера, который затем используется как командно-контрольный. После запуска вредонос расшифровывает адрес управляющего сервера и начинает с ним обмен данными. Первичные пакеты регистрации и сигналы активности передаются открытым текстом, но все команды от сервера к боту, а также обновления шифруются. Ключ шифрования встроен в образец; {как показало исследование Nozomi Networks}, для его восстановления достаточно выполнить простую операцию над двумя блоками данных в теле программы. Это защищает канал от перехвата и подмены.
Сервер может отдавать боту более десяти различных команд. Среди них - запуск и остановка прокси-сервера (по умолчанию SOCKS5), сбор сведений о сетевых интерфейсах, IP- и MAC-адресах, шлюзе и DNS, а также о характеристиках системы: версия ядра, модель процессора, объём оперативной и свободной памяти, список процессов. Злоумышленник может выполнить произвольную команду на устройстве и получить её вывод. Для закрепления в системе Tengu пытается изменять файлы планировщика cron, создавать поддельные службы systemd и init.d - хотя реализация некоторых из этих методов выглядит незавершённой. Основной инструмент для совершения атак - запуск одного или нескольких потоков DoS: в арсенале 25 методов, включая флуд UDP с подменой источника, TCP-флуды (SYN, ACK, PSH), ICMP-запросы, а также атаки на прикладном уровне по протоколам HTTP, DNS, NTP, SNMP, SIP, SSH, SMTP, FTP и специфические для игровых платформ Source Engine, Minecraft и другие.
Отдельная функция позволяет загрузить с управляющего сервера файл через шлюз IPFS и выполнить его. Поддерживаются форматы ELF (исполняемые файлы Linux) и APK (пакеты Android). Таким образом, ботнет может расширять своё присутствие на Android-телевизорах и других подобных устройствах. Механизм обновления активируется при получении сообщения, зашифрованного тем же ключом, но с особым маркером в начале; тогда вредонос записывает новую версию во временный файл и запускает её, заменяя себя.
Самозащита Tengu заслуживает отдельного внимания, поскольку большинство вариантов Mirai лишены таких возможностей. Вредонос запускает процесс-сторож, который проверяет состояние основного процесса каждые 60 секунд и перезапускает его в случае завершения. Кроме того, используется аппаратный сторожевой таймер (watchdog): специальный поток маскируется под системный процесс, включает таймер с интервалом срабатывания около 30 секунд и отправляет сигналы только пока основной процесс жив. Если вредонос убит, таймер не получает подтверждения и перезагружает устройство. Это даёт шанс механизмам автозапуска восстановить заражение.
Ещё один агрессивный приём - перезапись исполняемых файлов, отвечающих за перезагрузку и выключение. Вредонос повреждает их заголовки, что может помешать администратору корректно завершить работу устройства. Также Tengu атакует другие вредоносные программы, конкурирующие за контроль над одним и тем же устройством. Постоянно сканируя список активных процессов, он убивает те, чьи имена, пути или командные строки соответствуют известным образцам конкурирующих ботнетов. Для более быстрой реакции используется мониторинг создания новых процессов через системные механизмы Linux. Цикл проверки выполняется примерно каждые 500 миллисекунд.
Техники антианализа включают шифрование строк с помощью псевдослучайного генератора, что затрудняет статический анализ. Вредонос также может выполнять свой код без записи на диск: он создаёт анонимный файл в оперативной памяти, копирует туда свой образ и запускает его с подменённым именем процесса, маскируясь под системный журнал systemd-journal. Это позволяет обмануть простые средства мониторинга. Кроме того, программа приглушает сигналы завершения, отключает создание дампов памяти и понижает вероятность быть убитой планировщиком ресурсов ядра. Проверки на отладку включают чтение идентификатора трассирующего процесса, поиск переменных окружения, которые могут указывать на перехват, измерение разницы тактов процессора (задержка более 500 тысяч циклов считается подозрительной) и контроль целостности собственного кода по хешу.
Для защиты от таких угроз организациям, эксплуатирующим IoT и встраиваемые Linux-системы, необходимо минимизировать доступность сервисов управления (Telnet, SSH) из интернета, удалить стандартные пароли, внедрить уникальные учётные данные и по возможности отключить удалённый доступ. Важно регулярно обновлять прошивки устройств и сегментировать IoT-сети, чтобы ограничить боковое перемещение атакующих. Мониторинг аномального сетевого поведения, необычных процессов и служб, маскирующихся под легитимные, должен стать стандартной практикой. При подозрении на компрометацию следует проверять не только основные пути автозагрузки, но и скрытые службы, сценарии инициализации и планировщики, а также временные файлы в /tmp и /dev/shm. Tengu - наглядный пример того, как угрозы для интернета вещей становятся всё сложнее, и пренебрежение базовой гигиеной безопасности этих устройств может дорого обойтись.
Индикаторы компрометации
IPv4
- 64.89.163.8
SHA1
- 01c3326ce5beb78a6c106960a3a0868682b97bfa
- 0243692ce6ca522bc1359a3d89d70a229cf76587
- 0750489645d263efde56189be97c045cfc8ca890
- 097522a52986982b9eefc29f95efdd9d3b6032e7
- 144521ad3baf1fc28ceb4ad26d6fe490ab1b31f4
- 197652174622cda52435249bc96a2d82b3613194
- b249800066433c0a8bf23edae719133465247abc
- b6d406992411dad0ef80f2b7b61427448bd05540
- caef4358921486cea54333bdcde3b61c845deb9c
- da040700e8c0852eaa848fb01138e5b820c6c765
SHA256
- 897226af37990fa60f25fea00b0509faa0e78d8bee10875c23b9b6ab0b8faed9
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | rule IOT_DDoS_tengu_sample { meta: description = "Mirai-derived Linux DDoS botnet: DGA+AEAD C2, proxy, Android/IPFS dropper, watchdog/reboot bricking" sha256 = "897226af37990fa60f25fea00b0509faa0e78d8bee10875c23b9b6ab0b8faed9" author = "Nozomi Networks Labs" date = "2026-07-07" strings: $masq1 = "[kworker/%d:%d]" ascii $masq2 = "/usr/lib/systemd/systemd-journald" ascii $masq3 = "/dev/shm/.journal" ascii $brick = "ELFOOD" ascii $svc1 = "chud-daemon" ascii $svc2 = "chud-watchdog" ascii $svc3 = "chud-scheduler" ascii $tengu = "/etc/init.d/tengu" ascii $upd = "/tmp/.up" ascii $prox = "/tmp/.proxy.pid" ascii $ipfs = "GET /ipfs/%s HTTP/1.0" ascii $apk1 = "aapt dump badging '%s' 2>/dev/null" ascii $apk2 = "am start -n '%s/.MainActivity' 2>/dev/null" ascii $cron = "* * * * * root [ -x /proc/self/exe ] && /proc/self/exe" ascii $wd = "/dev/watchdog0" ascii $tsrc = "TSource Engine Query" ascii condition: uint32(0) == 0x464c457f and 4 of them } |