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

naiti-vredonosnui-codВредоносный код на сайте

Как найти на сайте вредоносный код, плагины, логи и сервисы чтобы проверить сайт на вирусы.

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

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

Неприятная вещь с которой я столкнулся,- это вирус на сайте. Вредоносный код, который появлялся в некоторых файлах и ломал движок сайта на Вордпресс.

Проявлялось это тем, что возникала ошибка при одобрении комментариев, не работало меню вставки картинок и виджет.

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

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

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

Начну наверно с того, что в кратце расскажу как я искал вредоносный код:

Сразу, как узнал что на сайте какой то вирус, сам просматривал различные файлы, и открывая очередной файл, нажимал Ctrl + F, и в маленьком, открывшемсякак проверить сайт на вирусы окошке (справа, вверху) просто вставлял наиболее встречающиеся вредоносные команды-коды (о которых будет чуть ниже) и жал Enter.. Таким образом проверял основные файлы темы и движка Вордпресс.

Так вообще легко можно найти любой кусочек кода или слова в документе.

А если вы знаете что вирус появился не давно, то при проверке этим нудным способом, нужно проверять файлы, которые по «дате редактирования»(смотрите справа от файла), были изменены недавно.

Я покопался  пару дней- не хрена не нашел, и сначала обратился с просьбой к Людмиле, автору шаблона моего сайта.

Кстати она делает красивые и что важно, оптимизированные и удобные в управлении шаблоны на различные темы. К тому же, встроенные в них скрипты- функции позволяют обходится без многих важных, но тяжелых плагинов, даже All In One SEO Pack не нужен.

Людмила полностью обновила Вордпресс, то есть не только движок(как это делаем мы с вами) а абсолютно все файлы и потом удалила с хостинга все прежние, старые. Вроде бы это сначала помогло, но уже вскоре сбои повторились. Обратился за помощью к фрилансеру на этом сервисе https://www.fl.ru/.

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

Переходим к вредоносному коду на сайте:

Для начала как проверить сайт на вирусы: Это можно сделать на сервисе http://2ip.ru/site-virus-scaner/.

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

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

antivirus-alarmБолее серьезный ресурс для проверки сайта на вредоносный код http://antivirus-alarm.ru/. Проверяет различные функции такие как вирус на сайте, вредоносные JavaScript, плавающие вредоносные фреймы, IE атак, укажет сомнительные ссылки и т.п. Для сканирования он использует антивирусные базы известных, мировых компаний, поэтому и полное сканирование сайта может длиться довольно долго.

Ещё на этом сервисе(внизу) есть раздел где можно посмотреть как выглядят различные виды обнаруживаемых вредоносных кодов.

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

Поиск ошибок и Логи на хостинге

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

Как правило, даже на мощных хостингах таких как http://www.timeweb.ru/ это функция не подключена. Вы сами должны написать в тех.поддержку вашего хостера, что бы подключили логи такие как error_log и access_log. 

error_log

Эти файлы автоматически будут архивироваться на вашем хостинге рядом с корневой(главной) папкой(public.html). Вы их скачиваете себе на комп, открываете например в обычном Ворде и смотрите что находится в данном файле. Особенно это актуально для error_log.

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

access_log — покажет все возможные подключения к вашему серверу. Сами вы вряд ли станете в нем разбираться(там куча всего), я так точно забил, но фрилансеру, если будет нужно, показать можно.

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

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

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

Сервис для постоянной проверки

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

Сервис http://www.siteguard.ru/. Что он дает? Во- первых он находит все подозрительные коды и показывает весь их внешний вид. В том числе безопасные скрипты, так что в этом он как и все. Хотя на мой взгляд и более избирательный.

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

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

Ведь потом, помимо падения посещаемости, будет дополнительная морока с тем, чтобы поисковик восстановил доверие к сайту. То есть это даст вам некоторое преимущество во времени. Эта услуга на сервисе бесплатная, по крайней мере пока.

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

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

Теперь о плагинах для поиска вируса

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

Например на моем сайте, вредный код явно полюбил файл functions.php так как после первого удаления, через время снова оказался на том же самом месте. Кроме того код был обнаружен плагином в файле index.html и в каком то файле с окончанием на «js«.

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

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

