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

Проверить сайт на вирусы можно двумя способами: снаружи, онлайн-сервисами, и изнутри, по файлам на сервере. Если нужно понять, безопасно ли заходить на чужой сайт, хватит онлайн-проверки за минуту. Если сайт ваш, внешние сканеры видят только то, что сайт показывает посетителям, а вредоносный код часто прячется. Ниже — оба способа. Для владельцев WordPress — проверка по контрольным суммам и поиск подозрительных файлов. Мы «заразили» тестовый WordPress безвредными строками и прогнали все проверки 26 сентября 2026 года — выводы ниже настоящие.

Проверить сайт на вирусы: результат wp core verify-checksums на заражённом WordPress
Проверка по контрольным суммам нашла изменённый файл ядра и лишний файл

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

Если сомневаетесь в ссылке, проверьте адрес в одном-двух сервисах до перехода:

  • VirusTotal — вкладка URL: адрес проверяется базами нескольких десятков антивирусов и сервисов репутации.
  • Статус сайта в Google Safe Browsing — показывает, считает ли Google сайт опасным. Эти же данные использует Chrome, когда показывает красное предупреждение.
  • Sucuri SiteCheck — открывает страницу и ищет на ней вредоносный код и попадание в чёрные списки.

Оговорка: «чисто» в этих сервисах значит только, что сейчас они ничего не нашли. Заражённый сайт часто показывает вредоносный код не всем — например, только посетителям с телефона или пришедшим из поиска. Поэтому для своего сайта внешняя проверка — только первый шаг.

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

В документации WordPress перечислены явные признаки взлома. Добавим то, что встречается чаще всего:

  • поисковики или браузер предупреждают, что сайт опасен;
  • хостинг заблокировал сайт или прислал письмо о вредоносном коде или рассылке спама;
  • антивирусы посетителей ругаются на сайт;
  • с телефона или из поиска сайт перенаправляет на чужие страницы, хотя у вас всё открывается нормально;
  • в поиске появились страницы, которых вы не создавали, — часто казино, аптеки, «займы»;
  • в админке появились незнакомые пользователи, особенно с ролью администратора;
  • сервер без причины грузит процессор — это может быть майнер, о нём отдельная статья майнер на сервере: как найти и удалить.

Проверить сайт на вирусы в Яндекс Вебмастере и Search Console

Если сайт добавлен в панели поисковиков, они сами сообщат о заражении:

  • Яндекс Вебмастер — раздел «Безопасность и нарушения». По справке Яндекса, там показывается нарушение, его описание и как снять ограничение, а в поиске у сайта может появиться предупреждение об опасности. После исправления отметьте «Нарушение исправлено» и отправьте сайт на проверку: она занимает до 30 дней, а если ограничение не сняли, повторно отправить можно только через 30 дней. Поэтому отправляйте, когда уверены, что вычистили всё.
  • Google Search Console — отчёт «Проблемы безопасности». По справке Google, он сообщает о взломанном контенте, вредоносном ПО, фишинге и социальной инженерии. Проверка после исправления занимает от нескольких дней до нескольких недель.

Добавить сайт в обе панели стоит заранее — тогда о проблеме вы узнаете от них, а не от посетителей.

Проверка сайта на WordPress: контрольные суммы

Самый надёжный способ найти изменения в WordPress — сравнить файлы с оригиналами. Для каждой версии WordPress и каждой версии плагина из каталога wordpress.org опубликованы контрольные суммы файлов, и WP-CLI сверяет их одной командой (описание команды).

На тестовом сайте мы дописали строку с eval(base64_decode(...)) в файл ядра wp-includes/load.php, положили лишний файл wp-includes/wp-tmp.php, изменили файл плагина Akismet и спрятали PHP-файл в папке загрузок. Так часто выглядит настоящее заражение, только наши строки ничего не делали. Проверяем ядро:

wp core verify-checksums
Warning: File doesn't verify against checksum: wp-includes/load.php
Warning: File should not exist: wp-includes/wp-tmp.php
Warning: File should not exist: wp-config-docker.php
Error: WordPress installation doesn't verify against checksums.

Изменённый файл ядра и лишний файл найдены. Третье предупреждение — ложная тревога: wp-config-docker.php кладёт официальный Docker-образ WordPress. Поэтому каждое предупреждение нужно проверить глазами, а не удалять всё подряд. Теперь плагины:

wp plugin verify-checksums --all
plugin_name	file	message
akismet	akismet.php	Checksum does not match
Error: Only verified 1 of 2 plugins (1 failed).

Плагины не из каталога wordpress.org (платные, самописные) и темы так не проверить — для них нет опубликованных сумм. Их надёжнее переустановить из оригинального архива.

