Белые начинают: так ли уж хороши "хорошие" боты?

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

Немного статистики

Согласно исследованию GlobalDots 2019 Bad Bot Report, сегодня почти 39% всего онлайн-трафика составляют не люди, а боты. Из них 20,4% трафика генерируют плохие боты, а 17.5% - хорошие. Доля ботов в трафике при этом активно растет, причем по итогам 2019 года трафик «плохих ботов» вырос больше, а доля «хороших ботов» сократилась. Видно, что и те и другие активно делят рынок, и во время “киберпандемии”, скорее всего, разрыв станет еще большим.

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

Белые и черные

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

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

Поисковые (crawlers)

Они разработаны поисковыми системами для индексирования страниц и релевантной выдачи веб-сайтов при запросе пользователя, а также сканируют сайты и заносят их в особую базу данных, в которой анализируются многие факторы, такие как уникальность текста, изображений, нарушение или соблюдение авторских прав и т.д. Боты поисковых систем генерируют около 30% мирового интернет-трафика. Примеры: Googlebot, YandexBot, а также ematchers для картинок – это поиск по картинкам, например, YandexImages.

Боты данных или медиа-боты

Позволяют быстро сохранять и получать доступ к важной информации, например, к новостям, прогнозу погоды, курсам валют. Примеры: Amazon Echo, Google Home, Siri, Алиса. Сюда же можно отнести ботов новостных агентств.

Боты проверки авторского права

Проверяют веб-контент, который может оказаться плагиатом: статьи, видео, фото без ссылки на источник. Чаще всего встречаются в социальных медиа, где основную часть контента создают пользователи. Пример - Content ID на YouTube, которые проверяет присутствие в роликах защищенного авторским правом контента.

Торговые боты

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

Боты также применяются, когда требуется лучшая реакция по сравнению с возможностями человека (например, игровые боты, боты для интернет-аукционов и тому подобное).

Помимо перечисленных, в whitelist Variti попадают боты различных банков и платежных систем, которые помогают автоматизировать процедуру оплаты, боты, которые делают preview в социальных сетях и мессенджерах - заранее собирают информацию, сканируют онлайн-страницу и превращают ее в картинку для превью. Также там есть универсальные мониторинги, которые проверяют состояние серверов, доступность сервисов из интернета и т.д, боты по поиску нецензурных слов на странице и AdSense-боты, которые сканируют страницы в интернете и таким образом понимают, на какой странице какая тематика и какую рекламу показывать.

Пропускаем хороших вперед

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

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

Однако помимо глобального белого списка есть еще и локальный белый список. Если у клиента непубличный сайт, и он не хочет, чтобы к нему кто-то ходил извне и индексировал, то он может отключить гло��альный список. А вот в локальный белый список можно включать собственные сервисы клиента.

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

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

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

Однако “обелять” можно не только по IP адресам, хорошие боты могут делать это и по заголовкам. Например, клиент использует бота, которому нужно иметь беспрепятственный доступ на сайт, но у него плавающий/динамический IP адрес. В этом случае клиенту будет непросто постоянно вносить его в локальный белый список. Тогда, например, мы можем выделить этому боту или сервису особый token в заголовке. Он служит своеобразным паролем и заранее записывается. Тогда все запросы с содержанием этого токена с любых IP адресов не будут подвергаться проверкам. В случае использования внешних автоматизированных сервисов, с которыми нет возможности какой-либо интеграции со стороны защищаемого сервиса, есть вариант обеления по уникальному заголовку user agent с определенным допустимым рейт-лимитом. При превышении заданного порога такие запросы будут подвергаться проверкам на ботовость и не получат доступ к сайту.

Также можно обелять по конкретным локациям или по разделам на сайте. Например, у клиента есть сайт и мобильное приложение, которое ходит в определенную локацию типа website.com/api. У нас есть отдельная услуга по защите мобильных API, но если клиент по какой-то причине не хочет ею пользоваться, то они могут попросить обелить все запросы в область API с любых IP адресов с любых устройств. Но мы очень не рекомендуем действовать таким образом, так как мобильные API сами по себе очень часто становятся целью автоматизированных атак.

Глобальные и локальные whitelists, включая обеление отдельных IP адресов, клиенты могут самостоятельно подключить в своем личном кабинете, а по заголовкам и локациям – через техподдержку Variti, например, в Telegram-чате Variti при подключении.

Как хорошие боты могут положить ресурс

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

