Днями мені довелося вперше познайомитися з вірусом, який намагався Майні криптовалюта на одному з серверів, за яким я наглядав. Сама історія виявлення та лікування веб сервера від цього вірусу не представляє якогось особливого інтересу. Проте я вирішив поділитися досвідом спілкування з новим для мене зловредів.
симптоми зараження
Все почалося як завжди - з повідомлення від моніторингу zabbix про те, що на сервері підвищене навантаження на CPU. Відразу скажу, що моніторинг - кращий друг в боротьбі з вірусами. Без його допомоги можна взагалі не впізнати, що у вас щось трапилося.
Коротенько розповім про сервер. Цей веб сервер несе на собі дуже старі сайти на популярних движках. Багато з цих сайтів давно не оновлені, в них є уразливості, які періодично використовують зловмисники і заливають віруси. Те, що можна було і мало сенс оновити - оновили, але далеко не все. Це просто невиправдано дорого і марно в даному випадку. Я переніс свого часу всі ці сайти на окремий веб сервер, де все пакети і сама система мають свіжі версії і оперативно оновлюються. Тим не менш, це не сильно рятує від періодичних проблем, які я закриваю в ручному режимі.
В даному випадку першою ластівкою був вірус, що розсилає спам. Я зайшов на сервер і побачив величезну чергу листів на відправку. Поштовий лог був забитий інформацією. Я відразу ж зупинив і відключив postfix, так як він там за великим рахунком не потрібен. Відправка листів ведеться через зовнішній smtp.
Відразу ж дам рекомендацію відключати поштові сервера там, де на сервері вони не потрібні. Це позбавить від зайвого клопоту і проблем в майбутньому.
У розділі / tmp зауважив ліві файли з власником apache. Видалив їх. Часу детально розбиратися з сервером не було і я відклав цю справу, але знизив метрики в моніторингу, щоб відразу помітити найменше збільшення навантаження вище середнього.
У наступну ніч на сервері знову були дивні речі, які я відразу ж помітив вранці з моніторингу. Сервер - віртуальна машина з одним процесором. У стандартному шаблоні заббікс спрацьовує тригер, якщо load average тримається вище 5-ти, що для однопроцесорного сервера дуже багато. Я перед цим знизив поріг спрацьовування до 0.5, це і дозволило мені своєчасно зреагувати. Навантаження була приблизно 1-1.5, що не дозволило б спрацювати стандартному триггеру.
Зловмисники поводяться дуже грамотно. Виражається це в тому, що вони запускають свої віруси пізно вночі, коли адміністратори сплять. Ти реагуєш тільки вранці, в результаті у вірусу є кілька годин, щоб зробити те, що від нього вимагається. За цей час можна розіслати тисячі спамових листів.
Загалом, вийшло така історія. Сервер був якимось чином заражений. Спочатку був запущений вірус, який розсилав спам. Після того, як я його видалив, в справу пішла друга черга. Другим вірусом, про який я розповідаю, виявився кріптомайнер. Нижче розповім, чому я так вирішив.
Пошук кріптомайнера
Довго шукати вірус мені не довелося. За завантаженні процесора в htop відразу ж були знайдені файли знову ж в директорії / tmp, які створювали навантаження.
Утримання одного з файлів навело на думку про те, що ці файли роблять:
threads = 1 mine = stratum + tcp: // 44FpmYtxaYgKSDCt8iuYTGLKfWdPDpi64a38SnfHunFXbkNbnsX473yGcrqhCL3NhZ2MZ9YNpGwPsbxaJULJrSSAFd3Yx8o: [email protected]: 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 контейнерів, щоб убезпечити сам сервер і сусідні сайти від зараження. Так я зможу більш точно визначати джерело зараження. На жаль, більш дієвого способу захисту старих сайтів від зараження різними вірусами я не знаю.
Не сподобалася стаття і хочеш навчити мене адмініструвати? Будь ласка, я люблю вчитися. Коментарі в твоєму розпорядженні. Розкажи, як зробити правильно!
Допомогла стаття? Є можливість віддячити автора
Не сподобалася стаття і хочеш навчити мене адмініструвати?Допомогла стаття?