Архивы за месяц: Август 2016

Что делать если сайт на WordPress заражен вирусами (вредоносным ПО)?

Первый этап — базовые меры

  1. Необходимо обновить Вашу CSM, плагины и темы до последней версии. Таким образом если в файлах присутствовал вредоносный код он может быть заменен на безопасный. Также в обновленных версиях CSM, плагинов, тем закрываются обнаруженные уязвимости.
  2. Желательно неиспользуемые темы удалить, оставим только активную тему. Таким образом, Вы снизите количество уязвимостей на вашем сайте. Также есть вероятность, что вы удалите тем самым некоторую часть зараженных файлов.
  3. Установите на нашем сайте плагины TAC и AntiVirus (Автор: pluginkollektivи проверьте Вашу активную тему на наличие вредоносного кода. Если «вредоносный» код будет обнаружен не спешите его удалять. Для начала скачайте Вашу версию темы с официального сайта на ваш компьютер и сравните подозрительный файл темы на вашем сайте с соответствующем файлом «чистой темы» на вашем компьютере. Если соответствие нарушено, удаляйте/заменяйте вредоносный код.
  4. Если Вы приобретали платный хостинг у Вашего хостинг-провайдера, то наверняка в него включена услуга антивирусной проверки файлов нашего хостинга. Запросите эти данные в службе технической поддержки.

Второй этап — расширенные меры

Для выполнения действий на втором этапе нам понадобится Putty. Скачать его можно на официальном сайте — http://putty.org.ru/

PuTTY — клиентская программа для работы с сетевыми протоколами SSH, Telnet, SCP, SFTP, для подключения по COM-порту и ZModem, утилита для генерации RSA и DSA цифровых SSH-ключей.

Она нам понадобится для написание запросов на выявления подозрительных файлов, просмотр логов, анализа дат изменения файлов и т.д.

Итак, как только Вы установили Putty, ее необходимо запустить, ввести IP-адресс сайта или имя сервера хостинга и выбрать порт 22.  Если Вы не обладаете данной информацией обратитесь к вашему хостинг-провайдеру.

в открывшемся окне PuTTY введите Ваш логин услуги хостинга. Нажмите «Enter». На следующей строке введите ваш пароль от услуги хостинга и нажмите «Enter». В целях безопасности вводимый пароль не отображается на экране в виде символов.

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

Полезный совет: Чтобы вставить содержание буфера обмена в окно PuTTY, по умолчанию нужно кликнуть правой кнопкой мыши. Также можно вставить буфер, нажав сочетание клавиш Shift-Ins.

Последующий материал основан на записях https://habrahabr.ru/post/188878/  и проверен нашими специалистами на работоспособность и эффективность.

1. Выявление вредоносных PHP файлов.

а) Поиск недавно измененных PHP файлов

find . -type f -name ‘*.php’ -mtime -15

Данная команда ищет все php файлы в текущем дереве каталогов, которые изменились за последнюю неделю. Можете изменить опцию mtime по желанию, например mtime -15 в течении 15 дней.

б) Поиск файлов, содержащих атакующие сценарии

Первая проверка файлов которая содержит eval, base64_decode, gzinflate или str_rot13.

find . -type f -name '*.php' | xargs grep -l "eval *(" --color
find . -type f -name '*.php' | xargs grep -l "base64_decode *(" --color
find . -type f -name '*.php' | xargs grep -l "gzinflate *(" --color

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

find wp-admin -type f -name '*.php' | xargs grep -l "gzinflate *(" --color

Если Вы удалите опцию -l из grep, он будет показывать текст совпавшего файла.

Можно воспользоваться объединенной командой, которая является более общей

find . -type f -name '*.php' | xargs grep -l "eval *(str_rot13 *(base64_decode *(" --color

Эта команда найдет php файлы содержащие eval(str_rot13(base64_decode(
Синтаксис grep очень прост и вы можете изменить его под свои нужды. Взгляните на выражение сверху, по которому мы ищем, это«eval *(str_rot13 *(base64_decode *(»
Пробел следующий за * означает ноль или более символов пробела. Выше приведенное выражение будет справедливо для следующих строк:

eval(str_rot13(base64_decode
eval( str_rot13( base64_decode
eval(  str_rot13( base64_decode

Можно расширить выражение для поиска функций, которые могут быть использованы злонамеренно, такие как mail, fsockopen, pfsockopen, stream_socket_client, exec, system и passthru. Можно скомбинировать все эти значения в одну команду:
find . -type f -name '*.php' | xargs egrep -i "(mail|fsockopen|pfsockopen|stream_socket_client|exec|system|passthru|eval|base64_decode) *\("

В данном запросе использовано egrep, а не grep, это позволяет использовать расширенные регулярные выражения.
Наконец, вот не менее известный способ, что бы скрыть код:

preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'5b19fxq30jD8d/wp5C3tQoMx4CQ
 
FILE GOES ON FOR A LONG TIME......
 
lnSELWEZJakW9R3f7+J+uYuFiiC318gZ9P8C'\x29\x29\x29\x3B",".");

preg_replace с e модификатором будет исполнять этот код, он выглядит необычно, однако это просто сжатый в формате base64 php код использующий некоторые шестнадцатеричные коды символов.
\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28 переводится как eval ( gzinflate ( base64_decode (, а \x29\x29\x29\x3B, как )) ) ;

Эта команда поможет вам найти использование preg_replace:

find . -type f -name '*.php' | xargs egrep -i "preg_replace *\((['|\"])(.).*\2[a-z]*e[^\1]*\1 *," --color

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

find . -type f -name '*.php' | xargs grep base64_ | less
find . -type f -name '*.php' | xargs grep base64_ > results.txt

С любыми выше приведенными командами поиска можно поступить в том же духе.

Можете использовать find для поиска этих шестнадцатеричных кодов в php файлах для дальнейшей проверки.

find . -type f -name '*.php' | xargs grep -il x29

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

в) Проверка .htaccess файлов (при использовании Apache)

Если вы используете веб-сервер Apache, проверьте .htaccess файлы на подозрительные изменения.

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

find . -type f -name '\.htaccess' | xargs grep -i auto_prepend_file;
find . -type f -name '\.htaccess' | xargs grep -i auto_append_file;

Следующая команда ищет во всех подкаталогах файлы .htacсess, которые содержат ‘http’. Результатом поиска будет список всех правил перенаправлений, в которых могут быть и вредоносные правила.

find . -type f -name '\.htaccess' | xargs grep -i http;

Некоторые вредоносные перенаправления базируются на основе user agent. Было бы не плохо поискать использования HTTP_USER_AGENT в .htaccess файлах. Предыдущие команды можно легко изменить, просто поменяйте ключевое слово перед точкой запятой.

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

2. Поиск в базе данных

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

 

Откройте PHPMyAdmin выберите базу данных и нажмите ‘Search’. Вы можете искать такие строки как %base64_% и %eval(%, и любые другие сочетания, которые были описаны ранее.

 

По вопросам аудита безопасности вашего сайта пишите на info@upgrade30.ru