В данной статье показывается альтернативный способ решения задачи обнаружения web-атак, который при определенных условиях позволяет обнаруживать атаки на web-службы с большим коэффициентом достоверности при минимальных затратах системных ресурсах.
Думаю, не стоит останавливаться на актуальности вопросов исследуемых в данной статье. Так как web-технологии нашли применение от домашних страниц пользователей сети, сложных информационных динамических web-системах до управления модемом или мультиплексором.
На данный момент существует множество систем обнаружения атак как вообще на компьютерные системы, так и на web-сервера в частности. Существует довольно ограниченное число методик обнаружения атак. По методологии обнаружения разделяют системы обнаружения сигнатур (signature detection) и системы обнаружения аномалий (anomaly detection, misuse detection). Для обнаружения атак на web-сервера чаще всего используют системы обнаружения сигнатур. Системы обнаружения аномалий могут быть построены с применением нейросетевых технологий, требующих обучение системы обнаружения атак, или применением нечетких множеств.
Недостатки систем обнаружения сигнатур:
- принципиальная невозможность обнаружения новых атак и вторжений;
- пропуски вариаций известных вторжений;
- необходимость разработки и постоянного пополнения базы данных сигнатур.
Недостатки систем обнаружения аномалий:
- большое число ложных срабатываний;
- трудность определения того, что аномалия вызвана атакой или вторжением;
- вероятность пропуска маскирующихся или «замедленных» атак.
Можно предположить, что система обнаружения атак должна представлять комбинацию предложенных методологий и недостатки одной должны компенсироваться преимуществами другой.
Модель web-системы.
Чтобы выявить наиболее важные параметры для решения нашей задачи попробуем создать модель информационной web-системы и найти те критические места, где возможно появление уязвимости. Атаки на web-системы разумно разделить на атаки, направленные на программное обеспечение сервера, и атаки, направленные на web-приложение. Проанализировав bug-track, видно, что большинство уязвимостей именно в web-приложениях, такие как PHP-including, XSS, SQL-injection и т.д. Следовательно, разумно предположить, что наибольший поток атак будет производиться на web-приложения. И именно в этом месте система обнаружения атак должна иметь высокую эффективность при малой затрате производительности. Здесь недопустимо применение сигнатурной системы анализа атак из-за больших баз сигнатур и недостатков приведенных выше. Для атак, направленных на программное обеспечение сайта, наиболее характерно наличие определенных сигнатур в запросе, за исключением самомодифицирующихся shell-кодов - в этом случае применимы обе методики, как сигнатурный, так и аномальный метод обнаружения атак.
Математическое описание модели.
Представим web-службу как орграф G={V,E}, где V-множество вершин графа, E-множество ребер. Вершина орграфа (состояние сервера) будем характеризовать результат выполнения GET, POST запроса, что в свою очередь характеризуется запрашиваемым файлом или web-приложением с конкретными параметрами. Пусть орграф G-взвешенный орграф, а функция w(e)- функция веса, тогда W- множество весов ребер. Функция w(e) будет отражать качественную характеристику переходов между вершинами. Множество W является множеством всех запросов к серверу.
Рис.1 Орграф web-службы
Любое состояние однозначно определяется запросом к серверу, следовательно, в орграфе нет смежных ребер, и он является деревом.
Подмножество R множества W будем называть разрешенным, если w запрос к веб серверу не привел к нарушению безопасности системы.
Дерево G={SV,R} является безопасной системой.
Запрос e будет являться атакой или ошибочный, если он порождает собой дерево .
Нахождение графа G
Мы определили, что граф G будет полностью соответствовать безопасной модели функционирования web-сервера. Как же выделить этот граф? Ниже будет рассмотрено два способа выделения графа, первый способ представляет реализацию графа переходов. Этот способ не полностью описывает web-службу, из-за ее сложности и динамичности. Развитие этого способа привело к появлению модифицированного алгоритма проверки запросов на принадлежность к множеству безопасных запросов. Данный алгоритм основан на ключевых хеш-функциях.
Определим весовую функцию w(e). Весовая функция w(e) полностью определяет переходы между состояниями web-сервера. На практике это запрос браузера к web-серверу или определенная структура, соответствующая спецификации HTTP/1.0 (HTTP/1.1).
Применительно к модели рассмотрим два типа запросов. Запросы, данные в которых формирует пользователь, например, заполнение формы и отправка на сервер; запросы, которые web-сервер формирует сам для организации динамических web-приложений, например, при просмотре форума мы не добавляем данные, но в запросе передаются много параметров, которые сервер формирует сам. Здесь надо обратить внимание на то, что пользователь добавляет данные гораздо реже, чем отсылает запросы сформированные сервером. На этом будет основан выбор техники обнаружения атак.
Первая модель. WIDS.
Первая модель показывает принцип построения графа, имеет название WIDS. Модель реализуется функциями построения безопасного дерева, проверка принадлежности запрос к множеству безопасных запросов, поддержании актуальности безопасного дерева.
Множество R однозначно определяется множеством L- множество статистических ссылок и динамических сгенерированных ссылок. Web-служба изначально не может содержать заведомо атакующих запросов на себя, они создаются искусственно хакером, а не природой сервера. Следовательно, множество R мы будем получать функцией синхронизации ссылок с сайта. Пусть элементы множества R содержать не полные ссылки, а только пути к файлам, так как они постоянны в течение периода синхронизации, признаки запросов, по которым можно с определенной вероятностью рассчитать корреляцию запросов, и определить схожесть. Если запрос не входит с определенной вероятностью в наше множество, то он не будет нести полезной функциональности, то есть состояния V не будут принадлежать дереву безопасной системы G, и его можно считать атакой.
Достоинства: не надо хранить все сигнатуры атак, которые являются бесконечным множеством, быстрота проверки, теоретически большая вероятность обнаружения атаки.
Описанная выше модель была реализована в программном модуле WIDS, приведенный на рис.2.
Рис.2 Программный модуль WIDS
Программный модуль WIDS является прокси-сервером, работающий на сеансовом уровне. Для его функционирования необходимо указать адрес web-сервера, построить безопасное дерево, запустить систему IDS. Безопасное дерево строится по принципу сканирования сервера и выявления ссылок перехода, определения параметров и допустимых значений этих параметров. При проверке запроса проверяется соответствие дереву безопасных запросов.
В приведенной модели имеется множество недостатков: увеличение объема безопасного дерева при обслуживании больших web-систем, механизм составление безопасного дерева не обладает на практике требуемой полнотой из-за динамичности web-служб.
Модифицированный алгоритм поиска безопасного дерева. CorePlex.
Из-за множества недостатков необходимо было разработать улучшенную модель, которая бы включала достоинства первой модели и ликвидировала недостатки. Реализованная модель на базе сервера Apache 2.2.2, приведена на рис.3.
Рис.3 Система обнаружения и предотвращения атак CorePlex
Система обнаружения и предотвращения атак CorePlex основана на ключевой хеш-функции, что является как бы отдаленным вариантом цифровой подписи. Итак, в качестве ключевой функции используется ГОСТ Р.34.11-94 в режиме, когда вектор инициализации заполняется ключевой информацией 256 бит. Смысл модели заключается в том, что для каждой ссылки вычисляется хеш, зависящий от ключа, и отсылается браузеру. А при приеме сервером запроса этот хеш сверяется с правильным, таким образом устанавливается подлинность запроса.
Система CorePlex состоит из входного фильтра coreplin.so, работающего стеке фильтров Apache, выходного coreplout, работающего через посредник фильтр Apache, базы данных правил аномалий, сигнатур, ключевой информации и логов.
Способ защиты веб-сервера состоит в том, что все запросы, которые содержат значения параметров проверяются на то, что они были действительны сгенерированны веб-серверов. Запросы, сгенерированные сервером, считаются безопасными, так как сайт не может заведомо содержать в себе атаку. Запросы проверяются динамически.
Алгоритм работы.
- 1 этап: сначала пользователь посылает запрос на главную страницу сайт, данный запрос и все запросы, которые не содержат значений параметров на корректность, не проверяются.
- 2 этап: веб-сервер генерирует ответ, и передает сгенерированную страницу на выходной фильтр, который выполняет операцию URL: URL=URL+H(URL+SKEY). Где URL-гиперссылка содержащая значения параметров; H()- функция хеширования по ГОСТ Р 34.11-94; SKEY- стартовый вектор, секретный ключ (хранится на сервере и меняется раз в сутки). Данная контрольная сумма (хеш) добавляется в кеш фильтра и пересчитывается только при изменении URL.
- 3 этап: обработанная станица отправляется клиенту.
- 4 этап: пользователь выбирает запрос с параметрами и посылает запрос серверу, данный запрос содержит проверочную сумму. Запрос поступает на входной фильтр и выполняется операция аналогичная 2 этапу и результат сравнивается с проверочной суммой (хешем) поступившей в запросе. Если суммы (хеши) совпадаю, то запрос считается безопасным.
Все остальные запросы, не содержащие параметры, проверяются сигнатурным способом.
Преимущества модели:
- реализация политики использования безопасного дерева;
- отказ в основной проверке сигнатурного метода;
- динамическая генерация контрольных сумм;
- независимость о платформы сервера;
- полная прозрачность для веб-приложений.
Выводы.
В данной статье описана модель безопасного функционирования web-сервера. И приведены два алгоритма реализации модели WIDS и CorePlex. Последний алгоритм обладает довольно большим коэффициентом эффективности, так как реализуют гипотезу, предложенную в начале статьи. На предложенные две модели составлена заявка в Федеральную службу по интеллектуальной собственности, патентам и товарным знакам на способ. Оба алгоритма имеют программную реализацию WIDS (MS Windows), CorePlex (Linux).