Поиск и удаление вирусов

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

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

Бывает и по-другому, но чаще всего причина именно в этом.

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

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

Rescan.Pro (https://rescan.pro/ )

Kaspersky VirusDesk (https://virusdesk.kaspersky.ru/ )

VirusTotal (https://www.virustotal.com/ru )

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

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

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

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

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

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

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

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

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

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

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

Пример команды для поиска паттернов вирусов в файлах php* и htm* директории /var/www/u******/data/www/. (где u***** - Ваш логин хостинга)
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/u******/data/www/

Как выглядит вредоносный код?

Чаще всего вредоносный код выглядит как набор символов:

$r9f35db4="\142\141\163\x65\66\64\x5f\x64\145\x63\x6f\x64\145

Часто встречается сочетание слов base64_decode

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

Как проверить время последнего изменения файла?

Можно проверить все файлы, изменённые менее чем 14 дней назад:

find /var/www/usertest/data/www/ -type f -mtime -14

Это позволит узнать остальные файлы которые пострадали с момента заражения. Их так же лучше проверить используя антивирус.

Анализ логов

Вам необходимо так же проверить логи сайта, т.е. к какому файлу происходило обращение (чаще всего POST запросы), проверить аргументы запроса. Проверить подозрительные файлы, на которые идут запросы. Можно заблокировать IP с которого идут запросы.

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

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

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

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

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

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

  1. Используйте программное обеспечение только из проверенных источников.
  2. Генерируйте сложные пароли и не храните их в браузере.
  3. Настройте создание резервных копий.
  4. Изолируете сайты друг от друга, для этого создавайте каждый сайт на отдельном пользователе.
Принимаем
Все способы