Як Host-tracker допоміг оперативно виявляти шкідливий код

Наш сервіс моніторингу сайтів, окрім доступності серверів, дозволяє також моніторити контент сайту. Наприклад, якщо необхідно отримувати повідомлення про те, що на сайті з'явилося певне ключове слово, або навпаки, за його відсутності. Сьогодні хочемо розповісти, як за допомогою Host-tracker наш клієнт боровся з виявленням шкідливого коду, щоб не потрапляти в бан Яндекса.

допоміг
Виклад від імені клієнта:

Сайт потрапив у бан Яндекса
Виявлення шкідливого коду

Сайт природно відразу ж був перевірений різними антивірусами онлайн, але ніяких загроз виявлено не було. Після цього я подумав, що це якесь непорозуміння і написав листа на підтримку Яндекса, з проханням прояснити ситуацію, вказавши, що онлайн антивіруси не знайшли жодних загроз. Вони відповіли, що на сайті заражений один із файлів — common.js. Ще я звернув увагу, що з головної сторінки з'явилися посилання на якісь «ліві» сайти. Припускаю, якась біржа посилань знайшла непоганий метод продавати посилання власників, що нічого не підозрюють. Відкривши файл, я дійсно виявив у ньому шкідливий код: />.

Боротьба зі шкідливим кодом

Зрадівши такому легкому вирішенню проблеми, я взяв файл зі старого бекапа, залив на сервер і відписав Яндексу, що все виправив, можна прибирати з бана. Яндекс дійсно прибрав сайт з бана, і в панелі вебмайстра було вказано, що все ОК. Але минуло кілька днів і картина повторилася. Я відразу перевірив файл, який був заражений раніше, переконався, що шкідливий код там і замінив файлом з бекапа. Після одразу написав хостеру, що в мене така проблема. Вони відповіли, що проблема тільки в мене, а в них все гаразд, порадили поміняти паролі на панель адмін, ftp і до бази. Я це все виконав, підклав чистий файл збекапа, але пройшло буквально кілька годин і файл знову заражений.

Знайшов на форумах опис такої самої проблеми. Народ описував самі симптоми і самі методи боротьби. Мало того, один із постраждалих запропонував хостеру поміняти на пару днів усі його паролі, щоб він їх не знав, і переконатися хостеру, що шкідливий код з'являється. Одним словом хостер визнав, що є проблема на їхньому боці і вони намагаються її вирішити.

Термінів вирішення проблеми не було озвучено, і сайт постійно потрапляв у бан Яндекса і відповідно за цей час втратив позиції у видачі.

Пошук за контентом

До конкретних файлів, які знав, що заражаються майже кожні пару годин використовував функцію Host-tracker – пошук за контентом. Вибрав Http перевірку, прописав URL: шлях до файлу mysite***/common.js, який постійно заражався, прописав моніторити за ключовим словом «iframe», яке було у ворожому коді, вибрав:всі ключові слова повинні бути відсутніми сторінці. Тепер, коли ворожий код з'являвся, мені надходило SMS та повідомлення на e-mail буквально за хвилину (вибрав інтервал опитування 1 хв).

допоміг
Спершу доводилося самостійно оперативно виправляти, щоб Яндекс не банив. Потім звернув увагу, що надходить повідомлення, що common.js містить шкідливий код, і буквально за кілька хвилин файли вже без шкідливого коду. Хостер нарешті почав самостійно лікувати файли. Це тривало ще кілька днів, поки повідомлення про зараження не прийшли.

Перевірка контрольної суми

Для себе додатково реалізував простий метод контролю зміни файлів *.js: Файли повинні бути будь-якого ворожого коду. Зберігаємо, наприклад, вранці контрольну суму файлів із потрібним розширенням .js, .php тощо. find. -type f -name"*.js" -exec md5sum <> \; > file-js1.txt і повторюємо процедуру ввечері find. -type f -name "*.js" -exec md5sum <> \; > file-js2.txt потім звіряю два цих файли на розбіжність у контрольних сумах: diff -u file-js1.txt file-js2.txt. Якщо змінилося, перевіряю причину зміни файлів.

Після цього випадку я знайшов кілька автоматизованих рішень, які дають змогу відстежувати зміни за певними типами файлів, і користуюся ними.