Вычислить где именно спрятался вирус на вашем сайте – задача очень непростая даже для квалифицированных специалистов, и, как правило, требует определенных навыков и знаний. Однако, очень часто вебмастера по той или иной причине не могут обратить за помощью к специалистам, именно для них мы попытаемся здесь разобрать несколько способов определения вредоносного кода на вашем сайте. Для примера мы возьмем самую популярную в мире CMS – WordPress, и рассмотрим несколько методик обнаружения и удаления вирусов с вашего сайта. Вы можете использовать эти методы и принципы и на других CMS, в частности Joomla, Drupal, OpenCart и других.

Резервное копирование сайта и базы данных

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

Обязательно сохраните две резервные копии: одну на хостинге в папке backup, а вторую на локальном компьютере. Если у вас есть доступ в администраторскую часть сайта, то воспользуйтесь одним из бесплатных плагинов, если же хакеры сменили пароли доступа, то воспользуйтесь cPanel хостинг провайдера. Зайдите в cPanel и перейдите по ссылке Backup Wizard, а дальше следуйте инструкции:

cpanel backup

Не забудьте про .htaccess: обязательно сделайте отдельный бэкап файла .htaccess, это скрытый файл, потому, вам опять же придется воспользоваться cPanel и использовать менеджер файлов, который установлен там. Чтобы видеть его на локальном компьютере просто переименуйте его в htaccess.txt и сохраните в отдельную папку. Некоторые хостинг провайдеры используют .htacess для определения версии php для вашего сайта, а следовательно, сайт не будет работать, если вы восстановите его резервную копию без этого файла. Так же некоторые вебмастера используют .htaccess для 301 редиректов, соответственно, если вы не сохраните данный файл, то рискуете потерять все редиректы, получить дублирование контента, или же нарушите структуру сайта, а следом получите падение позиций в поисковых системах.

Сканирование файлов CMS на вирусы

Начать процесс чистки сайта от вирусов стоит с автоматических сканеров поиска вредоносного кода. Как правило, все продвинутые хостинг провайдеры имеют в своем арсенале утилиты, способные найти самые простейшие вирусы на вашем сайте. Что же касается платных утилит, то здесь стоит задуматься и усвоить, что поиск вирусов в php файлах – это задача, которую способен решить только хорошо подготовленный специалист и не существует антивируса, который бы смог найти даже 70% вирусов в вашей CMS. Как бы прискорбно это не звучало, но отдавать деньги за утилиту, которая не способна дать никаких гарантий не лучшая инвестиция, а даже если антивирус обнаружил несколько зараженных файлов, это не значит, что вредоносный код не может быть прописан в других файлах вашей CMS. Очень часто хакеры маскируют и шифруют части кода, а значит, никакая антивирусная программа не сможет отличить его от обычного файла.

Проверка целостности файлов

В большинство файлов CMS, как правило, никогда не вносятся изменения ни самой CMS, ни администратором сайта. Они остаются такими же, как и в день, когда вы установили CMS на свой сервер. Например, в WordPress в папках wp-admin, wp-includes и в корневой директории, вам следует сравнить файлы, которые сейчас расположены у вас на сервере с файлами инсталляции.

Чтобы быстро сравнить файлы на сервере, мы рекомендуем воспользоваться командой diff.

сравнение файлов на сервере

Это самый быстрый способ обнаружить изменения в файлах. Просто наберите в терминал:

diff file1.php file2.php

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

То, что вам необходимо знать до внесения изменений в файлы сайта

  • директории wp-admin и wp-includes очень редко содержат в себе какие-либо дополнительные файлы, которых нет в архиве чистой WordPress
  • вы всегда можете смело удалять все папки и файлы в директории wp-content/plugins, вы не потеряете контент и не нарушите работу сайта. В этой папке находятся файлы дополнительных плагинов, которые вы всегда можете установить заново
  • особое внимание уделите папке wp-content/themes, если вы используете только одну тему на вашем сайте, то просто удалите все ненужные темы из этой директории. Будьте предельно осторожны, если вы используете “child theme”, не удалите случайно основную тему вашего сайта
  • просмотрите директории на сервере на предмет наличия старых копий сайта. Очень часто разработчики создают папки, например /test в которой расположена старая версия сайта и она доступна из сети. Как правило, такие версии сайта не обновляются, а следовательно, имеют в себе множество уязвимостей. Помните, что если хакер получил доступ к одной из ваших директорий, то весь сервер может быть подвержен опасности, и это уже дело техники получить доступ ко всем сайтам хостинга

