В предыдущей статье мы рассказали, как искусственный интеллект Nemesida WAF помогает с абсолютной точностью выявлять атаки на веб-приложения при минимальном количестве ложных срабатываний. В этой статье будет рассмотрен новый механизм работы Nemesida AI, позволяющий увеличить точность выявления атак в 2 раза по сравнению с сигнатурным методом, а также снизить количество ложных срабатываний до 0.01%.
Теория: подход к повышению точности распознавания
Работа WAF в режиме сигнатурного анализа (в т.ч. в режиме «цепочки правил») сопровождается большим количеством ложных срабатываний (False Positive), а результатом составления таблицы легитимных запросов или правил исключения блокировок будет увеличение возможности такой WAF обойти. Даже с минимальным составом таблицы легитимных запросов вероятность обхода крайне высока. К актуальным методам обхода WAF относятся:
- обфускация запросов (/*!%55NiOn*/ /*!%53eLEct*/);
- расщепление запросов (/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users);
- изменение регистра (-1 UnIoN SeleCT pAssWord fROM USers);
- использование различных кодировок (union%20%64istinctRO%57%20select).
Внедрение искусственного интеллекта в Nemesida WAF решило обе проблемы. Сейчас для усовершенствования механизма обучения Nemesida AI мы используем следующую стратегию:
1. фиксация уровня ложных срабатываний на значении 0,01%;
2. увеличение до максимума уровня обнаружения при заданном уровне ложных срабатываний.
Таким образом, параметры классификатора выбираются с учетом выполнения каждого из условий, а результат решения задачи по формированию обучающих выборок двух классов на основе модели векторного пространства (легитимного трафика и атак) напрямую влияет на качество работы классификатора.
Обучающая выборка нелегитимного трафика базируется на существующей базе сигнатур атак, получаемых с использованием ручного и полуавтоматического режима тестирования веб-приложений, а легитимного трафика — на основе запросов, приходящих на защищаемое веб-приложение и распознанных сигнатурным анализатором как легитимные. Такой подход позволяет адаптировать систему обучения Nemesida AI под конкретное веб-приложение, снижая уровень ложных срабатываний до минимума. Объем формируемой выборки легитимного трафика зависит от объема свободной оперативной памяти сервера, на котором функционирует Nemesida WAF. Рекомендуемым параметром является значение в 120.000 запросов при 10 ГБ свободной ОЗУ для обучения моделей.
Алгоритм AdaBoost (сокр. от adaptive boosting) — алгоритм машинного обучения, предложенный Йоавом Фройндом (Yoav Freund) и Робертом Шапиром (Robert Schapire). Является мета-алгоритмом, в процессе обучения строит композицию из базовых алгоритмов обучения для улучшения их эффективности. AdaBoost является алгоритмом адаптивного бустинга в том смысле, что каждый следующий классификатор строится по объектам, которые плохо классифицируются предыдущими классификаторами. В нашем случае базовым алгоритмом являются решающие деревья. AdaBoost вызывает слабый классификатор в цикле. После каждого вызова обновляется распределение весов, которые отвечают важности каждого из объектов обучающего множества для классификации. На каждой итерации веса каждого неверно классифицированного объекта возрастают, таким образом новый классификатор «фокусирует своё внимание» на этих объектах.
TF-IDF (от англ. TF — term frequency, IDF — inverse document frequency) — статистическая мера, используемая для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса. Вес некоторого слова пропорционален количеству употребления этого слова в документе, и обратно пропорционален частоте употребления слова в других документах коллекции. Мера TF-IDF часто используется в задачах анализа текстов и информационного поиска, например, как один из критериев релевантности документа поисковому запросу, при расчёте меры близости документов при кластеризации.
В процессе итеративного пополнения обучающей выборки для класса нелегитимного трафика была выявлена следующая закономерность: с ростом числа атак в базе растет и точность их детектирования, в то же время чрезмерное увеличение числа атак в базе может приводить к существенному росту ложных срабатываний. С учетом большого числа проведенных экспериментов к настоящему времени сформирована база, содержащая 189.316 различных запросов с различными признаками атаки на веб-приложения. Таким образом, к настоящему моменту удалось достичь требуемого уровня ложных срабатываний (0.01%), повысив точность обнаружения новых (не распознаваемых сигнатурным методом) атак.
Практика: методика тестирования и генерации обучающих наборов данных
Для определения нелегитимных запросов используется существующая база сигнатур атак, дополненная ручным и полуавтоматическим тестированием веб-приложений. В качестве тестовых WebApp используются популярные CMS, а также системы, заведомо содержащие уязвимости (например, DVWA).
В первую очередь генерируется легитимный трафик, не содержащий вредоносных запросов, признаков атаки или эксплуатации уязвимостей. Это позволяет выделить легитимную модель поведения пользователя.
Пример легитимного запроса, не содержащего векторов эксплуатации SQL-инъекции:
GET /vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
Host: waf.office.pentestit.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://waf.office.pentestit.ru/vulnerabilities/sqli/
Cookie: PHPSESSID=e91108c6l9jcqv9ob813kore73; security=low
Connection: close
Upgrade-Insecure-Requests: 1
Вторым этапом следует тестирование на проникновение веб-приложения с использованием как специализированных инструментов, так и «ручного» анализа для выявления и эксплуатации уязвимостей.
Пример запроса, эксплуатирующего уязвимость SQLi:
POST /vulnerabilities/sqli/ HTTP/1.1
Host: waf.office.pentestit.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://waf.office.pentestit.ru/vulnerabilities/sqli/
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Cookie: PHPSESSID=e91108c6l9jcqv9ob813kore73; security=medium; _ym_uid=1512232172282659138; _ym_isad=2; _ym_visorc_45042173=w; _ym_visorc_25686548=w; _ym_visorc_36267400=w
Connection: close
Upgrade-Insecure-Requests: 1
id=3 and 0 union select @@version,2&Submit=Submit
В результате выполнения запроса будет выведена версия СУБД:
First name: 10.1.26-MariaDB-0+deb9u1
Эти запросы маркируются как нелегитимные и поступают в систему обработки искусственного интеллекта Nemesida WAF. Уязвимые параметры тестируются множеством типов запросов (payloads), являющимися как векторами эксплуатации, так и атаками, позволяющими выявить уязвимости.
Пример запроса, содержащий функции 'sleep' или 'benchmark':
SLEEP(5)#
SLEEP(5)--
SLEEP(5)="
SLEEP(5)='
or SLEEP(5)
or SLEEP(5)#
or SLEEP(5)--
or SLEEP(5)="
or SLEEP(5)='
waitfor delay '00:00:05'
waitfor delay '00:00:05'--
waitfor delay '00:00:05'#
benchmark(50000000,MD5(1))
benchmark(50000000,MD5(1))--
benchmark(50000000,MD5(1))#
or benchmark(50000000,MD5(1))
or benchmark(50000000,MD5(1))--
or benchmark(50000000,MD5(1))#
Техника тестирования веб-приложения с использованием OWASP ZAP (fuzzing):
После нескольких итераций первого и второго этапа производится проверка существующей модели обучения для снижения количества ложных срабатываний. Чем больше обработано нелегитимных запросов, тем точнее становится детектирование аномалий, в том числе файлового содержимого, после чего база собранных аномалий в виде модели атак в качестве основы для обучения под конкретное веб-приложение автоматически загружается на сервера с Nemesida WAF:
Заключение
Улучшенный механизм обучения искусственного интеллекта в Nemesida WAF позволяет в 2 раза точнее выявлять атаки на веб-приложение, при этом сократив практически до нуля количество ложных срабатываний. Кроме этого, Nemesida WAF содержит Virtualpatch-систему и встроенный сканер уязвимостей, которые, в случае обнаружения уязвимостей в защищаемом веб-приложении, оперативно установят собственный патч для уязвимого компонента.
Nemesida WAF — это мощный инструмент защиты сайта от атак, и чтобы ощутить это на практике, запросите готовую виртуальную машину с предустановленной тестовой версией Nemesida WAF или активируйте облачную защиту на 2 недели бесплатно.
xiWera
WAT? :) так абсолютная точность или ложные срабатывания есть? А так, маркетинговый балшит конечно.