Заражение web сервера вирусом криптомайнером

На днях мне довелось впервые познакомиться с вирусом, который пытался майнить криптовалюту на одном из серверов, за которым я приглядывал. Сама история обнаружения и лечения веб сервера от этого вируса не представляет какого-то особенного интереса. Тем не менее я решил поделиться опытом общения с новым для меня зловредом.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Симптомы заражения

Все началось как обычно - с сообщения от мониторинга zabbix о том, что на сервере повышенная нагрузка на CPU. Сразу скажу, что мониторинг - лучший друг в борьбе с вирусами. Без его помощи можно вообще не узнать, что у вас что-то случилось.

Кратенько расскажу о сервере. Этот веб сервер несет на себе очень старые сайты на популярных движках. Многие из этих сайтов давно не обновлены, в них есть уязвимости, которые периодически используют злоумышленники и заливают вирусы. То, что можно было и имело смысл обновить - обновили, но далеко не все. Это просто неоправданно дорого и бесполезно в данном случае. Я перенес в свое время все эти сайты на отдельный веб сервер, где все пакеты и сама система имеют свежие версии и оперативно обновляются. Тем не менее, это не сильно спасает от периодических проблем, которые я закрываю в ручном режиме.

В данном случае первой ласточкой был вирус, рассылающий спам. Я зашел на сервер и увидел огромную очередь писем на отправку. Почтовый лог был забит информацией. Я сразу же остановил и отключил postfix, так как он там по большому счету не нужен. Отправка писем ведется через внешний smtp.

Сразу же дам рекомендацию отключать почтовые сервера там, где на сервере они не нужны. Это избавит от лишних хлопот и проблем в будущем.

В разделе /tmp заметил левые файлы с владельцем apache. Удалил их. Времени подробно разбираться с сервером не было и я отложил это дело, но снизил метрики в мониторинге, чтобы сразу заметить малейшее увеличение нагрузки выше среднего.

В следующую ночь на сервере опять были странности, которые я сразу же заметил утром по мониторингу. Сервер - виртуальная машина с одним процессором. В стандартном шаблоне заббикс срабатывает триггер, если load average держится выше 5-ти, что для однопроцессорного сервера очень много. Я перед этим снизил порог срабатывания до 0.5, это и позволило мне своевременно среагировать. Нагрузка была примерно 1-1.5, что не позволило бы сработать стандартному триггеру.

Мониторинг сервера при заражении вирусом

Злоумышленники ведут себя очень грамотно. Выражается это в том, что они запускают свои вирусы глубокой ночью, когда администраторы спят. Ты реагируешь только утром, в итоге у вируса есть несколько часов, чтобы сделать то, что от него требуется. За это время можно разослать тысячи спамовых писем.

В общем, получилось такая история. Сервер был каким-то образом заражен. Сначала был запущен вирус, который рассылал спам. После того, как я его удалил, в дело пошла вторая очередь. Вторым вирусом, о котором я рассказываю, оказался криптомайнер. Ниже расскажу, почему я так решил.

Поиск криптомайнера

Долго искать вирус мне не пришлось. По загрузке процессора в htop сразу же были найдены файлы опять же в директории /tmp, которые создавали нагрузку.

Загрузка процессора вирусом криптомайнером

Вирус крипто майнер

Содержание одного из файлов навело на мысль о том, что эти файлы делают:

threads = 1

mine = stratum+tcp://44FpmYtxaYgKSDCt8iuYTGLKfWdPDpi64a38SnfHunFXbkNbnsX473yGcrqhCL3NhZ2MZ9YNpGwPsbxaJULJrSSAFd3Yx8o:x@xmr.crypto-pool.fr:3333/xmr

Как я понял, тут указан один из пулов, куда отправлять намайненное. Я быстро позакрывал лишние процессы и удалил файлы.

Стало очевидно, что надо искать источник заражения и перекрывать его. Сервер явно попал в оборот какой-то ботнет сети. Изначально его использовали для рассылки спама. После того, как я перекрыл эту возможность, на нем стали майнить криптовалюту. И все это происходит ночью, когда я сплю :)

Удаление вируса майнера

У меня каждый день делается бэкап всех сайтов. Я всегда рекомендую его делать не реже, чем раз в сутки. Беглое сравнение файлов на веб сервере и в архиве показало заражение как минимум двух сайтов. Кто из них в итоге был виновником, а может и оба сразу, неизвестно.

Я прогнал сайты антивирусом для веб хостинга ai-bolit. Он показал множество зараженных файлов. Более детальное изучение показало, что они вообще не имеют отношение к сайтам. В определенное время они были загружены на сервер и потом использовались.

Сканирование сайта на вирусы

Чтобы понять, через какой сайт идет заражение и управление вирусами - смотрите логи сервера. Явным признаком заражения - POST запросы к левым файлам.

5.9.31.30 - - [03/Dec/2017:11:17:57 +0300] "POST /ewcvqw HTTP/1.1" 200 36

Можно банить ip, с которых идут запросы. Но мне кажется, это не даст большого результата. Файлы время от времени меняются, как и ip адреса.

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

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

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

8 комментариев

  1. Константин

    Интересно, а был бы эффект от "мести"? То есть, оставить вирус, но немножко подправить, чтоб отсылал неверные результаты. Плохо представляю, как работает распределенное вычисление криптовалюты, но если малюсенькая одоля ошибочных данных сводило бы на нет весь процесс вычислений, месть была бы зачетная.

    • Вряд ли это имеет смысл, так как первое, что нужно сделать - снять нагрузку с сервера, чтобы он мог нормально работать. Генерировать ложные данные себе убыток - сервер то тормозит :) Да и вряд ли это как-то навредит. Это все автоматизировано, работают десятки и сотни серверов. От того, что побьются данные с одного сервера, никакого эффекта не будет.

  2. Аноним

    лол, ктож разрешает запускаться бинарникам из /tmp раздела!!

  3. Для апача есть mod_ruid2 или suexec, главное правильно настроить...

  4. Я когда то ставил GIT, что бы отслеживать изменения в файловой системе сайтов.
    Сейчас все сайты так же разнесены по контейнерам (docker).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar