
Первая итерация Feedback WAF на основе машинного обучения
NGWAF создан @yupengfei, @zhangbosen, @matthewng и @elizabethlim.
Особая благодарность @ruinahkoh за её вклад в начальные этапы NGWAF.
NGWAF является экспериментальной концептуальной реализацией и в текущем виде не готов к промышленному использованию.
Содержание
Мозг: WAF на основе машинного обучения
Зеркало: Масштабируемая интерактивная карантинная среда
Библиотека: Последовательность переобучения для укрепления мозга
С взрывным ростом веб-приложений с начала 2000-х годов атаки на их основе становятся всё более распространёнными. Одним из распространённых решений является веб-брандмауэр приложений (WAF). Однако настройка правил существующих WAF для улучшения механизмов обнаружения может быть сложной и трудной. NGWAF стремится устранить эти недостатки с помощью новой архитектуры, основанной на машинном обучении и карантинном перенаправлении в honeypot.
Вдохновлённый реальными проблемами при эксплуатации WAF, NGWAF намерен упростить и переосмыслить операции WAF через следующие процессы:
| Проблема | Возможность NGWAF |
|---|---|
| Обслуживание механизмов обнаружения и правил может быть сложным | Использование машинного обучения для автоматизации процесса создания и обновления механизмов обнаружения |
| Немедленная блокировка вредоносного трафика снижает возможности изучения поведения злоумышленников для будущих улучшений WAF | Устранение угрозы через перенаправление в карантин вместо обычного сброса и блокировки вредоносного трафика |
Чтобы сделать развёртывание простым и переносимым, мы контейнеризировали различные компоненты архитектуры с помощью Docker и настроили их в файле docker-compose. Это позволяет быстро и легко запускать его на новом устройстве, так как зависимости обрабатываются Docker автоматически. Развёртывание может быть расширено до кластера Kubernetes на локальном или облачном провайдере, что обеспечивает масштабируемость: пользователи могут увеличивать количество узлов/подов для обработки больших объёмов трафика.
Развёртывание тестировалось на macOS (Docker desktop) и Linux (Ubuntu).
NGWAF работает «из коробки» с тремя ключевыми компонентами; эти компоненты, как упоминалось выше, все контейнеризированы и масштабируются в зависимости от желаемого использования. Защищаемый ресурс можно настроить, изменив развёртывание в установке.
Высокоуровневая архитектура NGWAF с ожидаемыми потоками трафика от разных сторон
NGWAF был разработан с учётом следующих ключевых преимуществ для пользователя:
NGWAF заменяет традиционные наборы правил моделями глубокого обучения, чтобы уменьшить сложность управления и обновления правил. Вместо ручного редактирования правил машинное обучение NGWAF автоматизирует процесс изучения закономерностей из вредоносных данных. Данные, собранные из карантинной среды, автоматически очищаются и группируются, что позволяет при желании повторно обучить их на нашей модели обнаружения.
NGWAF использует новую архитектуру, включающую интерактивную и карантинную среду, созданную для изоляции потенциальных враждебных злоумышленников. В отличие от обычных WAF, которые блокируют при обнаружении, NGWAF перенаправляет злоумышленников на эмулированные системы, задерживая их, чтобы смягчить воздействие их злонамеренных действий. Среда также действует как «воронка» для сбора текущих методов атак, позволяя наблюдать и собирать вредоносные данные. Эти данные могут быть использованы для дальнейшего улучшения возможностей обнаружения NGWAF.
NGWAF в действии: при обнаружении SQL-инъекции NGWAF перенаправляет в карантинную среду, а не сбрасывает или блокирует попытку.
Руководящим принципом создания NGWAF является защита от рисков, указанных в стандартном документе осведомлённости Open Web Application Security Project — OWASP Top 10 2021.
Обучающие данные и проверки соответствия для NGWAF собираются и проводятся на основе этого требования.
Кому нужна ручная работа, когда можно перейти на НЕЙРОННЫЙ
Вместо традиционных наборов правил, которые требуют от аналитиков ручного выявления и добавления правил со временем, NGWAF использует сквозные конвейеры машинного обучения для механизма обнаружения, что значительно снижает сложность управления правилами WAF, особенно для обнаружения сложных полезных нагрузок.
Для этого нам сначала нужно создать базовую модель и архитектуру, с которой пользователи могут начать, чтобы позже использовать данные, собранные из их собственных приложений, для переобучения и тонкой настройки:
Общая архитектура базовой модели — это простая RNN с двунаправленным модулем LSTM, как показано ниже:
Изображение взято из Tensorflow (ссылка)
Используя эту архитектуру RNN, мы смогли достичь улучшения производительности по сравнению с более простыми моделями:
| Архитектура модели | Точность | F1-мера |
|---|---|---|
| Наша итоговая модель | 0,995 | 0,993 |
| Нейронная сеть без модуля LSTM | 0,956 | 0,891 |
| Дерево решений | 0,878 | 0,840 |
| Логистическая регрессия | 0,946 | 0,914 |
Хотя мы включили журналы из различных приложений для улучшения обобщающей способности базовой модели, дальнейшее обслуживание и переобучение модели будут важны для:
Чтобы решить эту задачу, пользователи NGWAF получают выгоду от нашего интегрированного конвейера переобучения модели «от начала до конца» и могут легко запустить обслуживание модели в несколько простых шагов, не заглядывая «под капот». (См. Раздел 3 ниже).
Не дайте им уйти, ЗАДЕРЖИТЕ ИХ!
В отличие от традиционных WAF, где вредоносный трафик блокируется или сбрасывается сразу, NGWAF придерживается более гибкого подхода. Он перенаправляет и задерживает злоумышленников в карантинной среде. Эта среда состоит из различных интерактивных эмулированных honeypot для сбора дополнительных методов атак/данных; эти данные будут потенциально использованы для повышения уровня обнаружения NGWAF более современных и сложных атак.
В настоящее время карантинная среда NGWAF пересылает все данные, отправленные захваченным злоумышленником, в наш стек ELK для анализа и визуализации. Данные автоматически очищаются на различные компоненты HTTP-запроса, затем упаковываются внутренне на бэкенде среды в формате JSON перед пересылкой. Это помогает снизить трудозатраты на очистку и индексацию данных при запуске процесса переобучения.
NGWAF предоставляет пользователям возможность изменять внешний вид фронтенда наших honeypot в карантинной среде (на основе кастомизированной версии drupot). Пользователям достаточно заменить папку assets в томе Docker на свои собственные фронтенд-активы.
NGWAF также открыт для пользователей, которые хотели бы подключить свои собственные honeypot в качестве части карантинной среды. Пользователи просто должны перенаправлять HTTP-запросы от honeypot на сервер бэкенда среды (бэкенд автоматически очистит и перешлёт данные на панель анализа — стек ELK).
Умный — это не значит умный, пока ты не научишься учиться
По мере появления новых полезных нагрузок и векторов атак важно модернизировать возможности обнаружения для обеспечения безопасности. Поэтому в NGWAF встроена функция переобучения, чтобы защитники могли обучить модель машинного обучения обнаружению этих новых полезных нагрузок. Пользователи, не знакомые с наукой о данных или нейронными сетями, всё равно смогут донастроить модели с помощью этого простого интерфейса, так как сложные шаги обрабатываются за них.
Пользователям нужно только загрузить небольшой образец размеченных данных из своей собственной работающей системы (например, несколько тысяч), который будет использоваться для донастройки существующей модели на бэкенде:
После завершения обучения пользователям также будут предоставлены краткие диагностические данные модели (например, производительность на тестовом наборе и при различных порогах оценки), чтобы они могли оценить новую модель.
Чтобы запустить процесс переобучения, перейдите к панели управления и выполните следующие шаги:
payload [str]: это должна быть либо полезная нагрузка из вашей системы, либо некоторые строковые примеры (например, примеры SQLi)label [int]: должно быть 0 для невредоносных примеров и 1 для вредоносных примеровis_url [bool]: должно быть TRUE, если полезная нагрузка из вашей системы (т. е. включает другую информацию о системе, такую как путь и устройство), и FALSE, если это строковый пример (например, "1==1")http://localhost:8088 для просмотра панели администратора NGWAF.
NGWAF использует стек ELK для захвата журналов сетевых данных, проходящих через NGWAF, что позволяет пользователям отслеживать трафик, проходящий через NGWAF, для дальнейшего анализа.
NGWAF также оснащён живыми уведомлениями в Telegram, чтобы информировать владельцев о живых вредоносных угрозах, обнаруженных NGWAF.
Протестированные операционные системы
Запустите Docker, затем выполните следующий файл с помощью команды ниже:
./run.sh
Чтобы заменить цели, укажите переменные dest_server и honey_pot_server на правильные цели в файле /waf/WafApp/waf.py
# Replace me
dest_server = "dvwa"
honey_pot_server = "drupot:5000"
После запуска контейнера Docker вы можете посетить свой локальный хост, на котором следующие порты запускают эти службы:
| Порт | Служба | Примечания | Учётные данные (если применимо) |
|---|---|---|---|
| 8080 | DVWA | Где находится WAF | admin:password |
| 5601 | Elasticsearch | Для просмотра журналов | elastic:changeme |
| 8088 | Панель администратора | Панель управления моделью WAF | |
| 5001 | Drupot | Honeypot |
Также настройте следующее в файле waf-secrets.env
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"
# TELEGRAM CONFIG
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"
Также настройте следующее в файле waf-admin-secrets.env
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxxx.xxx"
API_KEY="******************"
BUCKET_NAME="******************"
ACCESS_KEY_ID="******************"
SECRET_ACCESS_KEY="******************"
SQL_USERNAME="******************"
SQL_PASSWORD="******************"
SQL_SERVER="******************"
SQL_DATABASE_NAME="******************"
NGWAF — это проект с открытым исходным кодом и работа в процессе; функции и возможности могут меняться от обновления к обновлению. Если вы заинтересованы в участии, пожалуйста, создайте issue или pull request!