И вообще, на будущее, подобную информацию нужно удалять, то есть чистить базу данных MySQL не только спец. плагинами WP-Optimize и Optimize DB, но и вручную на хостинге перейдя в раздел Базы данных MySQL (иначе никак) Это важно чтобы не захламлять базу данных, ведь это влияет на скорость сайта, и тем самым на поведенческий фактор и посещаемость.

У меня например база данных сократилась с 63 Мб до 14Мб. Делать только это нужно аккуратно, предварительно сделав БЕКАП. Ну обо всем таком подробней как нибудь в другой раз или почитайте на блоге Александра Борисова в этой статье.

Только замечу ещё важную вещь,- если при входе в базу данных MySQL, вы забыли пароль и решили его сменить на новый(это легко сделать в данном разделе), то не забудьте зайти в главную папку public.html и найти в ней файл wp-config.php, а в нем найти вот это:

fail 1

и вместо старого пароля (звездочки), вписать этот новый, иначе вместо сайта вы увидите надпись типа,- «Нет доступа к запрашиваемым базам данных», то есть ваш сайт испарится, ну не совсем конечно.

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

Нередко под подозрение попадают счетчики статистики, такие как Ливинтернет, Яндекс Метрика, Mail.ru и вот к примеру, какие кусочки показывающие суть, можно увидеть в таких скриптах(выделено зеленым):

коды счетчиков

 Кроме этого, скрипты рекламы, кнопки и виджеты от соц. сетей:

коды определения

А так же среди подозрительных могут оказаться коды самого шаблона.

Просматривая эти файлы находите в них знакомые вставки- названия, таким способом можно спокойно исключить 90% всех подозрений выданных плагином или сервисом. Ну, а в остальном придется поразбираться. И можно сравнивать старый файл из прошлого БЕКАПА, с новой его версией, в котором был найден этот код, и тем самым тоже понять, в нем ли находится угроза.

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

Я не буду демонстрировать вам найденный код, я оставил его на http://www.siteguard.ru/, и множества подобного вы можете посмотреть на сервисе выше.

Скажу только что он имел в себе такие вкрапления,- Evil и base64_decode в начале самого кода, потом шифрованная длинная абракадабра и iframe и echo внутри кода.

Наиболее часто встречаемыми вредоносными кодами считаются файлы с командами,- sscounter; Evil; base64_decode; iframe; explode.

Но вы должны учесть что к примеру такие части как base64_decode ; iframe; explode не так уж редко используются и в безопасном коде, например у меня сейчас один рекламный скрипт содержит в себе вставку iframe. 

И когда присутствует в коде команда iframe, то как правило, если это вредоносный скрипт,  где то рядом(внутри) есть ссылка на другой сайт, опять же если это не рекламный код. Ссылка может быть обычного и скрытого вида в виде абракадабры.

Теперь о Плагине ТАС. — плагин для обнаружения вирусов на сайте Theme Authenticity Checker (TAC) знаю о таком, но сам не воспользовался, точней сказать, установил уже после удаления вредоносного кода, когда сайт уже какое то время нормально проработал и ещё раз проверил сайт этим плагином.

Конкретней, он ищет несанкционированные(чужие) ссылки на сайте, встроенные вредоносным кодом и перенаправляющие на посторонний ресурс. После активации, его настройки ищите в разделе «Внешний вид».

Скачать плагин можно с официального сайта Вордпресс здесь или установить его через админку.

И ещё один плагин который может вам очень помочь в будущем belavir. Он определяет несанкционированные изменения в php файлах движка Вордпресс.

Принцип действия плагина,- он хеширует php-файлы и потом сравнивает текущие хеши с более ранними версиями и если обнаруживает несоответствия, отображает информацию в админке сайта. К примеру:

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

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

Сразу скажу, плагин конфликтует с другим классным плагином WP Security Scan, что это за плагин (в другой статье) в общем придется выбирать тот или этот.

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

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

Вот страница автора плагина belavir, где вы можете его смело скачать(смотреть справа), сайт одобрен Вордпресс, но перед этим обязательно прочитайте статью на той же странице. 

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

Удаление закодированной ссылки

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

Вот для вида начало и окончание подобной ссылки:

kodir-kod

 Кстати, если заметили в ней тоже скрывается команда base64_decode.

