Критическая уязвимость панели управления VestaCP, обновление панели на VDS или сервере

Вирус XOR DDoS, лечение

Печально известный линукс-троянец XOR DDoS (https://en.wikipedia.org/wiki/Xor_DDoS, также называемый Unix.Trojan.DDoS_XOR-1, Linux/Xorddos), который ранее размножался обычно через брут-форс подбор простых или словарных паролей SSH, в начале апреля 2018 получил новый способ распространения.

Он эксплуатирует недавно найденную критическую уязвимость в VestaCP, позволяющую с легкостью получать root-права (независимо от ssh или операционной системы на VPS или выделенном сервере: Ubuntu, CentOS, Debian и т.д.).

Чаще всего ботнет, создаваемый XOR DDoS, используется для DDoS-атак (причем с максимальной силой, которую позволяет исходящий канал и ресурсы зараженного сервера/VDS). Тема подробно обсуждается на официальном форуме поддержки Vesta Control Panel здесь: https://forum.vestacp.com/viewtopic.php?f=10&t=16556

Таким образом, если вы используете Vesta и у вас наблюдаются все или некоторые следующие признаки:

  • в последние несколько суток создавала необычно большое количество исходящего трафика
  • часто была недоступна (из-за перегрузки канала ddos-трафиком)
  • блокировался провайдерами за исходящие атаки

то вероятно, что ваша система заражена XOR DDoS.

Из этой статьи вы узнаете:

  1. как обновить панель управления Vesta, чтобы закрыть уязвимость (а также обновлять вашу ОС)
  2. что делать, если ваш сервер с VestaCP заражен вышеуказанным трояном Xor DDoS

Обновление VestaCP (безопасны версии начиная с 0.9.8-20)

Его следует произвести в первую очередь, даже при отсутствии заражения. Делается это под рут-пользователем командой:

v-update-sys-vesta-all

Если нужно (в зависимости от предыдущей версии Vesta), команда запросит перезагрузку сервера.

Бывает, что (как правило из-за устаревшей Весты) вышеуказанная команда не срабатывает. Тогда сначала надо произвести:

CentOS:

yum makecache fast
yum update vesta vesta-php vesta-nginx

Debian/Ubuntu:

apt-get update
apt-get upgrade vesta vesta-php vesta-nginx

Заодно полезно обновить ОС до актуального состояния хотя бы в плане безопасности (впрочем, не делайте этого, если вы на 100% не уверены в последствиях, и у вас нет резервных копий важных данных с сервера).

CentOS:

yum update-minimal --security

либо можно поставить плагин yum-security, который позволяет апгрейдить все ПО, в соответствии с определенными CVE (http://cve.mitre.org/):

yum install yum-security

и далее, например:

yum update --cve CVE-2008-0947

Debian/Ubuntu:

grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s

Нахождение и удаление вируса XOR DDoS

Оно также делается в SSH c root-правами. Введите:

find /etc -name gcc.sh

Если файл gcc.sh найден (часто он находится в /etc/cron.hourly/gcc.sh) - это означает, что искомый троянец есть на сервере. Убедитесь, что у вас есть резервная копия всех важных данных с сервера и приступайте к «лечению».

а) защитим найденный файл от выполнения и модификаций командами (это должно предохранить сервер от повторных заражений той же версией трояна):

chmod 0 /etc/cron.hourly/gcc.sh
chattr +ia /etc/cron.hourly/gcc.sh
chattr +i /etc/crontab

б) найдем процессы вируса:

lsof -n | grep /tmp/update

Если команда выведет наличие нескольких процессов (после которых идет их числовой идентификатор - pid, например, 54522), запомните его.

Заморозим найденный процесс:

kill -STOP 54522

Удалим файлы (предварительно вы можете скопировать их в другое место и исследовать):

rm -f /tmp/update
rm -f /etc/init.d/update
rm -f /lib/libudev.so

Уничтожим вирусный процесс:

kill -9 54522

Повторный поиск lsof -n | grep /tmp/update теперь не должен выдавать новые процессы троянца XOR DDoS.

в) проверим наличие другой модификации вируса (здесь покажутся 20 файлов, модифицированных последними):

ls -lt /usr/bin | head -20
-rwxr-xr-x 1 root root    625620 апр  8 04:01 xghjthghdd
-rwxr-xr-x 1 root admin   625622 апр  6 21:25 tyhgggiukl
...

Запомним размер этих файлов (т.к. их имена меняются) и заморозим их процессы:

kill -STOP `lsof -n | egrep "625620|625622" | grep -v deleted| awk '{print $2}' | uniq`

Просмотрим их идентификаторы (pid):

lsof -n | egrep "625620|625622"

Удаляем:

rm -f /usr/bin/xghjthghdd
rm -f /usr/bin/tyhgggiukl
rm -f /lib/libudev.so

Уничтожим процессы:

kill -9 `lsof -n | egrep "625622|625633" | awk '{print $2}' | uniq`

Проверяем /etc/init.d – там бывает код вируса, который желательно вычистить. Также нужно проверить и при необходимости удалить /etc/init.d/update Также проверьте вывод:

ls -lt /etc/init.d | head -100

и удалите подозрительные файлы.

Готово: XOR DDoS удален. Проверьте сервер на подозрительные процессы через top, ps, статистику по трафику.