ГлавнаяБлогСайт заражён вирусом
Безопасность

Сайт заражён вирусом: что делать владельцу

EWErnst Wolf·14 июля 2026
Обложка Web-Wolf: сайт заражён вирусом — что делать владельцу

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

Сайт этой управляющей компании мы делали несколько лет назад. Потом он жил сам по себе: без сопровождения, без нас. А недавно клиент написал мне снова — сайт стал вести себя странно. Ни договора, ни абонентки между нами не было. Я никуда не делся, так что разбираться пошли вместе.

Дальше — то, что из этой истории пригодится вам, если вы сейчас гуглите то же самое. Без советов «зайдите на сервер»: вы не обязаны в этом разбираться. Разбираться должен тот, кому вы отдадите сайт. Ваша задача проще — не сделать хуже и понять, правильно ли его чинят.

Насколько всё плохо, если сайт заражён?

Обычно хуже, чем кажется по симптомам. В этом случае нашлось около 600 вредоносных файлов: программы для удалённого доступа, генераторы спам-страниц, скрипты загрузки новой заразы, закладка в настройках сервера и посторонний администратор в базе. Следы уходили на несколько лет назад. При этом контент — тексты страниц и настройки — оказался цел.

Вот это и есть главное, что стоит понять про заражение: оно почти никогда не бывает свежим.

Владелец замечает проблему, когда сайт начал перебрасывать посетителей на чужие страницы или выпал из поиска. А внутрь зашли давно — здесь следы уходили на годы. Всё это время сайт спокойно работал, показывал клиентам телефон и параллельно рассылал спам.

Отдельная неприятность: в системе лежал файл со списком паролей от баз нескольких сайтов. Открытым текстом. Все их пришлось считать утёкшими.

Хорошая новость тоже есть, и она важная. Зараза жила в файлах, а не в текстах страниц: контент, картинки и настройки в базе были чистыми. Позже это сильно помогло — восстанавливать было из чего.

Что нельзя трогать самому, чтобы не сделать хуже?

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

Про эту ошибку расскажу на себе, потому что сделал её сам — уже под конец, когда основное было позади.

В базе было два администратора. Один — стандартный admin, самый предсказуемый логин, который перебирают первым. Удалить его — мысль правильная. WordPress спросил: удалить материалы пользователя или передать другому автору. Я не придал вопросу значения.

Через минуту от сайта осталось 6 страниц из тридцати с лишним. Главная слетела — вместо неё показывалась случайная запись. Из меню пропала половина пунктов. Следом выяснилось, что уехали и медиафайлы: почти 200 штук, включая баннер и PDF-отчёты.

Секунду я сидел с мыслью, что своими руками угробил то, что мы восстанавливали часами…

Спасли две вещи. Копия, снятая в самом начале. И то, что WordPress не стирает страницы насмерть, а кладёт в корзину — все 30 нашлись там и вернулись штатной кнопкой, с прежними адресами, так что ссылки в меню снова заработали. Медиа подняли из копии. Потерь — ноль.

Вывод обидно простой: если WordPress при удалении о чём-то спрашивает — прочитайте вопрос. А лучше не удаляйте ничего, пока сайт не в порядке и пока нет копии.

Три вещи, которые нельзя делать самому при заражении сайта

Антивирус-плагин или ручной разбор — чем лечить?

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

Плагин-сканерРазбор с эталоном
Что находитИзвестные ему сигнатурыЛюбое отличие от официальной версии
Механизм восстановленияНе видитНаходит проверкой
Точка входаНе закрываетЗакрывает
Когда хватаетСвежая одиночная заразаМассовое и давнее заражение

Просить «найди вирусы» — плохая идея. А что искать-то?

Файлы ядра WordPress, официальных плагинов и тем — стандартные, их чистые версии лежат в открытом доступе. Берём эталон той же версии, сравниваем — и всё, что отличается, попадает под подозрение. Метод скучный, зато почти без ложных срабатываний.

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

Как понять, что сайт чистят правильно?