И так, для начала находим кодированную ссылку, обычна она длинная и чаще всего находится либо в  footer.php либо functions.php.

И перед   «<a href=» или  «<?php«(может быть и такое начало), ставим к примеру такой знак «***» это будет метка для нашей ссылки. 

Далее заходим на свой сайт(на главную) и правой кнопкой мыши открываем всплывающее окошко, в нем выбираем- «исходный код страницы» либо «просмотр кода элемента» (в зависимости от браузера).

Нам предстанет весь код нашего сайта.

Теперь на клавиатуре жмем Ctrl+F и ищем маленькое окно внизу слева. Вводим в него наши *** и нам сразу покажет(желтым цветом) где находится этот символ вместе с нашей кодированной ссылкой.

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

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

И напоследок:

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

— При соединении с вашим хостингом для закачки каких то файлов используйте не порт 21, а порт 22(есть при наличии SSH подключения на хостинге). Это специальное подключение для безопасного доступа.

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

И при соединении к хостеру c клиента Fizila или любого другого, — не сохраняйте в них пароли.

— Хоть иногда меняйте пароль к Панели Управления сайта и базе данных. Сам пароль должен состоять не менее чем из 20 символов с разным регистром.

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

— И конечно друзья, перед любыми работами с файлами сайта, и базой данных обязательно делайте бекап корневой папки и базы. И тогда творите что угодно, ломайте хоть ещё много много  раз, все можно вернуть через панель хостинга или фтп клиент закачав на сервис резервную копию сайта. А редактировать файлы нужно в блокноте Notepad++ скачать с официального сайта можно здесь.

Ещё в скорости планирую написать статью как защитить сайт на Вордпресс, и думаю есть чем поделиться. Поэтому если желаете, можете подписаться на обновления

С уважением Андрей Русских

Уважаемые читатели, если статья вам была полезна, буду признателен если понажимаете кнопки (внизу)

Кроссворд для вас(нажмите чтобы начать, если не видно цифр- обновите страницу)

конкурсный кроссворд

Веб-сервисы для проверки сайтов на вирусы

Время на прочтение
5 мин

Количество просмотров 201K

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

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

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

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

Немного теории

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

  • по завершении загрузки страницы в нее добавляется javascript, который выполняет drive-by download атаку
  • пользователь уходит со страницы, в этот момент подгружается код и открывает popunder с контентом “для взрослых”
  • посетитель сайта находится на странице несколько секунд и только после этого его перенаправляют на платную подписку за смс
  • и т.п.

Несколько таких примеров:

Если заранее неизвестно, какой код провоцирует данные несанкционированные действия, то обнаружить его статическим анализом чрезвычайно сложно. К счастью, есть анализ динамический или иногда его еще называют “поведенческим”. Если веб-сканер умный, он будет не просто анализировать исходный код страницы или файлов, но еще и пытаться совершать какие-то операции, эмулируя действия реального посетителя. После каждого действия или при определенных условиях робот сканера анализирует изменения и накапливает данные для итогового отчета: загружает страницу в нескольких браузерах (причем, не просто с разных User-Agent’ов, а с разными значениями объекта navigator в javascript, разными document.referer и т.п.), ускоряет внутренний таймер, отлавливает редиректы на внешние ресурсы, отслеживает то, что передается в eval(), document.write() и т.п. Продвинутый веб-сканер всегда будет проверять код страницы и объекты на ней как до начала выполнения всех скриптов (сразу после загрузки страницы), так и спустя некоторое время, поскольку современные “вредоносы” динамически добавляют или скрывают объекты на javascript, а также выполняют фоновые загрузки внутри динамических фреймов. Например, код зараженного виджета может через 3 секунды или по движению мыши загрузить скрипт, который вставит на страницу javascript с редиректом на загрузку опасного .apk файла. Естественно, никакой статический анализ (кроме как заранее знать, что виджет опасен) или поиск по файлам такое не выявит.

А теперь, с пониманием требований к диагностике сайта и веб-сканерам, попробуем найти те, которые действительно эффективны. К сожалению, то что представлено на первой странице поисковика по запросу “проверить сайт на вирусы онлайн” сразу никуда не годится. Это или “поделки”, которые в лучшем случае могут выполнить статический анализ страницы (например, найти IFRAME, который может быть и не опасен), или агрегаторы сторонних API, проверяющие URL сайта по базе Google Safe Browsing API, Yandex Safe Browing API или VirusTotal API.

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

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

