Бизнес · 7 мин чтения

Сайт заражён вирусом: что делать владельцу - пошаговая инструкция

Сайт заражён вирусом, что делать - вопрос, который прилетает мне обычно не в спокойной обстановке, а когда хостинг уже прислал письмо о блокировке аккаунта, Google Safe Browsing показывает посетителям красный экран с предупреждением, а органический трафик за сутки просел в разы. За практику разбирал десятки таких случаев - от лендингов на Tilda с воткнутым в код зоны скриптом до интернет-магазинов на WooCommerce, где вредоносный код жил в файлах плагина эквайринга больше полугода. Ниже - как отличить реальное заражение от ложной тревоги, как проверить сайт самостоятельно и что делать по шагам, если заражение подтвердилось.

Признаки, что сайт заражён вирусом или взломан

Чаще всего заражение обнаруживают не по логам, а по побочным эффектам, которые видят посетители или поисковики раньше владельца:

  • браузер или антивирус показывает предупреждение при заходе на сайт;
  • сайт или отдельные страницы редиректят на казино, фарму или порно - часто только с мобильных устройств или только из поискового трафика, это называется клоакингом и сильно затрудняет обнаружение;
  • в выдаче Яндекса или Google рядом с сайтом стоят спам-фразы, которых нет на самих страницах - они подставляются заражённым кодом только ботам поисковика;
  • в Яндекс.Вебмастере или Google Search Console появилось уведомление в разделе «Безопасность и нарушения» / Security issues;
  • хостинг прислал письмо о блокировке аккаунта за рассылку спама или сканирование чужих серверов;
  • сайт резко начал тормозить, а нагрузка на CPU выросла без роста трафика - частый признак майнера, запущенного через закладку;
  • в списке администраторов CMS появился пользователь, которого никто не создавал.

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

Как проверить сайт на вирусы и вредоносный код

Первым делом смотрю два бесплатных источника, которые ничего не требуют от владельца, кроме подтверждённого доступа к сайту в панели вебмастера: раздел «Безопасность и нарушения» в Яндекс.Вебмастере и Security Issues в Google Search Console. Если сайт уже попал в чёрный список, там будет написано, что именно нашли и на каких страницах - это экономит часы ручного поиска.

Дальше проверяю файлы напрямую. На хостинге или через SSH сортирую файлы по дате изменения - вредоносный код почти всегда лежит в файлах, изменённых позже, чем последний легитимный релиз темы или плагина:

find /var/www/site -type f -mtime -14 -name "*.php" | xargs ls -la
grep -rl "eval(base64_decode|eval(gzinflate|str_rot13(" /var/www/site/wp-content

Эта связка находит большинство закладок в WordPress: злоумышленники почти всегда прячут код через base64_decode, gzinflate или похожие функции, чтобы антивирусный сканер хостинга не увидел явный вызов подозрительной команды. Дополнительно стоит свериться с оригинальными файлами ядра через wp core verify-checksums - команда сравнивает файлы сайта с эталонными и показывает, что было изменено вручную.

Если доступа к серверу нет или CMS самописная, помогает внешняя проверка через VirusTotal - он прогоняет URL по десяткам антивирусных баз и показывает, кто именно и за что помечает сайт как опасный.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Где чаще всего живёт вирус - WordPress, Tilda и самописные сайты

Путь заражения сильно зависит от движка, и стоит понимать разницу, чтобы не искать вирус там, где его физически не может быть.

Платформа Типичный вход Что обычно делает вирус
WordPress нулленные темы/плагины, устаревшие версии с известными уязвимостями, папка uploads с разрешённым выполнением PHP редиректы, спам-ссылки в футере, майнер, рассылка со взломанной почты
WooCommerce + эквайринг уязвимый плагин оплаты или чекаута скрипт-перехватчик (по типу Magecart), который снимает данные карты с формы до того, как они уйдут в виджет Т‑Банка
Tilda сторонний скрипт в зоне T123/head, добавленный когда-то подрядчиком, либо утечка пароля от аккаунта Tilda подмена ссылок, майнер в браузере посетителя, фейковый виджет отслеживания СДЭК с редиректом на фишинг
Самописные сайты, боты на aiogram токен API или ключ базы данных, случайно закоммиченный в публичный GitHub-репозиторий бот используется для рассылки спама или майнинга под чужим лицом, база утекает целиком
Автоматизации n8n вебхук без авторизации, открытый наружу чужие люди дёргают ваш workflow и через него выгружают данные или спамят в подключённые каналы