Правильная чистка идёт в жёстком порядке: полная копия до любых действий, анализ без запуска подозрительных файлов, поиск механизма восстановления, чистка, закрытие точки входа, смена всех паролей и ключей. Если подрядчик начинает с удаления файлов и не может объяснить, откуда зараза возвращается, работа сделана наполовину.

Вы не обязаны разбираться в устройстве заразы. Но четыре вопроса задать можете, и по ответам сразу видно, кто перед вами.

Копия снята до того, как вы что-то тронули? Если нет — стоп. Копия нужна дважды: как эталон для сравнения и как страховка. Меня она спасла именно во втором качестве.

Нашли, откуда зараза возвращается? Вот главный вопрос. У нас часть файлов удалялась нормально, а несколько ключевых возвращались за секунды. На сервере сидел «сторож».

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

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

Вот с этой секунды чистка вообще имеет смысл. До неё — нет.

Точку входа закрыли? Вычистить и оставить дыру — значит заразиться снова. Про неё ниже.

Пароли сменили все? Хостинг, сервер, база, администраторы. При таком заражении они почти наверняка утекли, и старый пароль — это открытая дверь.

Почему сайт заразился и как не поймать снова?

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

Весь дизайн сайта держался на платном плагине-конструкторе. Пиратском. Он же, судя по всему, и был дырой.

Кто и когда его поставил — теперь не установить. За годы через сайт проходит много рук, и это обычная история, а не чья-то вина. Важно другое: почистить такой плагин нельзя. Только убрать.

Убрали — и сайт открылся голым текстом без вёрстки. Дизайн-то держался на нём. Покупать лицензию клиент не планировал, так что дизайн пересобрали на бесплатных аналогах: данные вёрстки в базе были целы, точные цвета нашлись в файлах темы, а прежний вид — в веб-архиве, там сохранились копии сайта за годы. Вернули 85–90%.

Один в один без платных плагинов не выйдет, и я не буду делать вид, что выйдет: сложные ленты и слайдеры были завязаны именно на платные компоненты. Но 85–90% — это узнаваемый рабочий сайт, а не заглушка.

И вот тут то, ради чего я всё это пишу. Сайт живёт годами. Обрастает плагинами. Каждый из них стареет. Дыра — вопрос времени, а не невезения.

Так же тихо на сайте годами висят и другие риски — например, шрифты Google, за которые в Германии приходит Abmahnung, или отсутствующие Impressum и Datenschutz. Никто не замечает, пока не прилетит.

Разовая чистка это не закрывает. Закрывает другое: обновления, резервные копии и живой человек, который смотрит за сайтом.

Кому отдать сайт, чтобы не остаться с ним один на один?

Тому, кто будет на связи и через год, и через три. Разовая чистка возвращает сайт в рабочее состояние, но не мешает следующей дыре: плагины продолжают стареть. Регулярное сопровождение — обновления, резервные копии, защита, мелкие правки — обходится дешевле, чем одно лечение массового заражения, и снимает вопрос «кому теперь писать».

Клиент написал мне через несколько лет после того, как мы сделали сайт. Без договора, без абонентки. Я оказался на месте — и сайт вычистили.

Это, если честно, и есть вся моя позиция. Мы делаем сайты и ведём их дальше: резервные копии, обновления, защита, правки. Не ради того, чтобы вы платили каждый месяц, а чтобы через три года вам было кому написать.

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

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

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

Между разными аккаунтами изоляция обычно работает, и вычищенный сайт соседи повторно не заражают. Но если несколько сайтов живут на одном аккаунте, заражение одного — проблема всех: они рассылают спам, и хостинг может заблокировать аккаунт целиком за вредоносную активность. Вывод: сайты на общем аккаунте лечат все вместе.

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

Посмотрю ваш сайт и вычищу заражение

Если сайт заражён или ведёт себя странно — напишите. Разберу, что происходит, вычищу заразу и закрою точку входа. А дальше, если захотите, буду присматривать за сайтом, чтобы это не повторилось.

Обсудить проект