Веб-сканер QUTTERA

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

Веб-сканер ReScan.pro

Выполняет динамический и статический анализ сайта. Поведенческим анализом детектятся скрытые редиректы, статический анализ ищет вирусные фрагменты на страницах и в загружаемых файлах, а базой черного списка определяются ресурсы, загружаемые с зараженных доменов. Ходит по внутренним ссылкам, поэтому кроме основного URL проверяет еще несколько смежных страниц сайта. Приятным дополнением является проверка сайта по блек-листам Яндекс, Google и VirusTotal. Ориентирован в основном на вредоносы, которые обитают в рунете. Поскольку сервис бесплатный, лимит на проверку – 3 запроса с одного IP в сутки.

Веб-сканер Sucuri

Ищет вирусный код по сигнатурам и с помощью эвристики. Отправляет запросы к нескольким URL на сайте с различными User Agent / Referer. Обнаруживает спам-ссылки, дорвей-страницы, опасные скрипты. Кроме того, умеет проверять актуальные версии CMS и веб-сервера. Ограничений на число проверок не замечено. Из небольшого минуса обнаружилось, что список проверенных сайтов с результатами индексируется поисковыми системами, то есть можно посмотреть, какой сайт и чем был заражен (сейчас в поисковом индексе около 90 000 страниц), тем не менее эффективности сканера это не умаляет.

Redleg’s File Viewer

Еще один западный веб-сканер сайтов. Может немного отпугивать своим аскетичным интерфейсом из 90-х, но, тем не менее, он позволяет выполнить полноценный статический анализ сайта и подключенных на странице файлов. При сканировании пользователь может задать параметры User Agent, referer, параметры проверки страницы. В настройках есть проверка страницы из кэша Google. Лимитов на проверку сайтов не обнаружено.

VirusTotal

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

***

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

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




Время чтения статьи
~2 минуты

Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции

Как найти вредоносный код на сайте главное изображение

Вредоносный код может попасть к вам разными способами. Наиболее распространенный — это скачанный платный шаблон где-то бесплатно.

Что такое вредоносный код? Это программа, которая выполняет нежелательные (вредные для владельца сайта и пользователей) действия. К примеру, вы публикуете статью на своем сайте, а она публикуется где-то еще. Таким способом у вас воруют контент. Если у кого-то эта статья раньше проиндексироваалсь, то и принадлежать она будет не вам.

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

Каким образом этот код может попасть на ваш сайт? Не только из-за скачанного бесплатно платного шаблона на ваш сайт может попасть вредоносный код. Также это может произойти из-за скачанных с непроверенных сайтов плагинов.

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

Как искать вредоносный код самому? Первый способ — вручную. Перебирать каждый файл с сравнивать его с бэкапом. Это очень сложный путь.

Второй способ — с помощью плагина Wordfence Security для WordPress или его аналога для других CMS. Этот плагин сканирует файлы. Его главной особенностью является то, что он сравнивает каждый файл блога с эталонным файлом из репозитория. Этот плагин берет каждый файл движка и построчно сравнивает его с таким же файлом «чистого» движка WordPress. Все подозрительные файлы он выводит в отчет для дальнейшего разбирательства. У плагина есть расширенная платная версия.

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

WordPress — админка

сканирование сайта на WordPress

В результате сканирования вы получите примерно вот такой список.

результаты сканирования

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

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

Аватар пользователя Мария Мардеева

Я администрирую сайты с 2012 года. Специализируюсь на безопасности: удаляю вредоносные скрипты, устраняю уязвимости. Лечил как небольшие блоги, так и крупные интернет-магазины. Сегодня поделюсь инструментами, с помощью которых проверяю сайт на вирусы и удаляю их.

Эта статья не для новичков: понадобится знание основ HTML, PHP и JS, а также умение работать в консоли.

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

  1. На страницах появился контент, который владелец не добавлял.
  2. Сайт стал работать медленнее.
  3. При переходе на него пользователи видят другой ресурс.
  4. Упала посещаемость из поиска.
  5. На хостинге появились новые папки.

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

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

