• Обработка запроса в зависимости от структуры Web-приложения; • ACL (Access Control List); • Виртуальный патчинг; • AI, ML (жаль что пока нет Blockchain); • И много другого. Введение: Что такое WAF
Прием пакета с сетевого интерфейса; - Обработка множества соединений. Определение структуры - Разбор запроса на составные части; - Парсинг структуры запроса. Первичная обработка - Токенизация, обработка с помощью регулярных выражений; - Принятие решения о наличии атаки по одному запросу. Пост обработка - Поведенческий анализ; - Принятие решения о наличии атаки по нескольким запросам.
интерфейса; - Обработка множества соединений. Определение структуры - Разбор запроса на составные части; - Парсинг структуры запроса. Первичная обработка - Токенизация, обработка с помощью регулярных выражений; - Принятие решения о наличии атаки по одному запросу. Пост обработка - Поведенческий анализ; - Принятие решения о наличии атаки по нескольким запросам.
мы получили запрос. Что теперь с ним делать? Аналитик ИБ: Ну у меня есть несколько регулярок. Можно попробовать поматчить их с реквестом. Программист: Т.е. мне просто натравить их на весь запрос? Аналитик ИБ: А знаешь, не все так просто.. На URI надо использовать одни регулярки. На хедера другие.. Аналитик ИБ: Ну ты придумай что нибудь.. Тыж программист. Программист: Ох.. Программист Аналитик ИБ
сетевого интерфейса; - Обработка множества соединений. Определение структуры - Разбор запроса на составные части; - Парсинг структуры запроса. Первичная обработка - Токенизация, обработка с помощью регулярных выражений; - Принятие решения о наличии атаки по одному запросу. Пост обработка - Поведенческий анализ; - Принятие решения о наличии атаки по нескольким запросам.
Method, URI (внутри много чего интересного), HTTP/Version ◦ Headers (General, Request, Entity); ◦ Message Body (html, json, etc); • Применять парсеры для разбора “матрешки” запроса; • Должны понимать к какому компоненту веб-приложения соотносится запрос (в идеале какие фреймворки используются); • “Стараться” парсить так, как это делает веб-приложение. Определение структуры запроса: Общие понятия
сетевого интерфейса; - Обработка множества соединений. Определение структуры - Разбор запроса на составные части; - Парсинг структуры запроса. Первичная обработка - Токенизация, обработка с помощью регулярных выражений; - Принятие решения о наличии атаки по одному запросу. Пост обработка - Поведенческий анализ; - Принятие решения о наличии атаки по нескольким запросам.
сырых данных и по ним находить уязвимости. Аналитик ИБ: Мне без разницы.. Лучше пойду посмотрю пока презентации с Black Hat USA 2017.. Программист: А я пока открою книгу ДРАКОНА! УАХАХАХА!!.
из имени токена и параметра • Имя токена (некое символическое имя) • Параметр (в нем содержится дополнительная информация о токене). Шаблон - описание вида, которое может принимать токен. Лексема - некоторая последовательность символов, которое подходит под описание шаблона и идентифицируется как токен.
‘s’, ’e’, ’l’, ’e’, ’c’, ’t’ select compration ‘<’, или ‘>’, или ‘=’, или ‘!=’, или ‘>=’, или ‘<=’ >, >=, == number Любая числовая константа 1, 3.5, 3.3e10, -100500 literal Все, кроме “, заключенное в двойные кавычки “Hello world”, “Core dumped”
= M * C ** 2 Токены: <id, указатель на запись в таблице символов для E> <assign_op> <id, указатель на запись в таблице символов для M> <mult_op> <id, указатель на запись в таблице символов для C> <exp_op> <number, целое значение для 2>
состояние представляет ситуацию, которая может возникнуть в процессе сканирования входного потока в поисках лексемы. 2. Дуг. Представляет собой линию из одного состояния в другое.
почти уснул, когда тебя слушал. Программист: Да почему? Математика такая интересная! Аналитик ИБ: Очень… Теперь все готово для написания кода? Программист: Ну почти. Еще осталось узнать про НКА и ДКА! Аналитик ИБ: Что за НКА и ДКА??? О боже... Программист: Да ладно, это совсем просто! Аналитик ИБ: Я в этом сомневаюсь…
параметрами: • Q - конечное множество состояний; • Σ - конечное множество входных символов; • δ - функция переходов. Аргументы - состояние и входной символ, результат - состояние. Более формальная, но менее понятная запись - δ: Q x Σ ➝ Q; • q0 - начальное состояние. q0 ∊ Q; • F - множество допускающих состояний, является подмножеством Q. F ⊂ Q. И работает следующим образом: • Начинает работу в начальном состоянии q0 ; • Если автомат находится в состоянии qi а на вход поступает символ b, то автомат переходит в состояние qj = δ(qi , b)
параметрами: • Q - конечное множество состояний; • Σ - конечное множество входных символов; • δ - функция переходов. Аргументы - состояние и входной символ, результат - множество состояний (возможно пустое); • q0 - начальное состояние. q0 ∊ Q; • F - множество допускающих состояний, является подмножеством Q. F ⊂ Q. И работает следующим образом: • Начинает работу в начальном состоянии q0 ; • Если автомат находится в состоянии qi а на вход поступает символ b, то автомат переходит в множество состояний {qj }next = δ(qi , b), где qi ∊ {qi }current
сетевого интерфейса; - Обработка множества соединений. Определение структуры - Разбор запроса на составные части; - Парсинг структуры запроса. Первичная обработка - Токенизация, обработка с помощью регулярных выражений; - Принятие решения о наличии атаки по одному запросу. Пост обработка - Поведенческий анализ; - Принятие решения о наличии атаки по нескольким запросам.
анализа (когда мы не можем однозначно идентифицировать атаку по одному запросу); • Должны быть определены параметры запроса по которым будет проводится анализ; • В случае наличия нескольких WAFов имеет смысл объединить пост-обработку в одно место; • Не слишком критична к ресурсам, возможно немного “пропустить” запросов для накопления статистики.
реализовать неплохой WAF! Программист: Ага! И при правильной настройки его будет очень трудно забайпасить. Аналитик ИБ: Слушай тут надо еще прикрутить пару интересных фич… Программист: Каких? Аналитик ИБ: Например виртуальный патчинг. И обработку ответов. И крутую панель управления, и т.д.. Аналитик ИБ: И да, нужен искусственный интеллект и машинное обучение! На дворе 2018 год как никак! Программист: Хорошо. Но только подними мне заработную плату!