Здравствуй!
Год назад мы столкнулись с проблемой. Если в двух словах — нас взломали. Взломали творчески, так, что мы не сразу поняли, что вообще происходит. В процессе решения проблемы получилось овладеть полезными навыками: составлять abuse-обращения и результативно общаться с хостерами, в т.ч. — зарубежными, больше радеть о безопасности нашего ресурса, постоянно мониторить наличие нашего сайта в индексе Яндекс и Google, и внимательно относиться к мелочам. В описываемом случае обычный символ «-» (тире) сыграл с нами злую шутку.
Мы столкнулись с проблемой взлома впервые, возможно, какие-то вещи с самого начала были очевидны, а мы их не видели, или наши шаги в поисках решения вызовут улыбку, или непонимание у профи. А может, наш опыт станет полезным для тех, кто сталкивается с проблемами в сфере информационной безопасности.
Итак, наш основной ресурс находится по адресу: www.ist-budget.ru: там есть своя постоянная аудитория, массив проиндексированных страниц, например, справочник организаций: www.ist-budget.ru/customers.php и www.ist-budget.ru/customers.php, где в общей сложности содержится более 5 млн. страниц; разный интерактив, перспектива развития и прочее. Для оптимизации ресурса, разработок и экспериментов мы используем сайт-песочницу с аналогичным именем, но на другом домене: www.ist-budget.com. Песочница закрыта от посещений «извне», в т.ч. и от поисковых роботов, которые индексируют странички.
Первые тревожные сигналы стали поступать в июне 2013г., когда по запросам в результатах поисковой выдачи Google стали появляться наши страницы, но принадлежащие не основному ресурсу, а вроде бы как песочнице. Мы проверили robots.txt комовского сайта (песочницы), еще раз убедились в том, что он закрыт от индексирования, и предположили, что скоростной Гугл мог проиндексировать часть страниц в момент кратковременного снятия ограничений.
А через несколько дней появился повод для более серьезного беспокойства – резко снизилась посещаемость основного ресурса на домене RU, как следствие – упало количество входящих обращений от посетителей сайта. И снова в поисковиках всплыл сайт-песочница, но с обстоятельством, от осознания которого нас синхронно прошиб холодный пот – мы пригляделись и обнаружили, что в названии «песочницы» отсутствует знак тире, т.е. вместо адреса www.ist-budget.com был адрес www.istbudget.com, удивительно, что раньше мы на эту вещь внимания не обратили. Сервисы типа whois ожидаемо показали, что сайт был зарегистрирован буквально пару недель назад, на приватную персону, американский доменный регистратор CLOUDFLARE и молдавский
Детальный анализ показал: сайт-клон молдавашка полностью сохранил наш исходный дизайн, структуру и содержание страниц основного домена и поддоменов. Контактные данные (адрес, телефоны, реквизиты) тоже остались без изменений, кроме указанного на главной странице логина Skype: вместо ist-budget.ru появился istbudget.com, хотя, сам Skype этот логин знать категорически отказался (т.е. этот логин не был зарегистрирован).
В это же время наш основной домен стал сильно тормозить, в основном, по причине того, что клон продолжал парсить с него новые странички и обновившуюся информацию в основных разделах. Каждое “зависание” сопровождалось смс от полезной утилитки Пинг Админ (эта утилита в итоге сыграла чуть ли не самую важную роль в решение проблемы), постоянно мониторящей быстродействие сайта, количество “тревожных” смс от неё о зависании тогда измерялось в сотнях :)
Как выяснилось, клон проксировал все запросы на нас, а в ответах заменял все ссылки на себя, добавляя в код страницы рекламу. Проблема была решена путем настройки .htaccess файла, а именно добавлением строк
SetEnvIfNoCase REMOTE_ADDR "^xxx.xxx.[0-9]+.[0-9]+$" REDIR=toredir
RewriteCond %{REDIR} ^toredir$ [NC]
RewriteRule ^(.*)$ www.ist-budget.com/redir.php?page=$1 [R=301,L]
которые отправляли все прокси запросы с пула адресов фишингового сайта на специальную страничку, текст которой гласил, что вы находитесь на фишинговом сайте и можете найти нас в поиске Google по названию компании. К такой хитрости пришлось прибегнуть из-за того, что код, проксирующий все запросы на наш сайт, автоматически заменял все ссылки на фишинговый домен.
Также большое число запросов от фишингового прокси высветило проблему с оптимизацией SQL запросов и некоторых фукнций. Запросы и функционал были полностью переработаны, при этом мы использовали Xdebug и Webgrind в качестве инструмента анализа.
Быстродействие было относительно восстановлено, но остались две проблемы:
1. В индексе поисковиков по-прежнему висел сайт-клон, а не мы.
2. На сайте-клоне все равно происходили обновления синхронно с обновлениями на нашем домене, но без явных зависаний, что добавило нам еще больше недоумения.
И тут было больше вопросов, чем ответов. Вот один из них: если поисковики определили полный дубль двух сайтов — почему из индекса они выбрасывают сайт, который явно старше (домен зарегистрирован на три года раньше, чем у клона), а не свежепоявившийся дубликат? Много было бредовых вариантов-ответов, например мы предположили, что приоритетом для поисковиков (в частности — Гугл) всегда является сайт в доменной зоне *.com, именно поэтому наш основной RU-домен “ушел”. А еще была переписка с техподдержкой Google. Хотя, односторонний поток писем в адрес саппорта Google сложно назвать перепиской, мы просто пытались выяснить, наложены ли какие-либо санкции на наш сайт, что стало причиной вылета из индекса. Ответных писем не было. А потом и вовсе оказалось, что мы искали решение совсем не там.
Самой светлой мыслью в происходящем хаосе стала идея написать письмо провайдеру, где хостился сайт-клон. Предварительно созвонившись с молдавской техподдержкой (кстати, довольно сносно говорят по-русски), мы составили жалобу на русском и английском (требование такое) языках и отправили обыкновенной электронной почтой.
_________________________________________
Письмо начиналось вот так:
Добрый день.
13 июня 2013 года был зарегистрирован фишинговый сайт www.istbudget.com/
Данные подтверждают, что он
IP 178.175.138.11
Хост: 178-175-138-11.ip.as43289.net
Город: Chisinau
Страна: Moldova, Republic of
IP диапазон: 178.175.128.0 — 178.175.255.255
Название провайдера: I.C.S. Trabia-Network S.R.L.
Whois Server Version 2.0
Domain Name: ISTBUDGET.COM
Registrar: SHANGHAI YOVOLE NETWORKS INC.
Whois Server: whois.yovole.com
Referral URL: www.yovole.com
Name Server: ERIC.NS.CLOUDFLARE.COM
Name Server: RUTH.NS.CLOUDFLARE.COM
Status: clientTransferProhibited
Updated Date: 13-jun-2013
Creation Date: 13-jun-2013
Expiration Date: 13-jun-2014
…
_________________________________________
Ответ не заставил себя долго ждать, в течение двух часов без каких-либо бюрократических проволочек сайт-клон был заблокирован, при попытке зайти по адресу сайта-клона Хром сообщил, что по указанному адресу сайта не существует. К сожалению, на просьбу предоставить данные о владельце сайта-клона поступил отказ и предложение получить эти данные через обращение в местные органы безопасности. Мы отпраздновали победу и разошлись по домам, а утром…
А утром, к нашему неудовольствию, сайт-клон снова был в строю. На наше счастье хостился в этот раз он не где-то в Китае на сомнительных прокси, а непосредственно у своего доменного регистратора — в Америке. Мы пошли уже по отработанной схеме — отправили жалобу на abuse доменного регистратора и в течение нескольких часов сайт снова был заблокирован, на этот раз — окончательно.
Вообще, приятно порадовала быстрая реакция провайдера и доменного регистратора. Без дополнительных вопросов и сложностей мы получили желаемый результат. А дальше было ожидание, что пройдет 2-3 дня с момента “смерти” клона и наш сайт вновь вернется в индекс поисковиков, однако, это не происходило, в выдаче по-прежнему были страницы сайта-клона, при переходе на которые Хром регулярно сообщал, что по этому адресу ресурс не существует. И снова мы писали письма в саппорт Яндекс и Google. Создать письмо в вебмастере Яндекса не получалось, поэтому, просто писали в техподдержку в свободной форме.
Решение проблемы нашли случайно и совсем не там, где прикладывали усилия: утилита Пинг Админ перестала присылать смс в моменты, когда сайт зависал. Мы обратили на это внимание, зашли в личный кабинет сервиса, проверили баланс (он был положительным), увидели, что Пинг Админ определяет наш сайт как недоступный вот уже в течение нескольких дней. Написали письмо в саппорт сервиса, сообщили об ошибке, а в ответ получили письмо, где техподдержка сообщила о том, что наш основной домен отдает 301-ый редирект для поисковых роботов на адрес комовского сайта-паразита, соответственно, роботы при заходе на основной ресурс получали сигнал о том, что данный домен является неосновным зеркалом нового сайта-клона.
Благодаря 301 редиректу «зеркальщик» яндекса благополучно склеил наш основной домен с новым паразитным доменом, и именно поэтому сайт-клон начал индексироваться и появился в результатах поисковой выдачи вместо основного ресурса.
Мы нашли и исправили уязвимость, порадовавшись, что легко отделались, удалили редиректы, прописанные чужими руками в нашем коде. К слову, паразитный код нашелся довольно легко по вызову eval(base64_encode()).
В течение 30 минут наш основной домен вернулся в индекс Google, чуть позже — в Яндекс. И это уже совсем другая история.
Автор: Andreich64