Убедиться в заражении

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

Проверка сайта на вирусы через онлайн-сканеры

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

  • SiteCheck
  • ThreatSign

Поведение в разных браузерах и на разных устройствах

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

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

Вид в поиске

Поисковые системы автоматически проверяют сайты на вирусы. Заражённые ресурсы они помечают серым цветом и подписью с предупреждением.

Чтобы проверить свой сайт, введите адрес в поисковую строку Google. Если увидите предупреждение, значит, сайт заражён. Посмотрите вердикты и цепочки возможных заражений.

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

Количество страниц в поисковой выдаче

Еще один вид вируса — дорвеи. Они встраивают на сайт свой контент. Чтобы проверить сайт на дорвеи, снова используйте поиск. Введите запрос site:mysite.com и пересмотрите все результаты поиска. Если найдёте страницы, которые не соответствуют тематике вашего сайта, — это дорвеи.

Найти и удалить зловредов

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

Проанализировать HTML и JS-скрипты

Вредоносные скрипты часто добавляют в исходный код сайта (в браузере нажите Сtrl+U). Проверьте его на наличие посторонних JS-скриптов, iframe-вставок и спам-ссылок. Если найдёте — удалите.

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

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

Проверить дату изменения файлов и папок

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

Например, взлом произошел несколько дней назад, тогда для вывода всех PHP-скриптов, которые были изменены за последние 7 дней, нужно использовать команду:

find . –name '*.ph*' –mtime -7

После выполнения команды нужно проанализировать найденные PHP-скрипты на возможные вредоносные вставки.

Проанализировать директории upload/backup/log/image/tmp

Директории

upload/backup/log/image/tmp

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

Например, каталог upload можно проверить командой:

find /upload/ -type f -name '*.ph*'

Она покажет все PHP-файлы в каталоге upload.

После анализа заражённые файлы можно удалить вручную или командой:

find /upload/ -name '*.php*' -exec rm '{}' ;

Найти файлы и папки с нестандартными именами

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

Найти много PHP или HTML-файлов в одной директории

Все папки на хостинге нужно проверить на множественные php и html файлы в одной директории, сделать это можно командой:

find ./ -mindepth 2 -type f -name '*.php' | cut -d/ -f2 | sort | uniq -c | sort –nr

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

Найти вирусные скрипты по содержимому

Быстро проверить сайт на вирусные скрипты можно командой:

find ./ -type f -name "*.php" -exec grep -i -H "wso shell|Backdoor|Shell|base64_decode|str_rot13|gzuncompress|gzinflate|strrev|killall|navigator.userAgent.match|mysql_safe|UdpFlood|40,101,115,110,98,114,105,110|msg=@gzinflate|sql2_safe|NlOThmMjgyODM0NjkyODdiYT|6POkiojiO7iY3ns1rn8|var vst = String.fromCharCode|c999sh|request12.php|auth_pass|shell_exec|FilesMan|passthru|system|passwd|mkdir|chmod|mkdir|md5=|e2aa4e|file_get_contents|eval|stripslashes|fsockopen|pfsockopen|base64_files" {} ;

Либо можно использовать grep без find.

grep -R -i -H -E "wso shell|Backdoor|Shell|base64_decode|str_rot13|gzuncompress|gzinflate|strrev|killall|navigator.userAgent.match|mysql_safe|UdpFlood|40,101,115,110,98,114,105,110|msg=@gzinflate|sql2_safe|NlOThmMjgyODM0NjkyODdiYT|6POkiojiO7iY3ns1rn8|var vst = String.fromCharCode|c999sh|request12.php|auth_pass|shell_exec|FilesMan|passthru|system|passwd|mkdir|chmod|md5=|e2aa4e|file_get_contents|eval|stripslashes|fsockopen|pfsockopen|base64_files" ./

Эти команды выполнят поиск вредоносного кода в файлах текущего каталога. Они ищут файлы рекурсивно, от того каталога, в котором запущены.

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

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

Проверить базу данных

Часто во время взлома и заражения сайта вредоносный код добавляют в базу данных. Для быстрой проверки базы данных на вирусы нужно зайти в phpmyadmin и через поиск ввести по очереди запросы

<script , <? , <?php , <iframe