Недавно созданные и модифицированные файлы

Самым легким и верным способом обнаружить вирус на сайте – это обнаружить файлы, в которые были внесены изменения в предполагаемом отрезке времени, когда ваш сайт мог быть заражен. Для этого вы можете использовать любой FTP клиент:

поиск вирусов на сайте

Некоторые файлы и директории CMS могу обновляться само системой, ваша задача – это определить файлы, созданные в предполагаемый отрезок времени, а так же файлы, в которые в это время были внесены изменения. Обращаем ваше внимание, что вам необходимо использовать ФТП клиент, который видит скрытые файлы! Смотрите на рисунок ниже, здесь хакер поставил точку перед файлом и он был бы не виден из ФТП клиента, где не было бы установлен пункт «Показывать скрытые и системные файлы».

удаление вирусов с сайта
В данном примере легко обнаружить файл .alex.php, он выглядит подозрительным даже для невооруженного глаза. Если мы его откроем, то можно легко определить, что этот файл был закачан хакером.
вирус на сайте
Здесь мы имеем дело далеко не с самым хитрым представителем хакеров, он назвал файл своим ником, а еще в нем разместил прямым текстом название своей организации. Зачастую, хакеры называют такого рода файлы именами «sysconfig.php, cmsconfig.php и т. д.» и делается это для того, чтобы обычный вебмастер боялся удалить или заменить этот файл, или код внутри его.

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

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

Поиск вируса по файлам CMS

Самый быстрый и самый удобный способ поиска вредоносного кода в файлах сайта – это использовать SSH. Сначала мы найдем все файлы, которые были модифицированы в течении 10-и дней. Для этого, выполним следующую команду:

find /home/директория_сайта/ваш_сайт/ -mtime -10 –ls

Вы можете задать абсолютно любое количество дней. Если вы не уверены, когда произошел взлом, то укажите значение в 30-60 дней. Если вы не вносили никаких изменений в этот период, то вы получите список файлов, которые были изменены самой CMS и хакером. Как только вы получили список файлов, вам следует просмотреть каждый из них, ведь хакер мог внести изменения и в файлы, которые изменяются и самой CMS. Потому вам нужно внимательно изучить код каждого файла и попытаться вникнуть что выполняет каждая php функция. Данный метод очень простой, но очень эффективный, если вы затрудняетесь понять что именно написано в ваших файлах, то можете попросить помощи программистов и разработчиков на тематических форумах.

Другим эффективным способом обнаружить вредоносный код на сайте является поиск потенциально опасных php функций в коде файлов CMS. Вы можете опять же воспользоваться SSH, для этого вам нужно ввести следующую команду:

grep -ril имя_функции *

Эта команда выведет список файлов, в которых нашлась функция, которую вы искали. Сейчас мы приведем список потенциально опасных функций, на которые вам стоит обратит внимание в первую очередь:

eval(). Программисты шутят, что “eval is evil”. eval() – опасная функция, которая выполняет код, проходящий со всеми привилегиями и правами вызывателя. Если вы запускаете eval() со строкой, на которую могут влиять злоумышленники, то вы можете запустить вредоносный код на устройство пользователя с правами вашей веб-страницы.

Вот небольшой перечень функция, на которые вам стоит обратить особое внимание:

  • base64
  • str_rot13
  • gzuncompress
  • exec
  • system
  • assert
  • stripslashes
  • preg_replace (with /e/)
  • move_uploaded_file

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

Вместо заключения

Каждый вирус уникален по-своему, и в случае, когда вам приходится работать с ПО, разработанным на php, вам не приходится рассчитывать на автоматическое ПО, которое сможет самостоятельно обнаружить все вирусы и бэкдоры на вашем сайте. В любом случае вам придется самому искать вредоносный код и устранять его. Не существует алгоритмов, позволяющих обнаружить вирус быстро, по моему опыту, такого рода работа может занимать от нескольких часов до нескольких дней. Очень внимательно подходите к этому процессу и всегда делайте резервное копирование сайтов, даже если вы на 100% уверены, что вас никто не сможет взломать.

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