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

За прошедшие выходные мы зафиксировали всплеск атак на веб-ресурсы, уверен, с этим столкнулись и вы. И пока зарубежные вендоры решают, кто из них уходит, кто — нет, мы продолжаем работать на отечественном рынке, улучшать механизмы работы 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

    d8e92b8805a91316400c691ef9ff64c4.png
  • Применение различных кодировок для обхода фильтрации

    2dd23a58bd92556386f7084c62f57b6a.png
  • Использование особенностей нормализации данных средствами 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.

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

© Habrahabr.ru