Если обнаружите вредоносный фрагмент, удалите его.

Использовать онлайн-сервисы

Для автоматической проверки файлов сайта на вирусы, shell-скрипты, редиректы и дорвеи можно использовать сканеры:

  • AI-Bolit,
  • PHP malware scanner

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

Защитить сайт от взлома

После удаления всех shell-скриптов и вредоносных вставок сайт обязательно надо защитить от взлома. Тогда он станет неуязвим для атак извне.

Защита панели администратора сайта по IP

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

Добавьте в каталог административной панели (administrator, bitrix/admin, wp-admin…) файл .htaccess с содержимым:

Order Deny, Allow Deny from all Allow from 1.1.1.1

Где 1.1.1.1 — IP-адрес, для которого разрешён доступ в админ панель.

Если IP-адрес не статический, можно добавить IP по зоне. Например, провайдер предоставляет IP-адрес вида 192.168.100.34. Тогда в .htaccess можно прописать allow from 192.168.

Защита панели администратора по HTTP-авторизации

Установите на админку сайта дополнительный логин и пароль. Для этого в каталог административной панели (administrator, bitrix/admin, wp-admin…) добавьте файлы .htaccess и .htpasswd .

В файле .htaccess нужно прописать такой код:

ErrorDocument 401 "Unauthorized Access"
ErrorDocument 403 "Forbidden"
AuthName "Authorized Only"
AuthType Basic
AuthUserFile /home/ site.com /admin/.htpasswd require valid-user


Allow from all
satisfy any


Allow from all
satisfy any


Allow from all
satisfy any


Allow from all
satisfy any


Allow from all
satisfy any

Где

home/site.com/admin/.htpasswd

— это полный путь к файлу .htpasswd вашего сервера.

В файле

.htpasswd

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

Сгенерировать их можно на сайте Htpasswd Generator. Введите логин и пароль и нажмите

Create .htpasswd file

. Результат скопируйте в файл .htpasswd.

Защита каталогов сайта

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

Чтобы обезопасить сайт, нужно сделать hardening, то есть «забетонировать» сайт. Для этого нужно на все системные файлы CMS, плагинов и шаблонов, которые для бесперебойной работы не требуют разрешений на запись, установить права 444, для каталогов права нужно установить 555.

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

  1. На все файлы — права 444.
  2. На все папки — права 555.
  3. На файлы, которые должны быть доступны на запись, — 644.
  4. На каталоги, которые должны быть доступны на запись, — 755.

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

В любом случае, если потребуется обновить плагины и шаблон, права можно рекурсивно изменить на 644 и 755, все обновить и заново установить права 444 и 555.

Для комфорта обычных пользователей создаются два PHP-скрипта:

mysite.com/protect.php— изменяет все права на файлы и папки 444 и 555,

mysite.com/protect.php— ставит права 644 и 755.

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

disable_functions =chmod

Для каталогов (backup/log/image…), которым нельзя установить права 555 и в которых нет скриптов, нужно добавить файл .htaccess с таким содержимым:

RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

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

Для защиты сервера ispmanager c антивирусом Dr.Web

Простой способ защитить ваши проекты — пользоваться антивирусом Dr.Web. Он автоматически проверяет сервер на вирусы и устраняет их.

Модуль Dr.Web есть в панели ispmanager. Первый месяц после установки вы можете пользоваться им бесплатно.

От автора

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

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

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

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

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

Сразу замечу, борьба с такими вирусами трудная, а ручное удаление  требует знаний. Есть три решения проблемы: первое решение – использовать плагины анитвирисники, например, плагин под названием BulletProof Security.

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

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

Далее, попробуем найти вредоносный код самостоятельно, без плагинов и «волшебников».

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

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

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

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

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

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

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

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

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

  1. Base64;
  2. Rot13.

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

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

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

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

Декодеры/Кодеры

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

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

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

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

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

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

©www.wordpress-abc.ru

Еще статьи

Похожие посты:

Понравилась статья? Поделить с друзьями:
  • Как найти файлы без расширения total commander
  • Молитва как найти хорошего работника
  • Как найти микрофон прослушку
  • Как найти техподдержку в сбербанк онлайн
  • Состояние ошибки 0xc000012f windows 10 как исправить