Поисковые боты также могут положить сайт, как и “плохие”, если выставить неправильные настройки. Например, можно разрешить Яндексу индексировать сайт со скоростью не 10 страниц в секунду, а 1000. У большинства сайтов в корне есть файл robots.txt, описывающий правила и параметры его индексации, в котором в том числе можно задать скорость индексирования для поисковых систем. Например, если у сайта сильно ограничены ресурсы на одновременное количество обслуживаемых посетителей, то можно эту скорость уменьшить. Если выставить неправильные настройки, то белый бот-поисковик может начать агрессивно сканировать сайт, и он не выдержит нагрузки.

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

Притвориться белым

Определить, бот или человек, при должном умении и наличии интеллектуальных технологий достаточно просто. А вот отличить плохого бота от хорошего уже сложнее. По сути эти боты между собой не отличаются. Белый или черный – это просто термин, который означает, разрешен ли автоматизированный доступ для этого конкретного вида на ресурс. Чтобы получить такое разрешение, боты используют разные методы маскировки.

В исследовании GlobalDots 2019 Bad Bot Report насчитали аж 523 различных типов маскировок ботов. Больше всего «плохих ботов» (55,4%) притворяется браузером Google Chrome. На втором месте Firefox, на третьем - мобильный браузер Android. В списке также Safari, Internet Explorer, мобильные браузеры Safari Mobile, Opera, поисковые боты Googlebot и Bingbot и многие другие.

Интересно, что боты, которые притворяются браузерами, начали выпускаться еще 20 лет назад, и некоторые из них до сих пор циркулируют в сети - например, боты, притворяющиеся Internet Explorer 5, которых сделали в 1999-ом. А 0.8% плохих ботов используют личину Internet Explorer 7. Некоторые из них даже находят свои цели на немногочисленных сайтах, на которые можно зайти только с особых версий браузеров. Очевидно, что таких онлайн-ресурсов исчезающе мало, и можно просто блокировать ботов с устаревших версий как плохих.

Процесс выявления и сегрегации ботов усложняет еще и то, что почти 74% «плохих ботов» - это advanced persistent bots (APB), сложные боты, которые используют микс технологий и методов. Их сложнее всего обнаружить, поскольку они заходят с разных подсетей, рандомно меняют IP-адреса, используют анонимные прокси-серверы, Java-скрипты и peer-to-peer сети, умеют автоматически искать необходимую информацию в интернете и часто удачно копируют человеческое поведение.

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

Мы в Variti не опираемся на user agent, а сопоставляем данные с другой информацией, включая IP адрес, статистику, технические метрики, особенности поведения и множество других факторов. Например, обращаем внимание на особенности выполнения кода и различных браузерных расширений, которые в случае ботов (даже для Chrome, запущенного в режиме headless) работают не совсем так, как в реальных браузерах.

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

Как узнать, что вас "заполонили роботы"

“Черные” боты выделяются своей агрессивностью, так как хороший бот вряд ли будет делать пот��нциально опасное количество запросов в секунду. Так что опознать ботов можно по возросшему числу запросов, которое никак не сказывается на конверсии, а только замедляет работу ресурса. Даже если резко выросла посещаемость из правильных и нужных каналов, но при этом посетители просматривают очень мало страниц, а статистика демонстрирует высокий показатель отказов — это почти наверняка боты. Также хорошим индикатором может быть наплыв посетителей из стран, где вы не ведете бизнес или очень малое время, которое они проводят на сайте - обычным людям нужно какое-то время, чтобы почитать текст на сайте и пролистать странички.

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

Нужно следить за заходами при помощи устаревших версий браузеров Firefox, Chrome, Internet Explorer и Safari и трафику, идущему через прокси-серверы либо другие пункты доступа, которые анонимизируют источник трафика. Можно отслеживать неудачные попытки авторизации на сайтах или в связанных с ними приложениях.

Для обозначения запрещенных мест для ботов администратор размещает на сервере файл robots.txt — он сообщает поисковым ботам, какие страницы или файлы на вашем сайте можно или нельзя обрабатывать. Хороший бот не будет ходить по путям, которые ему запретили, а плохой обычно старается посетить абсолютно все. Иногда админы ставят таким способом ловушки на ботов: создают тайное место на сайте, и всех пойманных в нем без доверенной подписи ботов банят. Это можно сделать через невидимую ссылку, ссылку через прозрачную однопиксельную картинку или псевдо-адрес страницы с какой-либо приставкой, после чего закрыть путь в эту директорию в файле robots.txt. Для спам-ботов это делать в виде фальшивой формы для регистрации или отправки комментария.

Белые начинают

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