Лечение сайта от вирусов: чистим код вручную и автоматически

30.03.2018

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

Практика показывает, что в основном заражение сайта происходит через системы управления контентом (CMS) и плагины к ним.

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

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

Бывает и по-другому, но редко.

Как понять, что сайт заражен

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

Что делать, если сайт заражен

Обновите программное обеспечение.Как только об уязвимостях становится известно, их исправляют и выпускают обновления. Устанавливайте обновления только с официальных сайтов: WordPress, Joomla!, Drupal.

Удалите пиратские плагины.Устанавливайте плагины только от официальных разработчиков. Если на каком-то сайте размещен бесплатный аналог платного плагина, то скорее всего он уже содержит вирус. Лучше заплатить за оригинальное ПО, чем лечить зараженный сайт.

Поменяйте пароли. Часто вирус попадает на сайт используя пароль от админских панелей FTP или CMS, которые крадет во взломанной почте или компьютере. Смените пароли доступа к панели управления сервером, FTP/SSH-аккаунтам, MySQL, CMS. Используйте сложные пароли: не менее 10 символов, заглавные и строчные буквы, цифры и специальные символы. Для быстрой генерации используйте бесплатные сервисы: 1, 2.

Настройте права доступа к файлам. Через FTP или ISPmanager установите права доступа к файлам сайта. Права определяют, кто может просматривать, записывать и исполнять код. Для файлов сайта подходит значение 644 (изменять содержимое может только администратор, читать и исполнять код — любой посетитель сайта), для директорий лучше установить 755 (администратор может читать и редактировать, все остальные — только читать содержимое).

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

Заблокируйте неиспользуемые функции в файлах конфигурации PHP. В файле конфигурации PHP (php.ini) добавьте disable_functions к неиспользуемым функциям из вот этого списка: passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source.

Лечим сайт вручную

Лечить сайт можно вручную и с помощью антивирусов.

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

Пример команды для поиска паттернов вирусов в файлах php* и htm* директории /var/www/*/data/www/.

grep -Rils --include=\.{php,htm*} -e 'b=4594' -e 'e2aa4e' -e 'v58f57b98 = 0' -e 'forexam\@pandion.im' -e 'pathToDomains' -e 'if(navigator.userAgent.match(' -e 'var vst = String.fromCharCode' -e 'Menu\files\/jquery.js' -e 'i5463 == null' -e 'r57.gen.tr' -e '\/rsize.js' -e 'feelthesame.changeip.name' -e '40,101,115,110,98,114,105,110' -e 'c99sh' -e 'Shell by' -e ' sh_ver' -e '\.tcpflood' -e 'c999sh' -e 'Array(base64_decode' -e 'Attacker Perl File' -e 'bogel = ' -e '(\!function_exists(\"getmicrotime\"))' -e'\$d=substr' -e 'WSO ' -e 'r57shell' -e 'msg=@gzinflate(@base64_decode(@str_replace' -e '6POkiojiO7iY3ns1rn8' -e ' mysql_safe' -e 'sql2_safe' -e 'aHR0cDovLzE3OC4yMTEu' -e 'php function _' -e 'encodeURIComponent(document.URL)' -e '\; if(isset(\$_REQUEST' -e 'UdpFlood' -e 'udp\:\/\/1.1.1.1' -e '\ (md5(\$_POST\[' -e 'header(\"Location\: http' -e 'fx29sh' -e 'c999sh_surl' -e 'c99sh' -e '\/request12.php' -e 'NlOThmMjgyODM0NjkyODdiYT' -e 'semi-priv8' -e 'JHNoX25hbWUgPSAiIj' -e '$shell_name' -e 'UvUbjYH4eJNgF4E1fedl' -e 'killall \-9' -e 'Angel Shell' -e 'c100.php' -e 'c2007.php' -e 'c99 mod Captain Crunch' -e '\$c99sh_updatefurl' -e 'C99 Modified By Psych0' -e 'php-backdoor' -e 'r577.php' -e 'wso shell' -e 'backdoor' -e 'eval(stripslashes(' -e 'Backdoor' -e 'Set WSHshell' -e 'WSHshell.Run DropPath' -e /var/www/*/data/www/

Лечим с помощью антивирусов

Если вы не умеете работать с консолью сервера, используйте готовые решения. Самые большие базы паттернов вирусов, распространенных в рунете, содержат два антивируса: Virusdie и AI-Bolit.

Virusdie

Платный инструмент. Автоматически находит вредоносный код и удаляет его. Помогает снять санкции браузера. С Virusdie работать просто, так как антивирус интегрирован с панелью управления веб-сервером ISPmanager.

На всю весну — с 1 марта до 31 мая — снижаем цену на антивирус для сайта Virusdie в ISPmanager. Он будет стоить 5€ вместо 13€.

AI-Bolit

Бесплатный сканер вирусов. Проверяет сайт на взлом, вирусы и хакерские скрипты. Анализировать отчет можно самостоятельно. Помощь от специалистов компании-разработчика AI-Bolit — за отдельную плату.

Как предотвратить заражение

  • Используйте программное обеспечение только из проверенных источников.
  • Генерируйте сложные пароли и не храните их в браузере.
  • Настройте создание резервных копий.
  • Изолируете сайты друг от друга, для этого создавайте каждый сайт на отдельном пользователе.
  • Используйте Virusdie постоянно.
  • Используйте ISPmanager для единовременного обновления всех установленных скриптов, или модуль интеграции ISPmanager с Softaculous.