Nemesida WAF: защита сайта и API от хакерских атак и паразитного трафика

в 16:28, , рубрики: api, api security, devops, Nemesida WAF, nginx, web application firewall, web security, информационная безопасность

За прошедшие выходные мы зафиксировали всплеск атак на веб-ресурсы, уверен, с этим столкнулись и вы. И пока зарубежные вендоры решают, кто из них уходит, кто - нет, мы продолжаем работать на отечественном рынке, улучшать механизмы работы Nemesida WAF и делиться своими результатами.

С атаками сталкиваются все владельцы публичных веб-ресурсов — некоторые узнают об этом сразу, другие — потом. По своей сути атаки можно разделить на 3 типа — попытки компрометации данных (Injection, XSS, CSRF, LFI/RFI и т.д.), DDoS L7 и атаки на $$$ (например, злоупотребление функционалом восстановления пароля по СМС).

Выявление атак

Сталкиваясь с атаками на веб-ресурсы, администраторы пытаются перекрыть вредоносный трафик настройками веб-сервера, установкой Rate Limit, созданием правил блокировок или ограничением доступа по IP из списка стран. Эти действия требуют навыков и не всегда приводят к ожидаемым последствиям. Гораздо эффективнее будет использовать WAF.

ModSecurity и NAXSI - наиболее популярные бесплатные решения, способные блокировать вредоносный трафик с использованием сигнатурного анализа. Мы специализируемся на коммерческой разработке технически сложного продукта с полноценным модулем машинного обучения, сканером уязвимостей, качественной визуализацией событий и т.д., но желая сделать свой вклад с ИБ-сообщество, мы реализовали бесплатную версию продукта - без ML и сканера, но отличной визуализацией и качественной сигнатурной базой - Nemesida WAF Free.

Просмотр атак
Просмотр атак

Атаки ботов

Атаки ботов могут представлять такую же угрозу, как самые «лютые» уязвимости OWASP — за неделю можно потерять несколько миллионов рублей на обычных формах регистрации/восстановления паролей по СМС. Современные бот-сети, как птица-говорун, отличаются умом и сообразительностью — и валидные куки могут получать, и CSRF-токены, и даже, говорят, способны капчу обходить. В конце-концов боты могут просто «положить» ресурс. В коммерческой версии Nemesida WAF используются продвинутые механизмы, позволяющие по совокупности признаков и поведенческому анализу выявлять и блокировать паразитный ботнет-трафик.

Реально противодействовать атакам ботов очень сложно — временное ограничение по странам не всегда помогает, ровно как и попытки заблокировать их по полю User-Agent или другим признакам — после нескольких блокировок ботнет будет направлять запросы с новых IP и с новыми полями. Для решения этой проблемы в Nemesida WAF мы используем набор признаков, влияющих на принятие решения о блокировании: репутационную GeoIP-базу, наличие адреса в списках прокси-серверов (VPN/Tor/etc) или хостинг-площадок и поведенческий анализ. Запросы, которые не были явно определены как паразитные, не блокируются, но сохраняются для последующего анализа на повторы атак. Такой подход позволяет отсекать 80-100% вредоносного трафика, при этом в редких случаях ошибочной блокировки легитимному пользователю предлагается себя разблокировать, используя функционал Captcha.

Злоупотребление функционалом восстановления пароля по SMS
Злоупотребление функционалом восстановления пароля по SMS

Расширенный анализ запросов

Мы не раз писали о преимуществах и недостатках сигнатурного анализа и машинного обучения. Если кратко — первый быстрый, но не точный, второй точный, но медленный. Комбинирование двух типов анализа и расширенные механизмы нормализации запросов в Nemesida WAF позволяют избавиться от проблем пропусков и ложных срабатываний даже на обычном железе. Еще одно преимущество Nemesida WAF — обучение и распознавание происходит локально, без использования облачных вычислений (проще говоря, вы не передаете трафик за пределы собственного периметра). В паблике можно найти множество способов обхода сигнатурного анализа — от банального расщепления нагрузки вроде un","ion se","lect до использования различных кодировок и манипуляций:

  • Использование функции возврата массива возможных вариантов исправления слов в PHP для автоматической нормализации запроса на стороне веб-приложения, опубликованная 0xInfection

    Nemesida WAF: защита сайта и API от хакерских атак и паразитного трафика - 3
  • Применение различных кодировок для обхода фильтрации

    Nemesida WAF: защита сайта и API от хакерских атак и паразитного трафика - 4
  • Использование особенностей нормализации данных средствами Bash (при OS Command Injection): /???/??t /???/p??s?? (нормализуется до /bin/cat /etc/passwd)

Проблемы обхода WAF, приведенные в примерах, ровно как и другие, решаются в Nemesida WAF за счет механизмов нормализации запроса и его анализа модулем машинного обучения на основе признаков атаки, а не только сигнатур. В общем, лучше посмотрите, как это работает на практике.

Быстрый старт

Мы понимаем, что любой новый продукт требует времени на настройку и обслуживание, поэтому одной из основных задач определили как возможность запуска «из коробки» с минимальными настройками. На запуск основных компонентов у нас уходит примерно 5-10 минут: достаточно указать лиц. ключ и прокси-сервер (если используется). Это позволит запустить защитные механизмы и приступить к настройкам вспомогательных модулей — Nemesida WAF API и Cabinet (для приема и отображения аномалий в веб-интерфейсе), Signtest (для управления модулем машинного обучения) и Scanner (для поиска уязвимостей). По каждому компоненту доступна подробная инструкция.

У вас мало времени, мы это ценим, поэтому подготовили уже преднастроенные образы виртуальной машины (Virtual Appliance) для KVM/VMWare/VirtualBox и образ для Docker. Еще мы ценим вашу конфиденциальность, поэтому все компоненты Nemesida WAF устанавливаются локально и не передают трафик за пределы вашей инфраструктуры.

Ссылка на Nemesida WAF Free: https://github.com/nemesida-waf/nemesida_waf_free/blob/master/README_RU.md

Еще мы разработали инструмент для проверки работы WAF - waf-bypass: https://github.com/nemesida-waf/waf-bypass.

Всем пока, оставайтесь здоровыми и защищенными.

Автор: Pentestit

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js