Отдельно стоит сказать про магазины на WooCommerce с интеграцией Т‑Банка или другого эквайринга: там вирус редко трогает саму витрину, потому что цель - не испортить сайт, а тихо собирать номера карт на этапе оформления заказа. Такое заражение живёт неделями незамеченным, пока клиенты не начнут жаловаться на списания.

Что делать владельцу сайта: пошаговый план

1. Изолировать сайт

Включаю режим обслуживания или временно закрываю доступ через .htaccess/hosting панель, чтобы вирус не разослал себя дальше и не собирал новые данные, пока идёт лечение.

2. Сохранить копию заражённой версии

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

3. Сменить все пароли и ключи

Пароль от хостинга, FTP/SSH, админки CMS, базы данных, все API-ключи из .env или конфигов - меняю разом, потому что при взломе через утечку пароля старый доступ мог остаться у злоумышленника даже после чистки файлов. Где можно, включаю двухфакторную аутентификацию.

4. Найти и удалить вредоносный код

Сверяю файлы ядра и плагинов с чистыми оригиналами, удаляю неизвестных администраторов из базы, чищу .htaccess от чужих RewriteRule, ищу файлы-шеллы вроде c99 или WSO в папке uploads - они почти всегда с расширением .php и странным именем типа wp-cache-1a2b.php.

5. Обновить всё до актуальных версий

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

6. Проверить cron-задачи

В WordPress через wp cron event list, на сервере через crontab -l - злоумышленники часто ставят запланированную задачу, которая восстанавливает заражение сразу после чистки файлов вручную.

7. Закрыть дыру, через которую зашли

Без этого шага весь предыдущий труд бессмысленный: если уязвимость в конкретном плагине или открытом порту осталась, заражение вернётся за пару дней.

Как снять сайт с чёрных списков после чистки

После лечения сайт всё ещё может числиться опасным в базах Google и Яндекса - эти пометки не пропадают автоматически. В Google Search Console в разделе Security Issues есть кнопка запроса на повторную проверку, обычно ответ приходит за 24-72 часа, если заражение реально устранено. В Яндекс.Вебмастере аналогичный запрос в разделе «Безопасность и нарушения» рассматривают чуть дольше, иногда до нескольких дней.

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

Сколько стоит лечение и когда звать разработчика

Если сайт простой и заражение свежее, шаги 1-3 можно пройти самостоятельно за пару часов при базовом опыте работы с хостингом. Но если на сайте завязаны интеграции с CRM, эквайрингом или СДЭК, лезть руками рискованно - можно случайно сломать рабочую связку вместе с вирусом, а потом чинить уже не заражение, а сломанные платежи.

Разовый аудит и консультация по конкретному случаю - от 3 000 ₽, постоянный мониторинг с ежемесячными проверками - техподдержка от 15 000 ₽/мес. Если после чистки выясняется, что движок настолько устарел, что проще собрать сайт заново, обычно предлагаю посмотреть на услуги по разработке и поддержке сайтов - на дистанции это дешевле, чем бесконечно латать дыры в древнем WordPress без обновлений.

Чтобы сайт работал без сбоев

Техподдержка

от 15 000 ₽/мес

Подробнее →

Частые вопросы

Как быстро вирус попадает обратно на сайт после чистки?

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

Можно ли вылечить сайт без доступа к хостингу?

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

Влияет ли заражение на позиции в поисковой выдаче?

Да, и заметно: попадание в чёрный список Google Safe Browsing или пометка в Яндексе почти сразу обрушивает переходы из органики, а после снятия блокировки позиции восстанавливаются не мгновенно - поисковикам нужно время на переобход и пересчёт доверия к домену.

Как понять, что вирус пришёл именно через плагин, а не через хостинг?

Смотрю на дату изменения заражённых файлов и сопоставляю с логами хостинга: если взлом произошёл на нескольких независимых сайтах одного хостера одновременно, вероятнее уязвимость в конфигурации сервера. Если пострадал только один сайт с конкретным нулленным плагином - почти всегда точка входа именно в нём.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Самозанятый Калинкин Н. А. · работаю с физлицами и юрлицами

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно