Сайт в порядке, а клиентов уводит на казино: как проверить на вирусы
Если сайт у вас открывается нормально, но клиенты жалуются на редиректы, проверять его надо глазами гостя: откройте сайт с телефона из поисковой выдачи, загляните в раздел безопасности Яндекс Вебмастера, просканируйте файлы на сервере и сверьте их с чистой копией CMS. Вирус часто прячется от владельца.
🕵️ клиент видит казино, а вы видите обычный сайт
Типовая история. Оптовая компания в Москве продаёт стройматериалы, заявки приходят с сайта и из поиска. В пятницу менеджер пересылает руководителю сообщение клиента из Telegram: «Перешёл к вам с Яндекса, на телефоне открылось казино». Руководитель открывает сайт с рабочего компьютера: каталог, цены, форма заявки, всё на месте. Пробует ещё раз, потом с ноутбука. Чисто. Решает, что клиент перепутал ссылку.
Клиент ничего не путал. Вредоносный скрипт проверяет, кто пришёл. Администратор с авторизацией, посетитель без перехода из поиска и робот онлайн-сканера получают нормальную страницу, а человек с телефона, пришедший из выдачи, получает редирект. Злоумышленнику выгодно, чтобы владелец как можно дольше ничего не замечал, поэтому код прячется именно от тех, кто будет проверять. Приём называется клоакингом, и проверка «открыл главную, всё в порядке» его не ловит.
💸 что теряет бизнес, пока сайт чист на вид
Заражённый сайт не падает, поэтому живёт с вирусом неделями. Всё это время копятся потери.
- ✓Поисковик замечает редиректы и спам-страницы, может показать в выдаче предупреждение об опасном сайте или опустить позиции. Заявки из поиска тихо сходят на нет, а причину ищут в рекламе и у конкурентов.
- ✓Хостинг может заблокировать аккаунт, если с сервера уходит спам или идёт атака на чужие сайты. Сайт отключится посреди рабочего дня.
- ✓Браузер показывает красную страницу вместо вашей. Клиент не станет разбираться, чья это вина.
- ✓Скрипт в форме заявки пересылает ФИО и телефоны на чужой адрес. Это утечка персональных данных: по 152-ФЗ оператор обязан уведомить Роскомнадзор в течение 24 часов с момента, как узнал об инциденте, а итоги внутреннего расследования передать в течение 72 часов.
Чем дольше живёт заражение, тем больше мусорных страниц попадает в индекс и тем дольше потом их выводят из выдачи.
📱 шаг 1: откройте сайт так, как его открывает клиент
Повторите путь клиента буквально. Возьмите телефон, отключите офисный Wi-Fi и откройте Яндекс по мобильному интернету. Некоторые скрипты не трогают адреса, с которых заходит владелец, поэтому офисную сеть лучше исключить. Введите название компании и перейдите на сайт из выдачи, а не по закладке. Затем повторите то же с компьютера в режиме инкогнито.
Зайдите на главную, в каталог, в статью блога и на страницу контактов. Часть скриптов срабатывает только на внутренних страницах и только один раз для каждого посетителя, поэтому после первого перехода закрывайте вкладку и начинайте заново с другой ссылки из выдачи.
Потом нажмите Ctrl+U, чтобы открыть исходный код страницы, и поищите через Ctrl+F слова eval, base64, fromCharCode и iframe. Находка ещё не приговор: часть легальных скриптов использует те же конструкции. Настораживают подключения с незнакомых доменов и длинные нечитаемые строки в самом начале или в конце страницы.
🔎 шаг 2: спросите у поисковика, что он видит
Введите в Яндексе запрос site:ваш-домен.ru и пролистайте выдачу. Страницы про казино, кредиты или лекарства, иероглифы в заголовках и адреса, которых нет в вашей структуре, означают одно: кто-то создаёт страницы за вас. Если в индексе заметно больше страниц, чем в каталоге, причина та же.
Затем откройте Яндекс Вебмастер, раздел «Безопасность и нарушения», и Search Console, раздел «Проблемы безопасности». Поисковый робот видит сайт под своим углом и иногда замечает подмену раньше владельца: в отчёте указан тип проблемы и примеры страниц. Если сайт ещё не добавлен в Вебмастер, добавьте его сегодня. Подтверждение прав занимает несколько минут, а без Вебмастера о проблеме вы узнаете от клиентов, как в истории выше.
🗂️ шаг 3: найдите на сервере файлы, которые никто не создавал
Здесь нужен доступ к файлам сайта через панель хостинга, FTP или SSH. Идите по порядку.
- ✓Отсортируйте файлы по дате изменения. Если ядро CMS и плагины обновлялись месяц назад, а PHP-файл в корне изменён вчера в три часа ночи, начинайте с него.
- ✓Загляните в папку загрузок (для WordPress это wp-content/uploads). Там лежат картинки и документы, PHP-файлов быть не должно.
- ✓Откройте .htaccess в корне и в подпапках. Редиректы только для мобильных пользователей и только для переходов из поиска прописывают через условия HTTP_USER_AGENT и HTTP_REFERER. Если вы таких правил не писали, вы нашли источник.
- ✓Сверьте ядро с чистым дистрибутивом. Для WordPress подойдёт команда wp core verify-checksums в WP-CLI, для других CMS нужна эталонная копия из официального архива.
- ✓Проверьте список администраторов в админке и в базе данных. Лишняя учётная запись означает, что доступ уже получен.
Частый источник заражения: платные темы и плагины, скачанные с торрент-сайтов. Закладка приходит вместе с ними. Второй путь попроще: пароль от FTP, который когда-то выдали подрядчику и так и не сменили.
⚖️ чем проверять: четыре способа и то, что каждый пропускает
Ни один способ не закрывает всё. В таблице видно, что находит каждый и где слепнет.
| Способ | Что находит | Что пропускает | Когда хватает |
|---|---|---|---|
| Онлайн-сканер по адресу сайта | Известные вредоносные ссылки, чёрные списки, видимые скрипты на открытых страницах | Код, который прячется от роботов и чужих адресов, файлы-закладки на сервере | Быстрая первичная проверка |
| Вебмастер поисковиков | Подмену контента для робота, спам-страницы в индексе | Заражение, которое поисковик ещё не заметил, и скрипты, нацеленные на людей | Постоянный мониторинг и подтверждение, что проблема снята |
| Сканер на хостинге (ImunifyAV и аналоги) | Файлы с известными сигнатурами вирусов по всему каталогу сайта | Закладки, переписанные вручную, и заражение в базе данных | Регулярная профилактика |
| Ручной разбор специалистом | Файлы, базу, логи доступа, лишние учётные записи, путь входа | Мало что, если есть доступ к серверу и логам; без доступов проверка неполная | Клиенты жалуются, а сканеры молчат |
Бесплатные сканеры хорошо ловят то, что лежит на поверхности. Скрытое заражение, как в истории выше, они обычно пропускают: робот сканера получает чистую страницу так же, как владелец. Ответ «сканер ничего не нашёл» закрывает вопрос, только если клиенты не жалуются. Если жалуются, нужен ручной разбор, так устроен аудит сайта.
🧹 нашли заражение: что сделать до чистки
Чистить файлы сразу — типичная ошибка. Заражение возвращается через ту же дыру, а следы входа исчезают. Порядок такой.
- ✓Сделайте копию файлов и базы в том виде, как есть. Она нужна для поиска входа и на случай, если вместе с вирусом удалится нужное.
- ✓Смените все пароли: админка сайта, FTP и SSH, панель хостинга, база данных. Завершите старые сессии, включите двухфакторную защиту там, где она есть.
- ✓Удалите закладки и лишних администраторов, верните ядро CMS из чистого дистрибутива, обновите плагины, а неиспользуемые удалите.
- ✓Найдите вход по логам: какой файл появился первым и с какого адреса пришёл запрос. Без этого заражение вернётся.
- ✓Когда убедитесь, что сайт чист, запросите повторную проверку в Вебмастере и просмотрите индекс на спам-страницы.
Если на сайте собирали персональные данные, вопрос с уведомлением Роскомнадзора решайте в первые сутки, а не после чистки.
🛡️ когда проверку лучше отдать специалисту
Первые два шага вы сделаете сами за вечер. Третий требует доступа к серверу, знания структуры CMS и умения читать логи. Ошибка в нём дорого стоит: удалённый нужный файл роняет сайт, а пропущенная закладка возвращает вирус через неделю.
В аудите сайта на ukved.ru мы идём тем же путём, что описан выше: открываем сайт как мобильный гость из поиска, смотрим на него глазами поискового робота, сверяем файлы и базу с эталоном, ищем лишние учётные записи и следы входа в логах. Сканер называет найденные файлы. Отчёт аудита добавляет к ним путь, которым вирус попал на сайт, и порядок исправлений, чтобы заражение не вернулось.
Условия и цены опубликованы на странице цены и тарифы, посмотрите их до обращения. А если клиент снова пришлёт скриншот с казино, сохраните его вместе со временем и типом устройства: по этим данным проще понять, при каких условиях срабатывает код.
❓ Частые вопросы
Как понять, что сайт заражён, если я сам ничего не вижу?
Откройте сайт с телефона по мобильному интернету и перейдите на него из поисковой выдачи. Введите в Яндексе site:ваш-домен.ru и найдите страницы, которых вы не создавали. Посмотрите раздел «Безопасность и нарушения» в Яндекс Вебмастере и файлы на сервере с недавней датой изменения. Совпадение хотя бы по одному признаку повод проверить глубже.
Можно ли проверить сайт на вирусы бесплатно онлайн?
Можно: онлайн-сканеры по адресу сайта и сканеры на хостинге бесплатны или входят в тариф. Они находят известные вирусы и ссылки из чёрных списков. Скрытое заражение, которое прячется от роботов и чужих адресов, они часто пропускают, поэтому ответ «чисто» не отменяет проверки с телефона и отчётов Вебмастера.
Как часто проверять сайт на вирусы?
Раз в месяц просматривайте отчёты Вебмастера и список изменённых файлов, а после каждого обновления CMS, плагинов или смены подрядчика проверяйте сайт заново. Если у сайта есть формы с персональными данными или интернет-магазин, настройте автоматический сканер на хостинге и уведомления Вебмастера на почту.
Что делать, если Яндекс пометил сайт как опасный?
Сначала найдите и уберите заражение, и только потом просите перепроверку. Сохраните копию, смените пароли, удалите вредоносные файлы и закройте уязвимость, через которую зашли. Затем в разделе «Безопасность и нарушения» Яндекс Вебмастера запросите повторную проверку. Пока вход не закрыт, пометка вернётся, а повторные запросы ничего не изменят.
Нужно ли сообщать в Роскомнадзор, если сайт взломали?
Если через сайт утекли персональные данные клиентов, оператор обязан уведомить Роскомнадзор в течение 24 часов с момента, как о происшествии стало известно, и передать итоги внутреннего расследования в течение 72 часов. Это следует из 152-ФЗ. Если данные не затронуты, уведомление не требуется, но факт взлома стоит зафиксировать.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

