ПРОБЛЕМЫ СИНТЕЗА И АНАЛИЗА ГРАФОВ АТАК Исследования, связанные с построением, анализом и применением графов атак, ведутся приблизительно с 1994 года. В отечественной литературе данной тематике уделяется незначительное внимание, несмотря на то, что в зарубежных публикациях приводятся примеры эффективно работающих систем, в том числе и коммерческих. Неформально, граф атак – это граф, представляющий всевозможные последовательности действий нарушителя для достижения угроз (целей). Такие последовательности действий называются трассами (путями) атак. На рис. 1–3 изображены примеры графов атак. Можно выделить следующие виды графов атак [1, 2] : state enumeration graph (рис. 1) – в таких графах вершинам соответствуют тройки (s, d, a), где s – источник атаки, d – цель атаки, a – элементарная атака; дуги обозначают переходы из одного состояния в другое; condition-orienteddependency graph (рис. 2) – вершинам соответствуют результаты атак, а дугам – элементарные атаки, приводящие к таким результатам; exploit dependency graph (рис. 3) – вершины соответствуют результатом атак или элементарным атакам, дуги отображают зависимости между вершинами – условия, необходимые для выполнения атаки и следствие атаки. Например, атака RSH возможна, если нарушитель имеет привилегии суперпользователя на хосте 1 и хост 3 доверяет хосту 1. В результате атаки нарушитель получает привилегии пользователя на хосте 3. Рис. 1 Рис. 2 Под элементарной атакой (atomic attack) понимают использование нарушителем уязвимости. Примером элементарной атаки служит, например, переполнение буфера службы SSH, позволяющее удаленно получить права администратора системы. При синтезе графа атак возникают следующие задачи: формализация понятия атаки, разработка формального языка моделирования атак и компьютерной системы (включающей нарушителя, его цели, сеть, средства защиты, отношение достижимости
13
Embed
ПРОБЛЕМЫ СИНТЕЗА И АНАЛИЗА ГРАФОВ АТАК · 2017-05-28 · ПРОБЛЕМЫ СИНТЕЗА И АНАЛИЗА ГРАФОВ АТАК Исследования,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
ПРОБЛЕМЫ СИНТЕЗА И АНАЛИЗА ГРАФОВ АТАК
Исследования, связанные с построением, анализом и применением графов атак, ведутся
приблизительно с 1994 года. В отечественной литературе данной тематике уделяется
незначительное внимание, несмотря на то, что в зарубежных публикациях приводятся
примеры эффективно работающих систем, в том числе и коммерческих.
Неформально, граф атак – это граф, представляющий всевозможные последовательности
действий нарушителя для достижения угроз (целей). Такие последовательности действий
называются трассами (путями) атак.
На рис. 1–3 изображены примеры графов атак. Можно выделить следующие виды графов
атак [1, 2] :
state enumeration graph (рис. 1) – в таких графах вершинам соответствуют тройки (s, d, a),
где s – источник атаки, d – цель атаки, a – элементарная атака; дуги обозначают переходы
из одного состояния в другое;
condition-orienteddependency graph (рис. 2) – вершинам соответствуют результаты атак, а
дугам – элементарные атаки, приводящие к таким результатам;
exploit dependency graph (рис. 3) – вершины соответствуют результатом атак или
элементарным атакам, дуги отображают зависимости между вершинами – условия,
необходимые для выполнения атаки и следствие атаки. Например, атака RSH возможна,
если нарушитель имеет привилегии суперпользователя на хосте 1 и хост 3 доверяет хосту
1. В результате атаки нарушитель получает привилегии пользователя на хосте 3.
Рис. 1 Рис. 2
Под элементарной атакой (atomic attack) понимают использование нарушителем
уязвимости. Примером элементарной атаки служит, например, переполнение буфера
службы SSH, позволяющее удаленно получить права администратора системы.
При синтезе графа атак возникают следующие задачи: формализация понятия атаки,
разработка формального языка моделирования атак и компьютерной системы
(включающей нарушителя, его цели, сеть, средства защиты, отношение достижимости
хостов и т.д.), выбор или разработка средств построения графа атаки
и его визуализации, разработка средств автоматизации построения и
анализа графа.
В основном графы атак рассматриваются в контексте анализа
защищенности сетей. Обычно такой анализ сводится к
последовательному сканированию всех хостов сети на наличие
известных уязвимостей. Результатом является отчет, содержащий
перечень найденных уязвимостей и рекомендации по их
устранению. В настоящее время постепенно внедряется другая
парадигма анализа защищенности, учитывающая “топологию”
компьютерной системы – взаимосвязь объектов компьютерной
системы, их свойств и характеристик. Такой анализ защищенности
называется топологическим, а средства, его выполняющие, топологическими сканерами
безопасности.
Топологический анализ защищенности предполагает построение графа атак на основе
результатов сканирования сети, модели нарушителя и данных о конфигурации
сети (фильтрации МЭ, маршрутизации, обнаружения атак, достижимости хостов и т.д.) и
его анализ (вероятностный,
минимизационный и т.д.).
Построенный граф содержит все известные сценарии атак для достижения нарушителем
угроз. Результатом его анализа может являться:
перечень успешных атак, не обнаруживаемых IDS;
соотношение реализуемых мер безопасности и уровня защищенности сети;
перечень наиболее критичных уязвимостей;
перечень мер, позволяющих предотвратить использование уязвимостей в ПО, для
которого отсутствуют обновления;
наименьшее множество мер, реализация которых сделает сеть защищенной.
Графы атак также используются при расследовании компьютерных инцидентов [3], для
анализа рисков [4] и корреляций предупреждений систем обнаружения атак [5, 6].
Первоначально графы атак строили вручную, затем были предложены различные подходы
к автоматизации данного процесса. Ключевой проблемой построения графа атак является
масштабируемость – возможность построения графа атаки для сети с большим числом
хостов и уязвимостей. В данной работе излагаются возможные подходы к построению и
анализу графов атак и проблемы, возникающие при этом. Описываются также некоторые
системы топологического анализа защищенности.
Основные подходы к синтезу графов атак
Проверка на модели (model сheсking) – это автоматический метод верификации систем с
конечным числом состояний. Применение данного метода состоит из следующих
этапов: моделирование – формальное описание M исследуемой системы; спецификация –
выражение свойства P, которым должна обладать система, в формулах темпоральной
логики, позволяющей описывать поведение системы во времени; верификация – проверка
наличия у модели M заданного свойства P. Если модель M обладает свойством P, то
возвращается “истина”; иначе приводится трасса – последовательность состояний
системы, на которой возникает ошибка и, таким образом, не выполняется проверяемое
свойство P.
Пусть M – модель сети, свойство Pозначает ”сеть безопасна”. Тогда, если при
верификации окажется, что свойство P ложно, средство верификации выдаст трассу
атаки, ведущую к нарушению свойства системы.
Впервые данную технику применили Ramakrishnan и Sekar в 1998 году [7] для анализа
защищенности UNIX-хоста. В 2000 году Ritchey и Ammann [8] использовали не
модифицированную систему modelchecker SMV для анализа защищенности сети.
Символьный верификатор моделей SMV – это инструментальное средство,
предназначенное для проверки того, что модель системы удовлетворяет спецификации,
заданной CTL. В нем применяется символьный алгоритм верификации моделей,
основанный на OBDD (Ordered Binary Decision Diagrams). При ложности спецификации
демонстрируется путь вычислений, служащий контрпримером, и программа завершает
работу. Модель сети задается вручную на языке SMV. Эти две реализации получают
только один путь, где нарушается спецификация системы. Другими словами, вычисляется
только одна из атак, приводящих к угрозе.
Jha, Sheyner и Wing [9] применили модифицированную систему верификации NuSMV.
Модификация заключается в выдаче всех путей вычислений, для которых оказывается
ложной спецификация безопасности системы (см. рис. 1). Множество всех таких путей
есть граф атак. Время работы программы для сети из 4 хостов и 4 уязвимостей составляет
5 сек., а для сети из 5 хостов и 8 уязвимостей – более двух часов.
Основное достоинство данного подхода – формальность: если анализируемая система (а
точнее, модель системы) признана безопасной, то это означает, что все варианты атак
были рассмотрены, и вопросов касательно полноты анализа не возникает. Если же система
не обладает данным свойством, то в процессе проверки всегда будет построен
контрпример, представляющий собой последовательность действий нарушителя для
достижения угрозы. Недостаток – при большом числе хостов сети число возможных
состояний становится необозримым, а анализ – невозможным. Например, применение
последнего средства к сети, состоящей из 10 хостов и 5 уязвимостей, позволило получить
граф атак, содержащий порядка 10 миллионов ребер. В настоящее время факт
неадекватности методов верификации для построения графов атак является
общепризнанным.
В настоящее время следующие направления исследований, связанные с подходом
modelchecking, являются актуальными:
1. использование логик LTL, CTL* и µ-исчисления для задания спецификаций
системы,
2. использование различных систем верификаций моделей (например, SPIN и SVC).
Интерес представляет также возможность применения подходов автоматического
доказательства теорем (например, HOL) для построения графов атак.
Экспертные системы. Подход к построению графов атак с использованием экспертных
систем предложен Danforth [1]. В работе использовалась экспертная система Java
ExpertSystem Shell (JESS). Выбор обосновывается тем, что данная система, во-первых,
использует реализацию эффективного алгоритма Рете (Rete) для нахождения соответствия
фактов и правил, и, во-вторых, имеет язык, позволяющий достаточно просто добавлять
описания новых элементарных атак. В контексте построения графов атак правила
соответствуют выполнению элементарных атак, а факты – состояниям сети. Для
описания атак используется модель requires/provides [10, 11], так как хорошо подходит для
поиска экспертной системой. В ней всякая элементарная атака представляется
множеством условий (предусловий), необходимых для реализации атаки, и множеством
следствий (постусловий) – изменений состояния сети вследствие атаки. Например,
предусловия: на хосте B запущена уязвимая SSH служба, нарушитель имеет необходимые
привилегии на хосте A, 22 порт на хосте B доступен с хоста A; постусловие: нарушитель
имеет права администратора на хосте B.
Подход заключается в применении правил к фактам, т.е. ищется предусловие,
удовлетворяющее состоянию сети, и состояние изменяется в соответствии с
постусловием. Данный подход является более эффективным по сравнению с подходами,
использующими model checking, и позволяет анализировать небольшие сети (порядка
1000 хостов) с небольшим числом служб и уязвимостей.
Формальные грамматики. Котенко и Городецкий в [12, 13] предложили подход,
основанный на стохастических контекстно-свободных формальных грамматиках, для
моделирования атак и построения графов атак. В их работах описывается онтология
сетевых атак – систематизация и классификация всевозможных угроз и атак. Формально,
онтология есть дерево, на множестве узлов которого заданы отношения: “часть”, “вид”,
“последовательность” и “пример”. Две вершины дерева соединены ребром, если и только
если они принадлежат одному из отношений. Всякую угрозу можно представить
последовательностью символов. Эти последовательности рассматриваются как слова
языка, сгенерированного формальной грамматикой. Соединение двух узлов в дереве
(онтологии) определяется операцией подстановки, где терминальные символы
родительского узла рассматриваются как аксиомы формальной грамматики,
соответствующей дочернему узлу.
Логический подход. В [14] предложен подход, основанный на логическом
программировании, для построения графов атак. Авторы модифицировали систему
анализа защищенности сетей MulVAL [15], использующую логическое программирование
для вычисления возможных атак.
Логический граф атак состоит из вершин вывода (derivation node) и вершин фактов (facts
node). Всякой вершине факта соответствует логическое высказывание в форме предиката
p(t1, . . . , tk), истинное или ложное в зависимости от его аргументов. Вершине вывода
соответствует правило вывода вида: L0 |– L1, . . . , Ln. Дуги в графе обозначают отношение
зависимости. Модель сети представляет собой множество высказываний языка Datalog