Магический пакет TCP активирует невидимый руткит LinkPro

Специалисты по безопасности из компании Synacktiv обнаружили новый многофункциональный руткит для GNU/Linux, написанный на языке Golang и получивший название LinkPro. Вредоносное ПО было выявлено в ходе расследования взлома инфраструктуры Amazon Web Services (AWS). Исследователь Тео Летайер (Théo Letailleur) установил, что ключевыми особенностями руткита являются использование технологии eBPF (extended Berkeley Packet Filter) для сокрытия своей активности и уникальный механизм активации с помощью специально сформированного TCP-пакета.
Магический пакет TCP активирует невидимый руткит LinkPro
Изображение носит иллюстративный характер

LinkPro способен работать в двух режимах: активном (forward) и пассивном (reverse). В активном режиме руткит самостоятельно инициирует соединение с командным сервером (C2), поддерживая протоколы HTTP, WebSocket, UDP, TCP и DNS. В пассивном режиме вредоносное ПО остается незаметным и ожидает «магический пакет» от злоумышленника. Только после получения этого пакета LinkPro начинает прослушивать команды по протоколу HTTP.

Механизм активации в пассивном режиме реализован через модуль eBPF под названием "Knock", который содержит две программы — eXpress Data Path (XDP) и Traffic Control (TC). Этот модуль непрерывно анализирует входящий трафик в поиске TCP-пакета, в заголовке которого значение размера окна (window size) установлено на 54321. Как только такой пакет обнаружен, "Knock" сохраняет IP-адрес отправителя, предоставляя ему доступ к зараженной системе на один час.

После успешной активации модуль "Knock" начинает манипулировать сетевым трафиком для обхода брандмауэров. Он перехватывает все входящие TCP-пакеты с подтвержденного IP-адреса и изменяет их заголовки, подменяя исходный порт назначения на порт 2333, который прослушивает LinkPro. При отправке ответных пакетов от руткита модуль изменяет исходный порт 2233 на тот порт, к которому изначально обращался злоумышленник. Это делает практически невозможным сопоставление логов брандмауэра с реальной сетевой активностью на скомпрометированном сервере.

Для сокрытия своего присутствия в системе LinkPro использует два метода. Основной метод требует наличия в ядре Linux активированной опции CONFIG_BPF_KPROBE_OVERRIDE. В этом случае руткит загружает eBPF-программы типов tracepoint и kretprobe, которые перехватывают системные вызовы getdents для сокрытия своих файлов в списках каталогов и sys_bpf для маскировки собственных BPF-программ от средств анализа.

Если необходимая конфигурация ядра отсутствует, LinkPro прибегает к запасному методу на уровне пользовательского пространства. Он размещает в системе вредоносную разделяемую библиотеку libld.so и прописывает путь к ней в файле /etc/ld.so.preload. Это заставляет все новые процессы загружать данную библиотеку, которая перехватывает стандартные функции libc. Таким образом, утилиты вроде /usr/bin/ls не отображают файлы, процессы и другие артефакты, связанные с работой руткита.

Для обеспечения постоянного присутствия в системе LinkPro создает службу systemd. При получении одного из сигналов прерывания (SIGHUP, SIGINT, SIGTERM) вредоносное ПО запускает процедуру очистки: выгружает свои модули eBPF, удаляет файл libld.so и восстанавливает исходное содержимое файла /etc/ld.so.preload, эффективно заметая следы.

Функционал LinkPro позволяет злоумышленникам выполнять широкий спектр действий на зараженном хосте. Среди поддерживаемых команд: запуск оболочки /bin/bash в псевдотерминале, выполнение произвольных команд, перечисление файлов и каталогов, чтение, запись и удаление файлов, а также загрузка дополнительных файлов. Одной из ключевых возможностей является создание прокси-туннеля SOCKS5, что позволяет использовать скомпрометированный сервер в качестве плацдарма для дальнейших атак.

Расследование показало, что LinkPro является частью сложной цепочки заражения, которая начинается с развертывания вредоносного Docker-образа на базе Kali Linux. Внутри образа находится папка app, содержащая скрипт start.sh для запуска SSH-сервиса и двух других исполняемых файлов.

Первый файл, link, представляет собой модифицированную версию программы с открытым исходным кодом vnt. Он функционирует как VPN-сервер и прокси, подключаясь к командному центру по адресу vnt.wherewego[.]top:29872. Это дает злоумышленникам удаленный доступ к системе. Второй файл, app, является загрузчиком vGet, написанным на языке Rust.

Загрузчик vGet обращается к хранилищу S3 bucket и скачивает оттуда зашифрованную полезную нагрузку под названием VShell. Этот бэкдор, в свою очередь, устанавливает соединение со своим командным сервером по адресу 56.155.98[.]37 через WebSocket. На финальном этапе на узлы Kubernetes развертываются сам руткит LinkPro и дополнительный дроппер с еще одной копией VShell. Атакующая группировка пока не идентифицирована, однако ее мотивы, предположительно, являются финансовыми.


Новое на сайте

20327Кости прерий: как истребление бизонов породило целую индустрию — и сама себя же уничтожила 20326Кто и зачем взламывает серверы Ollama и ComfyUI ради ключей от AWS? 20325Как злоумышленники спрятали командный сервер внутри блокчейна и почему его невозможно... 20324Брюссель заставляет Android делиться секретами с чужими ИИ-помощниками 20323WordPress: как два бага слились в одну критическую дыру, которую назвали wp2shell 20322Как китайские хакеры обманули DigiCert и украли сертификаты для подписи кода? 20321Что скрывается за уязвимостью, которую агентство США внесло в список активно используемых... 20320Автономные системы наступают быстрее, чем инфраструктура для управления ими: кто выиграет... 20319Почему в OpenSSL нашли дыру, съедающую память серверов, но не дали ей даже номер CVE? 20317SonicWall SMA 1000: как два бага превратили VPN-шлюз в бэкдор для атакующих 20316Может ли уязвимость в клиенте Zoom для Windows открыть доступ к чужому аккаунту без... 20315TELEPUZ: новый вредонос на C, который научился прятаться в Telegram, Steam и блокчейне... 20314Дома из дёрна: как исландцы триста лет прятались от холода под слоем земли и травы 20313Как один токен от чужого сервиса мог впустить злоумышленника в чужой аккаунт n8n?
Ссылка