Иногда владельцы сайтов сталкиваются с неприятностями в виде нежелательных скриптов, редиректов на сторонние сомнительные сайты, spam-рассылками, сообщениям хостинга и рекламных кабинетов yandex и google о том что на сайте обнаружено вредоносное ПО. Как следствие хостинг ограничивает сайт в ресурсах, отключая и блокируя исполнение таких функций сайта, исходящие соединения, отправка почты. Реклама останавливается, поток клиентов снижается и бизнес начинает нести убытки. Иногда происходит страшное, сайт выпадает из выдачи. А это уже серьезно. Давайте разберемся что же делать в данной ситуации.
Ответ один. Лечить. Недавно обратился ко мне клиент с похожей проблемой. Со слов клиента сайт забанен в рекламном кабинете google за наличие на сайте вредоносного ПО. Пациент под управлением NetCat 5.2. Первым шагом создаем изолированную среду для манипуляций, поэтому скачиваем сайт на локальную машину, разворачиваем и поднимаем локальный виртуальный хост с именем домена сайта. Это нужно для того чтобы проверить как ведет себя сайт при переходе на него из поиска. Включаем логирование всего что-только можно, навешиваем xdebug.
Существует практика когда при прямом заходе на сайт ничего не происходит, а для поискового и/или рекламного трафика показывается реклама, или посетитель вовсе перенаправляется на сторонний сайт, при этом имеются более или менее точные способы определить кто пришел, живой посетитель или поисковый робот. Например так.
$crawlers_user_agents = 'googlebot|bingbot|bingpreview|slurp|iaskspider|';
$crawlers_user_agents .= 'msnbot|adidxbot|seznam|mediapartners|baidu|';
$crawlers_user_agents .= 'adsbot|yandex|mail.ru|teoma|hotbot|duckduck|';
$crawlers_user_agents .= 'sosospider|sosoimagespider|sogou|feedfetcher|';
$crawlers_user_agents .= 'gigablast|gigabot|qwant|youdao|blekko|scoutjet';
$is_bot = preg_match("/{$crawlers_user_agents}/i", $user_agent);
Подобным образом определяется поисковый и рекламный трафик и злоумышленник уже может делать с ним что угодно. Поэтому проходим поиском по коду с подобными юзерагентами. И анализируем найденное. И помечаем закладками в IDE. На этом этапе ничего удалять не нужно, дабы не напугать злодеев и не спровоцировать их на встречные меры. Следующим этапом ищем конструкции типа:
eval(
gzinflate(
base64_encode(
str_rot13(
hash_hmac(
Подобные вещи позволяют прятать вредоносный код, и исполнять его. Однако эти функции могут быть использованы и в мирных целях, поэтому сравниваем найденое с исходниками чистой системы и внимательно анализируем то, что нашли. Нельзя исключать вариант того, что предыдущие горе-разработчики вносили правки в код системы. От этого тоже надо избавляться, однако, не сейчас. А перед обновлением системы.
Дальше нужно просканировать сайт онлайн антивирусами для сайтов. Их очень много, в google поможет в поисках. Эти антивирусы подскажут, есть ли какой-то подозрительный js-код на страницах.
Дальше для серверной части сайта используем тяжелую артелерию. Скачиваем АйБолита и натравливаем его на домашний каталог на сервере, чтобы просканировать не только папку с сайтом но и все что доступно из аккаунта хостера. Скрипт сформирует удобный отчет и останется только проанализировать результаты. Проверять нужно каждое срабатывание, потому что они бывают ложными (особенно в параноидальном режиме).
Последним этапом скачиваем adminer. Цепляемся к базе и с помощью его поиска по всем таблицам ищем все вышеупомянутые конструкции в базе.
На этом можно было бы и закончить, однако это еще не все. Стоит проверить еще и выдачу поисковых систем по данному ресурсу на наличие в ней дорвеев. Запросом для Google типа site:pacient.ru вытаскиваем всю выдачу, запасаемся кофе с печеньками и перелопачиваем выдачу на наличие в ней страниц по продаже виагры, казино и прочего. Если что-то есть пробуем перейти. А так как в самом начале мы перенастроили виртуальный хост на локальную машину, то переход произойдет именно туда. В логах смотрим куда идет запрос, включаем xdebug, расставляем брейкпоинты и прослеживаем всю цепочку запроса (если мы до этого что-либо упустили в поисках). Надо, так же, следить за появлением сторонних cookie. Иногда бывает очень сложно отловить дорвеи потому что при переходе на него ставится кука, и в следующий раз дорвей просто покажет 404 ошибку, хотя сам никуда не делся.
Теперь когда у нас все собрано, чистим сайт на рабочей песочнице, при необходимости удаляем лишнее с папок на сервере (если что-то найдено вне каталога сайта) и синхронизируем локальную копию с продакшн-сервером. После этого накатываем обновления системы и модулей. По возможности ставим на продакшн контроль версий и организуем деплой через репозитории, чтобы минимизировать риски и вовремя реагировать на изменения. Я так же предварительно копирую себе на стенд все интересные находки для более детального анализа, да и просто поиграться, разобрать принцип работы и повысить навык. Это далеко не все способы лечения и алгоритмы могут быть сложнее, тогда приходится более детально разбираться в ситуации.
Если у вас случилось нечто подобное, вы всегда можете обратиться ко мне по контактам, указаным на сайте и я помогу вам избавиться от проблемы раз и навсегда.
0 Коментариев
Оставить коментарий