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

С чего начать?

Проанализируйте способы заражения:

  • Злоумышленник может получить пароли к администраторским панелям CMS, FTP или SSH аккаунтам. Обычно пароли подбирают или крадут с помощью троянских программ, заразивших компьютер вебмастера.

  • Уязвимости веб-приложения могут позволять посторонним размещать на сайте произвольный код.

  • Из-за заражения внешнего ресурса (партнерской программы, баннерной системы, счётчика) предоставленный вам код может стать опасным для пользователей.

Найдите браузерный вредоносный код

Проанализируйте информацию о заражении в Яндекс.Вебмастере, в разделе Безопасность и нарушения. Раздел содержит перечень зараженных страниц, даты проверок и вынесенные антивирусом вердикты. Перейдя по ссылке в названии вердикта, вы увидите его описание и примерный вид кода, соответствующего вердикту (кода, который непосредственно появляется на страницах сайта).

Вы также можете самостоятельно воспроизвести проблему с помощью виртуальной машины.

Найдите серверный вредоносный код

  1. Остановите веб-сервер, чтобы оградить посетителей сайта от потенциальной опасности. Затем проверьте антивирусом файлы веб-сервера и все рабочие станции, с которых администрируют сервер (можно использовать бесплатные антивирусные утилиты) и смените все пароли: root, FTP, SSH, от административных панелей хостинга и CMS.
  2. Если до заражения была сделана резервная копия сайта, восстановите ее.
  3. Обновите до последних версий все используемые сайтом программы и поищите описания исправленных уязвимостей. Возможно, это поможет понять, каким образом сайт был заражен.
  4. Удалите лишних пользователей с расширенными правами и тщательно проверьте сервер на наличие веб-шелла, с помощью которого злоумышленник может изменять код сайта в обход авторизации.
  5. Проверьте наличие вредоносного кода:
    • во всех серверных скриптах, шаблонах CMS, базах данных;

    • в конфигурационных файлах веб-сервера или интерпретатора серверных скриптов;

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

Признаки вредоносного кода:

  • Код посторонний или незнакомый, не соответствует резервной копии или системе контроля версий.

  • Обфусцированный (нечитаемый, неструктурированный) код.

  • Дата модификации файлов совпадает с временем заражения или более поздняя. Этот параметр ненадежен, так как дата модификации файлов может быть изменена вирусом.

  • Использование характерных для вредоносного кода функций. Примеры таких функций для языка PHP:

    • динамическое исполнение кода (eval, assert, create_function);

    • обфускация (base64_decode, gzuncompress, gzinflate, str_rot13, preg_replace);

    • загрузка удаленных ресурсов (file_get_contents, curl_exec).

Вредоносный код удален, что дальше?

Пометка об опасности сайта в результатах поиска будет снята, если при очередной проверке робот Яндекса не обнаружит заражения. Чтобы ускорить перепроверку, в интерфейсе Яндекс.Вебмастера, в разделе Безопасность и нарушения, нажмите кнопку Я все исправил.

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