Table of Contents
Предположим, у вас есть интернет-магазин, в котором ежедневно оформляют от 10 до 50 заказов. А теперь представьте, что с некоторых пор количество ежедневных заказов вырастает до тысячи, причем 99% из них — «ложные», то есть заказаны не людьми, а ботами. В интерфейсе интернет-магазина все заказы выглядят корректными: товары в корзине, все поля заполнены (есть имя, email, адреса, телефон) и в некоторых случаях заказ даже может быть подтвержден с телефона через СМС, то есть отличить настоящий заказ от ненастоящего на глаз невозможно.
А через некоторое время вам приходит вот такое письмо:
|
Сначала владельцы магазинов думали, что это накрутка поведенческих факторов:
|
Но после получения «писем счастья» им стало очевидно, что цель — не бан со стороны поисковиков, а шантаж. Хотя потенциально подобный вид атак может быть и заказом со стороны конкурентов.
Приведенный выше пример является новым видом атаки на e-commerce сайты (интернет-магазины, сайты с формами заявок). Он чем-то напоминает DOS атаку, но направленную не на на отказ в обслуживании оборудования или исчерпание ресурсов на сервере, а на бизнес-процессы интернет-магазина. То есть при таком большом числе заказов менеджеры просто не будут справляться с обработкой, так как предварительно им придется выяснить, какие из заказов пришли от реальных покупателей, а какие — от «фейковых».
К сожалению, информации для проведения детального анализа и выработки некоего универсального решения для интернет-магазинов пока еще не достаточно. Тем не менее мы бы хотели уже сейчас поделиться нашими идеями, наблюдениями и техническими деталями, которые позволят владельцам интернет-магазинов задуматься о данной проблеме и прорабатывать варианты ее решения на будущее.
Итак, основная задача — научиться отличать заказ, оформленный «живым» человеком от заказа, оформленного ботом.
Сразу хотелось бы обратить внимание на то, что задача не решается блокировкой ботов по IP, добавлением капчи или невидимого поля, которое заполняется на javascript. Современные реализации ботов позволяют эмулировать поведение посетителя сайта достаточно хорошо (как минимум полностью эмулируется браузерная среда, включая поддержку javascript, куки, флеш-плейера) и, порой, отличить бота от посетителя по логам (без дополнительных вспомогательных «маркеров» и «флажков» у сессии) крайне сложно.
Итак, рассмотрим поведение бота-покупателя в интернет-магазине и определим, какими свойствами обладает «ложный» заказ, оформленный им (информация собрана по форумам, из переписки с клиентами и анализа логов атакованных интернет-магазинов):
- посетитель-бот приходит с поисковой системы (хотя ключевые слова не всегда релевантны содержимому страницы)
- у бота меняется User Agent, IP адреса принадлежат стране, на которую ориентирован магазин (например, все IP — российские).
- бот проводит на сайте какое-то время, перемещаясь по товарным позициям: в каких-то случаях фиксированно число просмотров, в каких-то время просмотра.
- бот заполняет форму заказа (есть поддержка многоэтапного заполнения форм)
- заказ оформляется на некий реальный телефон, вписывается какое-то имя и фамилия, email (обычно на @yandex.ru). Контакты всегда разные, но визуально не отличаются от реальных покупателей.
- некоторые владельцы интернет-магазинов утверждают, что у них настроена система подтверждения заказов по email и смс, и при этом заказ имеет статус подтвержденного. То есть боты могут подтверждать заказы через смс или по email.
Это действительно может быть реализовано, учитывая широкое распространение вредоносного кода для мобильных устройств, которое умеет перехватывать и отправлять смс незаметно для владельца мобильного (на Android). А подтверждение по почте — еще более простая операция. Поэтому стоит исходить из того, что боты умеют подтверждать заказы как настоящие покупатели. - Яндекс.Метрика не показывает заходы бота (здесь можно предположить одно из двух: или бот не загружает некоторые javascript, или он в некоторых случаях работает без эмуляции браузера, то есть работает сразу через HTTP запросы на конкретные URL).
Согласно жалобам владельцев интернет-магазинов, атаки уже успешно проводят на сайты, работающие на Bitrix, OpenCart, DLE, Joomla. Скорее всего, атаковать можно любую платформу, поскольку задача обхода ряда товарных позиций с последующим заказом и оформлением достаточно просто формализуется и представляется в виде настраиваемого алгоритма, у которого остается лишь задать отдельные параметры (адреса страниц, поля формы, вероятностные параметры и т.п.).
Посмотрим лог одного из интернет-магазинов на Joomla:
|
Так выглядит сессия от захода до оформления заказа. Сессия длится примерно 1 минуту.
Вот еще одна выдержка из лога:
|
В целях сокращения лога из него мы убрали загрузку картинок, css и .js. Но следует учесть, что ботом выполняется полноценный серфинг с загрузкой всех статических элементов страницы.
Ряд вопросов, которые часто поднимают в процессе обсуждения подобной проблемы:
1Могут ли это быть люди («индусы или китацы», студенты и пр), которым заплатили за оформление фейковых заказов?
Вряд ли, по логу время работы бота четка регламентированно, заполнение форм происходит очень быстро. Да и с экономической точки зрения неэффективно реализовывать подобную атаку с привлечением большого числа «человеков», так как с технической точки зрения разве что некоторые виды капчи сложно распознать. Но как показывает пример Xrumer’а — нет ничего невозможного, пробив у него около 100% (например, через сервис «антикапчи»).
2Зачем это делают?
Из-за денег. Это одна из форм шантажа. Кстати, это статья 163 УК РФ и злоумышленники про это знают.
3Может быть можно договориться со злоумышленниками?
Обычно нельзя. Ничто не мешает им получить деньги и продолжить «бомбить» сайты с целью получения еще денег. Понятия «порядочный шантажист» в природе не существует.
4Может ли защитить от подобной атаки какой-нибудь сервис с проксированием траффика или Anti-DDOS сервис?
К сожалению, в данный момент подобных решений нет. Это не DDOS. Но, возможно, со временем облачные сервисы научатся отличать подобных ботов. В ближайшее же время стоит рассчитывать только на свои силы.
Наши мысли относительно защиты от подобных атак:
- Универсальное решение, эффективное для любой CMS интернет-магазина выработать сложно, но для конкретного сайта его реализовать возможно.
- В первую очередь стоит попробовать простые (классические) варианты защиты от ботов (вдруг в вашем случае работает какая-то простая реализация бота, например, без браузерной эмуляции):
- невидимые поля в форме, которые меняются на javascript и анализируются в обработчике форм на сервере.
- нестандартная капча при оформлении заказа на каком-нибудь этапе
- нестандартные url для отправки POST запросов с оформленным заказом
- Анализ сессий реальных посетителей и ботов-покупателей позволит выявить паттерны и поведенческие факторы, на основе которых можно устанавливать определенные маркеры сессий (то есть «флажки»), анализ которых в момент оформления заказа позволит отделять «зерна от плевел». Например, фиксировать переходы между товарными позициями (считать их кол-во), вычислять среднее время, проведенное на странице товарной позиции (анализировать среднее время), анализировать скорость заполнения формы. Конечно, бот также может менять параметры скорости заполнения форм, числа переходов, но оценивая несколько параметров, вероятность обнаружения бота значительно возрастает. А делать полноценную эмуляцию человека на стороне клиента — достаточно дорого для разработчиков бота, поэтому по каким-то параметрам бот все-равно будет себя выдавать.
- Будьте готовы к доработкам интернет-магазина. Анализ и фильтрация ботов требуют изменений в скриптах магазина. Не стоит надеяться, что будет достаточно установить какой-нибудь универсальный плагин «антибот» для интернет-магазина и решить проблему «фейковых» заказов. То есть на примете должен быть опытный веб-разработчик, который сможет модифицировать скрипты для сбора статистики, ее анализа и выработать решение.