< meta name="referrer" content="origin">
Home » Осторожно, вирус! » Заражение web сервера вирусом криптомайнером

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

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

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

Все началось как обычно — с сообщения от мониторинга 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 контейнерам, чтобы обезопасить сам сервер и соседние сайты от заражения. Так я смогу более точно определять источник заражения. К сожалению, более действенного способа по защите старых сайтов от заражения различными вирусами я не знаю.

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

Помогла статья? Есть возможность отблагодарить автора

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

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

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

  3. Аноним

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

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

Ваш e-mail не будет опубликован.