Энциклопедия мобильной связи

Как проверить плагин wordpress на вредоносный код. Ищем и убираем вредоносный код на WordPress

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

Но большинство Web-сайтов, построенных на базе этой бесплатной CMS, обладают определёнными уязвимостями в системе безопасности. Разработчики WordPress, конечно, стараются оперативно закрывать их и выпускают обновления не только для самой платформы, но и для стандартных тем и плагинов. Тем не менее, защититься от взлома удаётся не всегда.

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

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

Резервное копирование

Существуют два способа резервного копирования Web-сайта: копирование исходных файлов сайта и копирование базы данных (БД). Для WordPress существует стандартный инструмент для резервного копирования, но он создаёт только копию базы данных.

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

Если копия сайта и БД будет храниться на флеш-накопителе, то это стопроцентная гарантия того, что вы с легкостью сможете восстановить Web-сайт в любой момент.

Восстановление или лечение

Практически все Web-сайты предназначены для принесения дохода своему владельцу. Поэтому обязательным требованием для Web-сайта является работа в режиме 24х7 (24 часа в сутки, 7 дней в неделю) с минимальными периодами отключения для проведения технических работ.

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

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

Как определить наличие вредоносного ПО

Как узнать, был ли взломан Web-сайт, и определить первые симптомы заражения? На самом деле, это очень просто, провал статистики посещаемости, переадресация на незнакомые Web-сайты, чрезмерное потребление трафика – всё это признаки заражения и наличия вредоносных ссылок, понижающих рейтинг ресурса. Не говоря уже о явных ситуациях, когда в поисковой выдаче Яндекс или Google появляется отметка о "заражённости" вашего Web-сайта.

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

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

Самый простой, но и самый долгий способ поиска вируса – это попытаться отследить даты изменения файлов. Допустим, основная масса файлов в важнейших каталогах (wp-includes , wp-admin и др.) имеют одну и ту же дату создания, но есть один или два файла с более поздними датами создания. Отметьте эти файлы и сравните их с файлами из дистрибутива WordPress. Также можно сравнить файлы по размеру в программе Total Commander. Остаётся только сравнить содержимое подозрительных файлов и выяснить, для чего предназначены найденные лишние фрагменты кода.

Как проверить обрабатываемый HTML-код

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

Потребуется открыть "заражённый" Web-сайт в браузере (предпочтительнее в Opera или Firefox) и выбрать в контекстном меню пункт "Показать исходный код сайта ". Если вы знаете HTML, то наверняка сможете заметить подозрительные строки. Это могут быть незнакомые ссылки на сайты, куски "сжатого" или зашифрованного (способом base64) кода, также это может быть неизвестный фрагмент Javascript, который наверняка тоже будет зашифрован. Определить его можно по включенной в код фрагмента команде eval . Обычно это означает, что кто-то пытался скрыть истинный код Javascript, что должно вызывать определенные подозрения. На рисунке 1 представлен пример подозрительного кода.

Рис. 1 Фрагмент подозрительного HTML-кода

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

Когда вредоносный код на страницах сайта не удается обнаружить способами, описанными выше, то можно воспользоваться сторонними online-инструментами. Например, можно установить плагин WordPress Exploit Scanner, который будет регулярно проверять Web-сайт и выявлять вредоносное ПО. Плагин представляет подробный отчет и выделяет строки, которые впоследствии следует удалить.

Кроме того, можно просканировать Web-сайт online-сканнером Sucuri SiteCheck – эта услуга абсолютно бесплатна, а за определенную плату можно заказать полное лечение ресурса.

Как проверить плагины и темы на наличие вредоносного кода

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

Определить наличие вируса в теме оформления или в коде плагина очень просто. Если активная тема построена на основе одной из официальных тем, то нужно просто сравнить оригинальный код с кодом проверяемой темы. Для этого скачайте тему по умолчанию, которая входит в дистрибутив WordPress, измените её название и переключите оформление на нее. Остаётся только проверить сгенерированный сервером HTML-код на наличие вируса, и если он обнаружится, то проблема кроется явно не здесь.

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

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

Лучшие способы защиты плагинов и тем Wordpress:

  • скачивайте и устанавливайте темы и плагины только с проверенных Web-сайтов;
  • не используйте "взломанные" платные плагины и темы;
  • удаляйте неиспользуемые плагины и темы;
