Как cwpdoor выполняет команды на серверах CWP, не оставляя записей в логах?

Исследователи XLab компании QiAnXin обнаружили бэкдор cwpdoor в веб-сервере cwpsrv, который входит в бесплатную панель Control Web Panel (CWP) для управления Linux-хостингом. Модифицированная программа принимает команды через веб-запросы и выполняет их, не записывая сами запросы в журнал доступа.
Как cwpdoor выполняет команды на серверах CWP, не оставляя записей в логах?
Изображение носит иллюстративный характер

Для установки вредоносного компонента нужны права root. Как злоумышленники получают их, XLab не выяснила. Это важная граница известного: найденный бэкдор позволяет скрытно управлять сервером, но сам по себе не объясняет, как атакующие впервые проникают на него.
29 июня исследователи перехватили установщик, замаскированный под скрипт обновления. Он рассчитан на версии cwpsrv 1.15.10 и 1.24.0 и заменяет исполняемый файл сервера на модифицированный. 30 сентября архив с копией бэкдора загрузили на VirusTotal из Бразилии. По оценке XLab, это означает, что «в реальной среде уже есть пострадавшие серверы». Число заражений исследователи не оценили.
В обычном режиме подменённый cwpsrv ведёт себя как легитимная программа. Бэкдор активируется, если запрос содержит корректные временную метку и подпись, а также специальные HTTP-заголовки, начинающиеся с X-Ngx-Integrity. Тогда команда из запроса передаётся на выполнение.
Установщик сохраняет исходные даты файла после замены. Поэтому обычные проверки через ls и stat могут показывать, будто cwpsrv не менялся. На момент проверки XLab файл не обнаруживался ни одним из 63 антивирусных движков VirusTotal.
Для поиска заражения исследователи предлагают проверить Unix-сокет, процессы и содержимое файла:
    [] ss -axp | grep integrity — появление ngx_http_integrity_helper указывает на сокет, используемый бэкдором.
    [] ps aux | grep cwpsrv — следует искать неожиданные вспомогательные процессы, запущенные cwpsrv.
    [] strings /usr/local/cwpsrv/bin/cwpsrv | grep X-Ngx-Integrity — команда проверяет наличие характерных имён заголовков.
В примере XLab проверка сокета выявила бэкдор, хотя список открытых портов сервера выглядел обычным. Поэтому нормальный вывод сетевой проверки сам по себе не исключает заражение.
Опубликованные индикаторы компрометации:
    [] MD5 установщика cwpsrv_update.sh: e505d4ffa21cf494a5dc2d7c8f4f1236
    [] MD5 заражённого cwpsrv 1.15.10: 965aea67fb40de1bab5169ada993349f
    [] MD5 заражённого cwpsrv 1.24.0: d3f4e95113d49ab3991b45e457bda75b
    [] IP сервера загрузки: 136.0.141[.]71
    [] URL установщика: https://136.0.141[.]71/static/cwpsrv_update.sh
    [] URL файла для версии 1.15.10: https://136.0.141[.]71/static/cwpsrv_1.15.10
    [] URL файла для версии 1.24.0: https://136.0.141[.]71/static/cwpsrv_1.24.0
Заражённый cwpsrv исследователи советуют заменить резервной копией из /usr/local/cwpsrv/bin. Её имя начинается с cwpsrv.prev- и заканчивается датой и временем. Но установщик, согласно своему описанию, после успешной замены удаляет «временные файлы и резервную копию», так что нужного файла может уже не быть. После восстановления следует обновить CWP до последней версии и убедиться, что ss -axp | grep integrity ничего не выводит.
Поскольку cwpdoor способен выполнять произвольные команды, заражённый сервер следует считать полностью скомпрометированным: нужно сменить все учётные данные Control Web Panel и проверить систему на другие угрозы. В том же архиве из Бразилии нашли Ebury — бэкдор для OpenSSH, который также похищает учётные данные и действует как минимум с 2009 года. Связаны ли Ebury и cwpdoor, неизвестно: по версии XLab, их могли установить разные злоумышленники на один сервер.


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

Ссылка