Белые начинают: так ли уж хороши “хорошие” боты?
Белые начинают: так ли уж хороши «хорошие» боты?
Казалось бы, вопрос с плохими и хорошими ботами достаточно прост для компаний: блокируй одних, пропускай других. Однако в этом процессе есть свои нюансы. Связано это и с тем, что плохие боты маскируются под хороших, и с тем, что неправильно настроенные боты из белого списка могут испортить трафик и положить сайт, и с тем, что компаниям даже не всегда нужно блокировать бота, а нужно просто понимать, где он прошелся. Давайте разберемся, чем плохие боты отличаются от хороших.
Немного статистики
Согласно исследованию 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-режим, который позволяет ботам обходить и средства защиты, и ловушки. Что думаете вы — как будут развиваться хорошие и как это будут использовать плохие боты?