Как найти вредоносный код в файлах ядра WordPress

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

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

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

RewriteCond %{HTTP_REFERER} .*yandex.* RewriteRule ^(.*)$ http://неизвестныйсайт.com/

Если подобные строки были обнаружены, то не следует сразу их удалять. Сначала запросите у хостинг-провайдера логи за период примерного изменения файла .htaccess и проанализируйте, с какого IP адреса и когда был отправлен этот файл. Возможно, в это же время были изменены и другие файлы.

Если был изменен только этот файл, то следует сменить пароли для FTP и административного интерфейса. Если же изменения были обнаружены и в *.php, *.html файлах, то, скорее всего, на сайт был загружен PHP-сценарий, через который злоумышленник сможет получить доступ ко всей имеющейся информации.

Профилактика такого вида угроз довольно проста и не требует особых затрат. Важно помнить следующие правила:

  • не храните пароли в FTP-менеджерах или в почтовых сообщениях;
  • регулярно обновляйте ядро WordPress;
  • обновляете плагины и темы;
  • не используйте простые пароли.

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

Как найти инъекцию вредоносного SQL-кода в WordPress

Итак, мы уже рассмотрели различные способы заражения и лечения Web-сайта, основанного на бесплатной CMS WordPress. Но одним из популярных методов проникновения и взлома является SQL-инъекция (sql injection). Этот способ заражения основан на составлении запроса в базу данных, в котором производится кража пароля от административного интерфейса или получение другой конфиденциальной информации. В отношении WordPress можно сказать, что известные на момент последнего обновления "бреши" в системе безопасности базы данных и в фильтрации запросов, были устранены.

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

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

Но плагин WordPress Exploit Scanner, упоминавшийся ранее, умеет работать и с базой данных, и в некоторых случаях он может найти внедренную в базу данных постороннюю функциональность. Вот только удалять ее придется вручную с помощью специальных SQL команд в программе администрирования баз данных PHPMyAdmin. Подобные действия нужно выполнять очень аккуратно, так как неправильный запрос или команда может повредить структуру или содержимое базы данных. Чтобы этого не произошло, стоит заранее озаботиться процессом создания резервных копий БД. Кстати, сам Exploit Scanner может выдавать рекомендации по исправлению SQL-запросов.

Практические способы защиты Web-сайтов, построенных на базе WordPress

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

  • следует изменить и никогда не использовать стандартные имена для пользователей, имеющих администраторские права, например, admin, administrator и т.д.;
  • необходимо установить капчу, которая существенно снижает риск от взлома путём перебора паролей;
  • для входа в административный интерфейс должен использоваться сложный буквенно-цифровой пароль, не менее 8-10 символов;
  • пароль не стоит хранить в Web-браузере, текстовых файлах и т.д, offline-хранение на листке бумаге гораздо надёжнее;
  • необходимо защищать и пароль почтового ящика, который был указан при установке WordPress;
  • регулярно выполняйте резервное копирование вручную или с помощью специальных плагинов или сторонних программ, при этом полученные резервные копии обязательно должны храниться в нескольких местах;
  • не устанавливайте плагины из неизвестных источников, взломанные платные плагины и темы;
  • следует установить плагины, отвечающие за безопасность файлов и базы данных WordPress, и регулярно проверять состояние сайта с помощью антивируса;
  • вовремя обновляйте ядро, плагины и темы (перед каждым обновлением обязательно делайте полное резервное копирование);
  • файл admin.php стоит переименовать, чтобы затруднить его идентификацию;
  • зарегистрируйте Web-сайт в Яндекс или Google, чтобы быть в курсе проблем, связанных с безопасностью сайта и его индексацией;
  • необходимо проверить права для каталогов и файлов WordPress: для каталогов выставляются права 755 , для всех файлов 644 , отдельно для каталога wp-content права должны быть 777 ;
  • если нет необходимости в регистрации пользователей, то лучше эту функцию отключить совсем;
  • также можно отключить возможность комментирования и оставить только форму для комментирования через социальные сети;
  • следует удалить файл readme.htm , расположенный в корневом каталоге, в котором хранятся сведения об установленной версии WordPress (это надо делать после каждого обновления CMS);
  • также упоминание об используемой версии WordPress следует удалить из файла functions.php , добавив туда строчку: remove_action("wp_head", "wp_generator");
