Коротко: под словами «боты на сайте» скрывается не один вид атак, а 21 разный тип автоматизированных угроз. Их описывает классификация OWASP Automated Threats (OAT): от сканирования уязвимостей и скрейпинга до подбора паролей, спама и скликивания рекламы. Ниже русская адаптация с пояснением, как каждая угроза выглядит у вашего сайта и где её искать.
Когда говорят «на сайте боты», обычно имеют в виду что-то одно: нагрузку, спам в формах или странную статистику. Но у разных ботов разные цели, а значит разные следы и разные способы защиты. Организация OWASP составила общий словарь автоматизированных угроз: каждому типу присвоен номер (OAT-001 … OAT-021). Этот словарь удобно использовать как чек-лист: пройти по списку и понять, какие угрозы касаются именно вашего сайта.
Как пользоваться списком
В каждом пункте три части: суть (перевод определения OWASP), как выглядит на сайте (наши пояснения) и что смотреть (где искать следы). Для разбора следов вам понадобятся три источника: серверный access-лог (его разбирает бесплатный анализатор, см. также команды для nginx), данные Метрики (бесплатная проверка счётчика) и проверка конкретных User-Agent и IP (проверка User-Agent и IP). Общие признаки вредных и полезных ботов описаны в статьях про хороших и плохих ботов и исследование Bot Guard.
Разведка и поиск уязвимостей
OAT-014. Сканирование уязвимостей (Vulnerability Scanning)
Суть. Обход сайта и перебор адресов, файлов и параметров в поисках слабых мест. В OWASP подчёркивают, что это отличается от скрейпинга: цель не данные, а уязвимости.
Как выглядит. Волна запросов к несуществующим адресам, обращения к служебным путям (.env, wp-login.php, phpmyadmin), много ответов 404 с одного IP, подозрительные параметры в адресе.
Что смотреть. Журнал сервера: доля 404 по IP и обращения к служебным путям. Автоматически банить такие адреса можно через fail2ban и nginx, общая защита описана в статьях про WAF и системы обнаружения вторжений.
OAT-018. Зондирование (Footprinting)
Суть. Исследование приложения, чтобы понять его состав и свойства: какие есть пути, параметры, значения и последовательности действий. Это изучение самого приложения, а не его данных. Сюда же относится перебор имён файлов и каталогов (forced browsing).
Как выглядит. Последовательный обход адресов по словарю, проверка параметров, обращения к API в поисках скрытых методов.
Что смотреть. Те же 404 и нетипичные адреса в логе, обращения без перехода с других страниц.
OAT-004. Определение используемого ПО (Fingerprinting)
Суть. Запросы, которые выясняют, какое программное обеспечение и каких версий стоит на сайте: по заголовкам, формату идентификаторов сессии, текстам ошибок, поведению адресов. Не путайте с «отпечатком браузера» посетителя, о котором шла речь в статье про browser fingerprinting: здесь «снимают отпечаток» с самого сайта.
Как выглядит. Запросы к характерным файлам CMS и фреймворков, намеренно вызванные ошибки.
Что смотреть. Журнал ошибок и обращения к файлам вроде readme.html или страницам ошибок.
Сбор данных и искажение статистики
OAT-011. Скрейпинг (Scraping)
Суть. Сбор содержимого и данных сайта для использования в другом месте. В описании OWASP среди других названий упомянуты боты для обучения языковых моделей и для ответов ИИ: это тоже скрейпинг.
Как выглядит. Систематический обход страниц каталога или статей, часто скриптовым клиентом или от имени поискового бота, высокий процент обращений к HTML без картинок и стилей.
Что смотреть. Журнал: User-Agent и активность подсетей; подлинность «поискового» бота проверяйте по IP (как проверить Googlebot). Подробнее: защита от веб-скрапинга и что такое веб-скрепинг.
OAT-016. Искажение показателей (Skewing)
Суть. Повторяющиеся клики, запросы страниц или отправки форм, цель которых изменить какой-то показатель: счётчики посещений, лайки, результаты опросов и рейтингов, внутреннюю аналитику.
Как выглядит. Нетипичные всплески визитов, необъяснимо высокие отказы, перекосы по источникам, странные «рекомендации».
Что смотреть. Метрику: роботность и срез без роботов, признаки поведенческих ботов, почему Метрика не видит часть ботов.
OAT-003. Мошенничество с рекламой (Ad Fraud, в версии 1.3 переименовано в Cost-Inflation Fraud)
Суть. Фальшивые клики и показы рекламы на сайте: накрутка владельцем площадки, конкурентами или вандалами. В новой версии классификации угроза переименована в «раздувание затрат» (Cost-Inflation Fraud).
Как выглядит. Клики из Директа без заявок, площадки РСЯ с высокой долей отказов, визиты из датацентров по платным ссылкам.
Что смотреть. Вкладку «Реклама» в проверке Метрики и журнал платных кликов защиты. Разбор: боты в Яндекс.Директе, click fraud, мошенничество с кликами, кликовый спам.
Взлом учётных записей
OAT-007. Подбор учётных данных (Credential Cracking)
Суть. Определение рабочих логинов и паролей перебором значений, по словарям и догадкой. Сюда относится и перебор почтовых адресов через формы подписки.
Как выглядит. Множество POST-запросов на страницу входа с одного IP или подсети, много ответов «неверный пароль».
Что смотреть. Журнал: частота POST на форму входа. Защита: защита от брутфорса и ограничение частоты (rate limiting).
OAT-008. Подстановка украденных учётных данных (Credential Stuffing)
Суть. Массовые попытки входа с украденными парами логин-пароль из чужих утечек, чтобы проверить, не используют ли люди один пароль на разных сайтах. В отличие от подбора, здесь не перебирают значения, а проверяют готовые данные.
Как выглядит. Попытки входа с разных IP, часто через прокси, на много разных логинов; низкая успешность каждого логина.
Что смотреть. Статистику неудачных входов. Подробнее: защита от credential stuffing.
OAT-019. Массовое создание аккаунтов (Account Creation)
Суть. Создание множества учётных записей для последующего злоупотребления: спама, отмывания денег, распространения вредоносных программ, накрутки.
Как выглядит. Всплески регистраций с похожими адресами почты, регистрации из одной подсети, пустые профили.
Что смотреть. Журнал регистраций; защита форм (спам-заявки и фейковые регистрации). См. мошенничество с учётными записями.
OAT-020. Агрегация аккаунтов (Account Aggregation)
Суть. Использование посредника, который собирает несколько аккаунтов и действует от их имени. Так работают сервисы-агрегаторы, но та же схема встречается и во вредоносных целях.
Как выглядит. Входы в разные аккаунты из одного места, действия через интерфейс или API от имени пользователей.
Что смотреть. Журнал входов и использование API.
Платежи и интернет-магазины
OAT-001. Проверка карт (Carding)
Суть. Многократные попытки оплаты, чтобы проверить, рабочие ли украденные данные банковских карт.
Как выглядит. Серия неудачных платежей на небольшие суммы, много разных карт с одного IP.
Что смотреть. Журнал платёжной страницы и отчёты платёжного провайдера.
OAT-010. Подбор данных карты (Card Cracking)
Суть. Перебор недостающих данных украденной карты: срока действия и кода безопасности.
Как выглядит. Серии платежей с одним номером карты и разными датами и кодами.
Что смотреть. То же: платёжные логи.
OAT-012. Обналичивание (Cashing Out)
Суть. Покупка товаров или получение денег с помощью проверенных украденных данных карт и аккаунтов, включая возврат товара и переводы на подконтрольные счета.
Как выглядит. Покупки дорогих товаров с недавно созданных аккаунтов, нетипичные адреса доставки.
Что смотреть. Данные заказов и антифрод платёжной системы; см. захват аккаунтов в рознице.
OAT-002. Подбор купонов (Token Cracking)
Суть. Массовый перебор номеров купонов, промокодов, подарочных карт и скидочных кодов.
Как выглядит. Множество обращений на форму ввода промокода с разными значениями.
Что смотреть. Частоту запросов к проверке промокода; ограничение попыток.
OAT-021. Исчерпание остатков (Denial of Inventory)
Суть. Исчерпание товаров или услуг без завершения покупки: товары кладут в корзину или бронируют, но не оплачивают, и другим покупателям они недоступны.
Как выглядит. Много брошенных корзин или броней без оплаты, остатки «заканчиваются» без продаж.
Что смотреть. Срок жизни корзины и брони, доля незавершённых заказов.
Нечестные преимущества: билеты, торги, игры
OAT-005. Скупка дефицита (Scalping)
Суть. Получение товаров и услуг с ограниченным предложением нечестными способами, недоступными человеку вручную: билеты, кроссовки, бронь столиков. Купленное затем перепродаётся. Подробнее о ботах для распродаж: боты для стимулирования продаж.
Как выглядит. В момент старта продаж за секунды раскупается весь запас, с одних и тех же сетей.
Что смотреть. Скорость и источники заказов в первые секунды.
OAT-006. Ускорение действий (Expediting)
Суть. Автоматизация обычно медленных и утомительных действий ради преимущества: игровые боты, автоматическая торговля, добыча виртуальных ценностей.
Как выглядит. Действия с нечеловеческой скоростью и регулярностью.
Что смотреть. Интервалы между действиями одного пользователя.
OAT-013. Ставка в последний момент (Sniping)
Суть. Предложение или ставка в последний возможный момент, чтобы другие не успели ответить. Типично для аукционов.
Как выглядит. Ставки в последние доли секунды до закрытия лота.
Что смотреть. Время ставок относительно окончания торгов.
Доступность и обход защиты
OAT-015. Отказ в обслуживании (Denial of Service)
Суть. Нагрузка на любой ресурс (диск, память, процессор, процессы) или блокировка отдельных аккаунтов, чтобы снизить доступность. Запросы могут выглядеть как обычное использование.
Как выглядит. Рост нагрузки и времени ответа, всплеск запросов к тяжёлым страницам и поиску.
Что смотреть. Нагрузку сервера и топ адресов в логе. Защита: защита от DDoS, чем отличается DDoS-защита от защиты от ботов, ограничение частоты, ботнеты.
OAT-009. Обход капчи (CAPTCHA Defeat)
Суть. Автоматическое решение защитных проверок: распознавание картинок и звука, решение задач, иногда с помощью «ферм» людей.
Как выглядит. Формы, защищённые капчей, всё равно получают поток отправок; капча «проходится» слишком быстро.
Что смотреть. Время заполнения форм и долю успешных капч. Подробнее: как работает CAPTCHA и Яндекс SmartCaptcha: подключение, цены и чем дополнить.
OAT-017. Спам (Spamming)
Суть. Добавление вредоносной или сомнительной информации в публичный и личный контент и сообщения: комментарии, формы, отзывы, рекламные ссылки.
Как выглядит. Поток заявок и комментариев с одинаковыми шаблонами и ссылками, POST-запросы к формам напрямую.
Что смотреть. Журнал POST-запросов к формам. Защита форм: как остановить спам-заявки и honeypot и проверка запросов защитой на сайте.
С чего начать защиту
- Определите свои угрозы. Для сайта без оплаты и регистрации актуальны разведка, скрейпинг, спам и искажение статистики. Для магазина добавляются карты, купоны и остатки. Для личного кабинета: подбор и подстановка паролей.
- Посмотрите следы. Серверный лог, Метрика и проверка подозрительных адресов покажут, какие угрозы у вас уже есть.
- Закройте базовое. Ограничение частоты запросов, закрытие служебных путей, блокировка очевидных сканеров (fail2ban и nginx).
- Поставьте постоянную защиту. Она проверяет каждый запрос на лету: Bot Guard смотрит на User-Agent, IP, заголовки и поведение и подключается к WordPress и 1С-Битриксу.
Частые вопросы
Что такое OWASP Automated Threats (OAT)?
Это классификация автоматизированных угроз для веб-приложений от проекта OWASP: 21 тип угроз с номерами от OAT-001 до OAT-021, описанием и признаками. Её используют как общий словарь для разговора о ботах и для оценки рисков.
Чем отличается credential stuffing от credential cracking?
Credential cracking это подбор логинов и паролей перебором и по словарям. Credential stuffing это проверка готовых пар логин-пароль, украденных в других утечках: никакого перебора, только проверка повторного использования паролей.
Чем скрейпинг отличается от сканирования уязвимостей?
Скрейпинг собирает содержимое и данные сайта для использования в другом месте. Сканирование уязвимостей обходит сайт, чтобы найти слабые места, и данные ему не нужны.
Какие угрозы касаются любого сайта, а какие только магазинов?
Разведка, скрейпинг, искажение статистики, спам, нагрузка и скликивание рекламы касаются почти любого сайта. Карты, купоны, дефицитные товары и корзины актуальны для интернет-магазинов, а подбор паролей и массовые регистрации для сайтов с личным кабинетом.
Это именно перевод OWASP?
Это русская адаптация: определения угроз переведены, а пояснения про то, как угроза выглядит и где её искать, добавлены нами. Исходные материалы OWASP доступны на сайте проекта.
Классификация и определения угроз: проект OWASP Automated Threats to Web Applications (OAT), © OWASP Foundation, owasp.org, лицензия CC BY-SA 4.0. Статья представляет собой русский перевод и адаптацию с дополнениями Bot Guard; перевод и дополнения распространяются на тех же условиях CC BY-SA 4.0.
Защитите свой сайт от ботов прямо сейчас
Подключение занимает несколько минут — вставьте один PHP-сниппет, и Bot Guard начнёт фильтровать ботов, скрейперов и попытки SQL-инъекций автоматически.