Нет WP-CLI? Многие хостинги дают его в SSH-консоли. Если нет и его, есть плагины-сканеры — документация WordPress называет, например, Wordfence, Sucuri, Quttera и GOTMLS.

Поиск вредоносного кода вручную

Контрольные суммы не видят файлов в wp-content/uploads — там лежат ваши картинки, и сравнивать их не с чем. А именно туда любят класть бэкдоры. Исполняемых PHP-файлов в загрузках быть не должно:

find wp-content/uploads -name '*.php'
wp-content/uploads/2026/09/thumb.php

Спрятанный файл найден. Второй полезный приём — PHP-файлы, изменённые недавно, например за последние два дня:

find . -name '*.php' -mtime -2
./wp-content/uploads/2026/09/thumb.php
./wp-content/languages/continents-cities-ru_RU.l10n.php
./wp-content/languages/admin-ru_RU.l10n.php
./wp-content/languages/admin-network-ru_RU.l10n.php
./wp-content/languages/ru_RU.l10n.php
./wp-content/plugins/akismet/akismet.php
./wp-includes/wp-tmp.php
./wp-includes/load.php
./wp-config.php

Все четыре «заражённых» файла в списке, а рядом — законные изменения: файлы перевода, которые мы установили, и wp-config.php. Если знаете, когда начались проблемы, ищите изменения с этой даты. Злоумышленник может подделать дату файла, так что пустой список ещё не значит «чисто».

Часто советуют искать eval и base64_decode. Мы попробовали:

grep -rlE 'eval\(|base64_decode\(' --include='*.php' . | wc -l
19

Девятнадцать файлов, и большинство — законные файлы ядра WordPress: эти функции используются в почтовой библиотеке, архиваторе и других местах. Такой поиск полезен в папках тем и плагинов, но как главный способ проверки он даёт слишком много шума. Сначала — контрольные суммы, потом — ручной разбор того, что они не покрывают.

Ещё проверьте администраторов — нет ли незнакомых:

wp user list --role=administrator --fields=ID,user_login,user_registered

Что делать, если сайт взломали

Порядок по рекомендациям WordPress, коротко:

  1. Запишите, что видите, когда заметили и что меняли на сайте в последнее время. Это пригодится и вам, и хостингу.
  2. Сделайте копию заражённого сайта — да, заражённого. Если при чистке что-то сломается, будет с чем сравнить. Как снять копию — в статье резервная копия сайта.
  3. Смените все пароли: админки WordPress, FTP/SFTP, панели хостинга, базы данных. Разлогиньте всех, заменив секретные ключи в wp-config.php — новые выдаёт генератор ключей WordPress.
  4. Восстановите сайт из чистой копии, если она есть и вы знаете, когда произошло заражение. Хостинговые копии хранятся около 30 дней, так что при давнем заражении чистой копии может не быть.
  5. Без чистой копии — вычищайте. Папки wp-admin и wp-includes замените целиком из архива той же версии WordPress — через SFTP, а не кнопкой переустановки в админке: она перезаписывает файлы, но не удаляет лишние. Плагины и тему переустановите из оригиналов. Отдельно проверьте .htaccess, index.php, header.php, footer.php, functions.php темы.
  6. Обновите всё — WordPress, плагины, тему, версию PHP (как обновить PHP без падения сайта). Удалите заброшенные плагины.
  7. Смените пароли ещё раз — уже после чистки.
  8. Проверьте свой компьютер антивирусом. WordPress отдельно предупреждает: доступы к сайту часто крадут трояны на компьютере владельца.
  9. Отправьте сайт на перепроверку в Вебмастере и Search Console.

Как не заразиться снова

  • Обновляйте WordPress, плагины и тему. Старые версии взламывают чаще — это прямо сказано в рекомендациях WordPress.
  • Удаляйте плагины, которые не нужны или годами не обновлялись.
  • Используйте длинные уникальные пароли и двухфакторный вход в админку.
  • Держите резервные копии за разные даты, включая копию вне сервера.
  • На своём VPS — вход только по SSH-ключу, файрвол и fail2ban: настройка VPS по шагам.
  • Раз в месяц запускайте wp core verify-checksums и wp plugin verify-checksums --all — это минута времени. Больше мер — в руководстве по защите WordPress.

Свежий пример, почему важно обновляться: WordPress 7.1.2 закрыл критическую уязвимость.

Откуда на сайтах берётся чужая реклама и кто на ней зарабатывает — в видеоразборе «Пиратские онлайн-кинотеатры и их реклама».

Источники: WordPress: FAQ My site was hacked, wp core verify-checksums, wp plugin verify-checksums, Яндекс Вебмастер: безопасность и нарушения, Search Console: проблемы безопасности, защита WordPress. Проверено 26 сентября 2026 года.

1 / 1
Оцените статью
Да будет Интернет!