Что делать если проблему так и не удалось решить?

Безвыходных ситуаций не бывает. Может казаться, что вы перепробовали абсолютно все способы обезвреживания вирусного кода или скрытых рекламных ссылок. Возможно, что Web-сайт перестал работать после неудачного лечения от вирусов, и вы уже не в состоянии восстановить его работу. Не отчаивайтесь, а попробуйте обратиться к специалистам, которые за плату помогут восстановить Web-сайт и дадут советы, как улучшить его безопасность и работоспособность. Можно написать в техподдержку WordPress, найти ответ в WordPress Codex или задать вопрос на официальном форуме.

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

Заключение

Большинство представленных советов останутся актуальными еще очень долго, так как они относятся не только к WordPress, но и к любым Web-сайтам, независимо от используемой платформы. Интернет стремительно развивается, постоянно появляются новые обновления и пишутся новые вирусы, закрываются пробелы в безопасности CMS и различных сервисов. Шагайте в ногу со временем, регулярно модернизируйте и обновляйте Web-сайт, и тогда вы сможете избежать подобных чрезвычайных ситуаций.

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

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

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

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

Лазейки для попадания кодов на сайт, также множество.

  • Чаще всего, это темы и плагины скачанные с «левых» ресурсов. Хотя, такое проникновение характерно для, так называемых, зашифрованных ссылок. Явный код так не попадает на сайт.
  • Проникновение вируса при взломе сайта, самое опасное. Как правило, взлом сайта позволяет разместить не только «одноразовый код», но установить код с элементами malware (вредоносной программы). Например, вы находите код, и удаляет его, а он восстанавливается, через некоторое время. Вариантов, опять — таки множество.
  • Сразу замечу, борьба с такими вирусами трудная, а ручное удаление требует знаний. Есть три решения проблемы: первое решение – использовать плагины анитвирисники, например, плагин под названием BulletProof Security .

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

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

    Как искать вредоносный код на WordPress

    Важно понимать, что вредоносный код на WordPress может быть в любом файле сайта, и не обязательно в рабочей теме. Он может занестись с плагином, с темой, с «самодельным» кодом взятого из Интернет. Попробовать найти вредоносный код можно несколькими способами.

    Способ 1. Вручную. Листаете все файлы сайта и сравниваете их с файлами незараженного бэкапа. Находите чужой код – удаляете.

    Способ 2. С помощью плагинов безопасности WordPress. Например, . У этого плагина есть замечательная функция, сканирование файлов сайта на наличие чужого кода и плагин прекрасно справляется с этой задачей.

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

    Способ 4. Если вы можете работать с SSH доступом к каталогу сайта, то вперед, там своя кухня.

    Важно! Каким бы способом вы не искали вредоносный код, перед поиском и последующим удалением кода, закройте доступ к файлам сайта (включите режим обслуживания). Помните про коды, которые сами восстанавливаются при их удалении.

    Поиск вредоносных кодов по функции eval

    Есть в php такая функция eval . Она позволяет исполнять любой код в ее строке. Причем код может быть закодирован. Именно из-за кодировки вредоносный код выглядит, как набор букв и символов. Популярны две кодировки:

  • Base64;
  • Rot13.
  • Соответственно в этих кодировках функция eval выглядит так:

    • eval (base64_decode (...))
    • eval (str_rot13 (...)) //во внутренних кавычках, длинные не понятные наборы букв и символов..

    Алгоритм поиска вредоносного кода по функции eval следующий (работаем из административной панели):

    • идёте в редактор сайта (Внешний вид→Редактор).
    • копируете файл functions.php .
    • открываете его в текстовом редакторе (например, Notepad++) и по поиску ищите слово: eval .
    • если нашли, не спешите ничего удалять. Нужно понять, что эта функция «просит» исполнить. Чтобы это понять код нужно раскодировать. Для раскодирования есть онлайн инструменты, называемые декодеры.
    Декодеры/Кодеры

    Работают декодеры просто. Копируете код, который нужно расшифровать, вставляете в поле декодера и декодируете.

    На момент написания статьи я не нашел у себя ни одного зашифрованного кода найденного в WordPress. Нашел код с сайта Joomla. В принципе разницы для понимания раскодирования нет. Смотрим фото.

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


    Правда жизни такова, что сайт рано или поздно могут взломать. После успешной эксплуатации уязвимости хакер старается закрепиться на сайте, размещая в системных директориях хакерские веб-шеллы, загрузчики и внедряя бэкдоры в код скриптов и базу данных 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 позволяет понять, какие файлы были загружены в момент взлома, какие изменены и кем.
    • В правильно настроенном логе почтового сервера или в служебном заголовке спам-письма при правильной настройке PHP будет имя или полный путь до скрипта-отправителя, что помогает определять источник спама.
    • По логам проактивной защиты современных 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 можно находить вредоносный код, который не смогли обнаружить антивирусы и сканеры. Использование ручного анализа делает процесс лечения сайтов более качественным и эффективным.

    Всем здравствуйте! Сегодня поговорим о вредоносном коде на сайте . Расскажу вам неприятную историю, которая произошла с моим блогом в первый год его существования. А вообще-то, на написание этого поста меня подтолкнула моя постоянная читательница Галина – автор замечательного блога про рукоделие “Дамские пальчики”.

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

    Ну, а я продолжу свой рассказ, про то, как когда-то нашел у себя на блоге вредоносный код и избавился от него…

    История начинается одинаково – как у Галины. С сервиса Яндекс.вебмастер получил я сообщение, что на моем сайте находится вредоносный код. Вообще, при ведении блога неприятности случаются постоянно.

    Первая мысль, когда такое происходит — за что? Ну, а если поразмыслить немного, то вопрос этот сам себе задаешь уже несколько иначе — для чего? А для того, разумеется, чтобы человек, ведущий блог, не замыкался на вариантах из нескольких рутинных действий: написал статью – разместил – ответил на комментарии – установил новый плагин или удалил какой-нибудь, ставший не нужным… И так по кругу 🙂 Про раскрутку не упомянул, ну да ладно…

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

    Вредоносный код — что это такое?

    Что значит вредоносный код? Это php или html код, внедренный вами или ботом в страницы вашего блога. Почему вами? Вот один из вариантов. Смотрите, вам написали на почту, что хотят купить на вашем блоге рекламу или разместить рекламный пост. Заманчиво, правда? Вы, по незнанию и неопытности естественно соглашаетесь, ведь это же здорово – первый заработок!

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

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

    А бывает еще и так, что пытаясь найти какую-либо информацию в сети, натыкаешься на сайт, где вместо привычного интерфейса видишь грозное предупреждение на красном полотнище: Сайт заражен вредоносным кодом и представляет угрозу для вашего компьютера. Это хорошо, так как срабатывает ваша антивирусная программа + системная безопасность компьютера. Ну, а если у вас не установлен антивирус, либо он не сработал, как следует, а вы перешли по зараженной ссылке, либо скачали на свой компьютер зараженную программу или понравившийся трек или картинку??? Тогда пиши – пропало…

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

    До того, как я заказал платно чистку своего блога на фриланс.ру, я проверил его на нескольких сервисах, одни из которых нашли эту “заразу”, а некоторые не заметили. Но, может быть я неправильно ими пользовался? Все может быть…

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

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

    Что это за проверка, если на одном сервисе вредоносный код найден, а на другом, претендующем на звание эксперта в этом деле, все отлично, ничто не найдено. Успокоится человек, а вредоносный код никуда не денется. А вдруг они там и размножаться умудряются? Что случилось на моем сайте?

    У меня было два “вредных” кода. И все два неизвестным образом поселились в теме блога. Видимо она была дырявая, чем и воспользовались злоумышленники, а может быть просто бот-программа подселила этот код ко мне в шаблон. Рекламу я тогда не ставил – рано было, да и если бы поставил, то только от Яндекса или Гугла.

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

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

    Пишет же Яндекс, что это серьезная проблема, значит, и варианты ее решения могут быть гораздо сложнее. Найти – нашел, а как удалить – не знаю, не опытный ведь тогда был. Вот и пришлось обращаться к фрилансерам. За 500 рублей один хороший дяденька почистил мой блог от “заразных какашек”.

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

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

    Safeweb.norton.com - работает, но по отзывам на одном сайте, сервис достаточно кокетливый: то диагностирует наличие вредоносного кода, то скрывает его. Ему я бы не доверял.
    Virustotal.com – из рассказа очевидца: проверка подозрительной ссылки и всего сайта в целом производилась с помощью 33 антивирусных сканеров в on-line режиме. Наличие вредоносного кода подтвердилось. Клиент остался доволен.
    Virusnasaite.ru – обычная проверка, никаких эмоций.
    Siteguard – можно добавлять несколько URL адресов сайтов.

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

    Зачем ждать очередного письма от Яндекса? Не лучше ли самому хотя бы раз в месяц проверять свой сайт на наличие вирусов? А если они все же появятся, то определить хотя бы приблизительно временные рамки их проникновения будет совсем не лишним. Да и откат на несколько месяцев или на один месяц — разница есть?

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

    До встречи на Seo bloge Fomika…

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

    Вчера, проверяя свою почту, я обнаружил письмо от Google, о том что посещение определенных страниц моего сайта может привести к заражению компьютеров пользователей вредоносными программами. Теперь пользователям, переходящим на эти страницы по ссылкам в результатах поиска Google.ru, отображается страница с предупреждением. Этот сайт не был добавлен мной в панель вебмастера Google, поэтому я был оповещен по почте. В панели вебмастера у меня находилось еще несколько сайтов, зайдя туда я в ужасе увидел предупреждение о вредоносном коде еще на двух своих сайтах.
    В итоге, на трех моих сайтах поселился вредоносный код , который мне предстояло найти и уничтожить. Один из сайтов работал на вордпрессе, другие два состояли из обычных php страниц.

    Стоит заметить, что Google среагировал гораздо быстрее Яндекса на наличие вредоносного кода. В панели вебмастера Яндекса, предупреждение о наличии вируса на сайте так и не появилось. Благо, в течении нескольких часов я успел найти этот злосчастный вирус.

    Как правило, чаще всего сайты заражает так называемый iframe-вирус . По сути, этот вирус состоит из кода …. . Вирус ворует все пароли с Total Commander или другого ftp-клиента . В моем случае, произошло тоже самое, код iframe прописался в нескольких десятках файлов на моем сайте. На сайте, который работал на вордпрессе, вредоносный код успел обосноваться лишь в footer.php .

    И так, как найти вредоносный код , если Вы обнаружили что Ваш сайт заражен:

    1. Заходим в панель управления хостингом и меняем пароль. Елси у Вас несколько сайтов, то проделываем это со всеми своими сайтами.

    2. Меняем и удаляем пароли в ftp-клиенте . Больше никогда не храним пароли в ftp-клиентах, всегда вводим их вручную.

    3. Можно зайти на хостинг по ftp , и посмотреть что изменилось в Ваших файлах. Отсортируйте файлы по дате последнего изменения. У тех файлов, которые заражены, дата должна быть свежая и одинаковая. Откройте эти файлы и ищите код iframe , как правило этот код располагается в самом конце. В основном, вредоносный код прописывается в файлах: index.php, index.html , в файлах с расширением .js . Нередко, эта зараза проживает между тегами … .
    Для самописных сайтов, очень внимательно просмотрите все файлы и папки скриптов, вирус частенько прописывается именно там. Так же, излюбленное место обитания этого вируса, в кодах счетчиков для сайта, и в рекламных кодах.

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

    Что касается файлов вордпресса или другой CMS , как правило любая CMS состоит из множество файлов и папок, и найти в них вредоносный код очень сложно. Например, для вордпресса могу порекомендовать плагин TAC . Этот плагин проверяет файлы во всех темах в папке themes на наличие стороннего кода. Если TAC найдет не желательный код, то покажет путь к этому файлу. Таким образом, можно вычислить и маскирующийся вирус.
    Скачать плагин TAC: wordpress.org

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

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



    Понравилась статья? Поделитесь с друзьями!
    Была ли эта статья полезной?
    Да
    Нет
    Спасибо, за Ваш отзыв!
    Что-то пошло не так и Ваш голос не был учтен.
    Спасибо. Ваше сообщение отправлено
    Нашли в тексте ошибку?
    Выделите её, нажмите Ctrl + Enter и мы всё исправим!