Милые панды, злой код. JPEG‑картинка оказалась входным билетом для rootkit на Linux

Милые панды, злой код. JPEG‑картинка оказалась входным билетом для rootkit на Linux

Ни одного файла, ни одного намёка — однако процесс уже запущен и идёт полным ходом.

image

Необычная атака на Linux-серверы раскрыла новый уровень маскировки вредоносных программ — и, возможно, её искусственное происхождение. Исследователи из AquaSec задокументировали зловред под названием Koske, скрывающийся в, казалось бы, безобидных изображениях панд и использующий адаптивную логику, которая, по мнению специалистов, могла быть сгенерирована с помощью больших языковых моделей или автоматизированных систем.

Koske отличается тем, что запускается напрямую в оперативной памяти без записи на диск, используя файлы в формате polyglot — структуру, позволяющую одному и тому же объекту быть как изображением, так и исполняемым скриптом. В частности, вредоносный код размещён в конце JPEG-файлов, содержащих фотографии панд. Визуально они ничем не отличаются от обычных картинок, однако, если их обработает интерпретатор командной строки, система исполняет встроенный скрипт.

Проникновение начинается с эксплуатации неправильно настроенных экземпляров JupyterLab, доступных через интернет. Получив доступ, злоумышленник загружает две таких картинки с популярных хостингов — OVH images, freeimage и postimage. В каждой из них спрятан отдельный компонент: первый — это фрагмент на C, который компилируется прямо в памяти и действует как rootkit; второй — shell-скрипт, обеспечивающий незаметную работу и сохранение доступа.

Shell-компонент использует встроенные утилиты Linux для запуска и закрепления в системе. Он настраивает системные службы и задачи cron с интервалом в 30 минут, что обеспечивает стабильное повторное выполнение. Для уклонения от сетевых фильтров и прокси-ограничений переписывается файл /etc/resolv.conf, блокируется его изменение через chattr +i, обнуляются правила iptables, сбрасываются переменные прокси, а также запускается собственный модуль подбора рабочих прокси-серверов с помощью curl, wget и TCP-запросов.

Rootkit-компонент действует как расширение, подгружаемое через LD_PRELOAD. Он перехватывает вызовы readdir() и скрывает определённые процессы и файлы, содержащие ключевые строки вроде «koske» или «hideproc», а также использует дополнительный список идентификаторов, хранящийся в /dev/shm/.hiddenpid. Такой подход исключает обнаружение большинства пользовательских утилит мониторинга.

После установления стабильного присутствия вредонос загружает криптомайнеры с GitHub. Перед этим Koske проверяет аппаратные характеристики устройства: тип и мощность процессора и видеокарты. Выбор производится из набора под 18 различных криптовалют — среди них такие как Monero, Ravencoin, Zano, Nexa и Tari, известные своей анонимностью.

Каждой валюте сопоставлены резервные пулы — в случае недоступности основного Koske автоматически переключается, что подчёркивает высокий уровень автономности и гибкости.

Исследователи отметили сербские IP-адреса, используемые в атаках, сербские фразы в скриптах и словацкие элементы в репозиториях на GitHub. Однако прямой связи с какой-то конкретной группировкой установить не удалось. Специалисты подчёркивают, что уровень адаптации и скрытности Koske указывает на использование ИИ либо в процессе написания кода, либо в автоматизации разработки. Это может свидетельствовать о новом этапе эволюции вредоносного ПО — с повышенной автономией, возможностью самооптимизации и минимальной потребностью в ручном управлении.