Деревья атак

Деревья атак (англ. attack trees) — это концептуальные диаграммы, показывающие возможные способы атаки на объект или цель. Деревья атак нашли применение во множестве различных областей. В информационных технологиях их используют для идентификации угроз компьютерным системам и всех возможных видов атак, которые способны привести к реализации этих угроз. Однако область применения деревьев атак не ограничивается только анализом информационных систем. Деревья атак также часто используются для анализа угроз в защищённых от вмешательства электронных системах оборонной и авиационной промышленности (например, в авионике военных самолётов)[1]. Кроме того, всё чаще деревья атак применяются и в компьютерных управляющих системах, в частности, в системах, связанных с распределением электроэнергии[2]. Деревья атак также используются для анализа атак на физические системы.

Первые формальные описания деревьев атак встречаются в академических публикациях и статьях, написанных Брюсом Шнайером во время его работы директором по технологиям компании Counterpane Internet Security[3]. Шнайер непосредственно участвовал в разработке концепции деревьев атак и сыграл ключевую роль в их популяризации. Тем не менее, ссылки в первых публикациях по деревьям атак[4] указывают также на участие Агентства национальной безопасности США в ранней разработке этой методологии.

Деревья атак во многом схожи, если не идентичны, с так называемыми деревьями угроз. Последние были описаны в 1994 году Эдвардом Аморосо[5].

undefined

Основы

Дерево атак — это многоуровневая диаграмма, состоящая из корневого узла, ветвей и дочерних узлов. Снизу вверх дочерние узлы определяют условия, необходимые для захвата родительского (или корневого) узла. Доступ к узлу возможен только при выполнении условий хотя бы одного из его нижестоящих узлов. Если достигается корневой узел, атака считается завершённой.

Один узел может быть дочерним по отношению к нескольким другим; таким образом, атака может описываться как последовательность множества шагов. Например, рассмотрим помещение с прикреплёнными к столам компьютерами. Чтобы забрать один из них, нужно либо перерезать фиксирующий кабель, либо открыть замок. Замок можно открыть силой или с помощью ключа. Ключ, в свою очередь, можно получить, угрожая владельцу, подкупив его или просто забрав откуда он хранится. Таким образом, можно нарисовать дерево атаки из четырёх шагов: подкупить владельца ключа — получить ключ — открыть замок ключом — забрать компьютер.

Кроме того, для реализации атаки могут потребоваться одновременное выполнение условий нескольких дочерних узлов. В приведённом выше примере рассматривались только случаи с ИЛИ, но могут быть и условия с И (AND): например, чтобы получить компьютер, нужно как обезвредить сигнализацию, так и снять фиксатор. Тогда путь атаки будет описан как (выключить сигнализацию, снять фиксатор, забрать компьютер).

Деревья атак тесно связаны с методологией деревьев отказов[6]. В анализе деревьев отказов условия между дочерними и родительскими узлами выражаются логическими операториями. Используя априорные вероятности, связанные с каждым узлом, можно по формуле Байеса вычислить вероятность достижения более высоких (родительских) узлов. Однако на практике корректные априорные значения зачастую неизвестны или слишком дорого обходятся в получении. В области компьютерной безопасности, где принимается во внимание активный противник (например, взломщик), вероятности событий не считаются независимыми и равномерно распределёнными — поэтому байесовский анализ для деревьев атак в целом не подходит.

В связи с этим для определения, какие атаки будут выбраны злоумышленником, применяют другие методы[7][8]. Они могут включать в себя сопоставление необходимых для атаки ресурсов с возможностями злоумышленника (время, деньги, навыки, оборудование). Атаки, требующие превышающих возможности злоумышленника ресурсов, менее вероятны по сравнению с простыми и доступными вариантами. Также предпочтение даётся тем атакам, которые наиболее близки к целям злоумышленника. Вероятность того или иного действия определяется тем, насколько хорошо оно соответствует намерениям и возможностям противника.

Анализ

В некоторых случаях деревья атак становятся настолько большими и сложными, что могут содержать сотни или тысячи путей, ведущих к цели. Несмотря на сложность, такие диаграммы чрезвычайно полезны для принятия решений по противодействию существующим угрозам.

Деревья атак могут использоваться в стратегиях информационной безопасности. При этом важно учитывать влияние политик, определяющих эти стратегии, на сами деревья атак. Например, вместо лишения системных администраторов доступа к программам и файлам — для защиты от компьютерных вирусов — может быть введено обязательное использование системы управления пакетами. В таком случае в дерево атак необходимо включить и возможные уязвимости или эксплойты в самой системе управления пакетами.

Можно предположить, что наиболее эффективный способ нейтрализации угрозы — устранить её как можно ближе к корневому узлу дерева атак. Однако на практике зачастую невозможно сделать это без негативного влияния на функциональность остальной системы. Например, чтобы снизить угрозу заражения вирусом в системе Microsoft Windows, можно использовать стандартный (не административный) аккаунт и файловую систему NTFS вместо FAT, чтобы запретить пользователям возможность изменять файловую систему. Такой подход устраняет (или затрудняет) большинство известных атакующих сценариев, однако вынуждает пользователей обращаться к учётным записям с административными правами для выполнения ряда задач, породив новые угрозы и управленческие сложности. Кроме того, пользователи всё равно могут заразить вирусом те файлы и документы, к которым у них есть права записи.

Существуют системы, строящие дерево атак на основе агентов, способных динамически выявлять и определять цепочки угроз. Такие работы реализуются с 2000 года[9].

Деревья атак в информационных системах

В устройствах, подключённых к компьютерной сети (сетевые устройства, серверы, пользовательские компьютеры), могут присутствовать аппаратные и программные уязвимости. Программные уязвимости вызывают больший интерес у злоумышленников и администраторов, поскольку встречаются чаще и легче эксплуатируются. Программные уязвимости в системе выявляются при помощи инструментов сканирования уязвимостей (Nessus, OpenVAS, Nexpose и др.), а их классификация и варианты можно изучать через базы данных уязвимостей. Одной из наиболее известных открытых баз данных уязвимостей является National Vulnerability Database (NVD — Национальная база данных уязвимостей)[10].

Использование уязвимостей программного обеспечения позволяет организовывать сложные, многошаговые атаки в компьютерных сетях, охватывающие многочисленные устройства. В связи с этим разрабатываются подходы к построению деревьев атак на основе программных уязвимостей компьютерных сетей. Такой подход даёт по сравнению с классическими инструментами сканирования уязвимостей следующие преимущества:

  1. С помощью деревьев атак можно проанализировать, какие из обнаруженных уязвимостей реально подвержены эксплуатации, и принять защитные меры только для эксплуатируемых уязвимостей, экономя ресурсы.
  2. Путём анализа последовательности шагов, необходимых для эксплуатации той или иной уязвимости с целью захвата целевого объекта в сети, можно определить, на каком этапе применение защитных мер будет наиболее эффективным с точки зрения затрат.
  3. Определяя количество шагов и другие параметры эксплуатации уязвимостей, можно проводить вероятностный анализ и расчёт рисков.
  4. Анализируя как количество шагов, так и параметры уязвимостей, можно оценивать примерное время достижения смоделированной угрозой цели в сети.
  5. Создание моделей угроз с учётом типа (внешний/внутренний нарушитель) позволяет оценить, какие угрозы, исходя из их типа и расположения в сети, наиболее опасны.
  6. Деревья атак позволяют определить минимальные технические возможности (знания, права и др.), необходимые для реализации конкретной угрозы.

Существуют три основных подхода к построению деревьев атак с использованием программных уязвимостей в компьютерных сетях:

  1. Модели предпосылок и возможных последствий: для определения эксплуатируемости уязвимости сравниваются права и возможности атакующего с условиями эксплуатации, после чего полученные на предыдущем этапе возможности добавляются к текущим, и моделируется следующий шаг. Примеры — NETSPA[11] (Network Security Architecture) и TVA[12] (Topological Analysis of Network Attack Vulnerability).
  2. Модели на основе искусственного интеллекта: примером такой модели служит MULVAL[13], получающая данные о сети в виде Datalog и строящая дерево атак при помощи логического анализатора.
  3. Модели на основе онтологии: строятся на формализации информации об угрозах, уязвимостях, эксплойтах, топологии сети и т. д. на языке онтологий. Пока такие модели разрабатываются только теоретически и полноценные реализуемые решения отсутствуют.

Основные данные, необходимые для построения деревьев атак любым из этих методов:

  1. Топология информационной сети и перечень устройств в этой сети (сетевые устройства, серверы, пользовательские рабочие станции).
  2. Данные о доступности устройств в сети: информация о том, с каких устройств возможно подключение к другим (с учётом настройки межсетевых экранов, IDS/IPS, коммутаторов, распределителей и т. д.).
  3. Информация о программных уязвимостях устройств (выявленная сканерами).
  4. Информация о расположении угрозы, а также о её правах и возможностях.

Программное обеспечение для моделирования деревьев атак

Существует множество коммерческих и открытых решений.

Открытое программное обеспечение

  • ADTool (университет Люксембурга)
  • Ent
  • SeaMonster

Коммерческое программное обеспечение

  • AttackTree+ (Isograph)
  • SecurITree (Amenaza Technologies)

Примечания

  1. Defense Acquisition Guidebook, Раздел 8.5.3.3 (англ.). acc.dau.mil. U.S. Department of Defense. Дата обращения: 22 июня 2024. Архивировано 5 августа 2012 года.
  2. Ten, Chee-Wooi Vulnerability Assessment of Cybersecurity for SCADA Systems Using Attack Trees (англ.). powercyber.ece.iastate.edu. Дата обращения: 22 июня 2024. Архивировано 30 июня 2010 года.
  3. Schneier, Bruce Attack Trees (англ.). schneier.com (декабрь 1999). Дата обращения: 22 июня 2024. Архивировано 6 августа 2007 года.
  4. Salter, Chris Toward a Secure System Engineering Methodology (англ.). schneier.com. Дата обращения: 22 июня 2024. Архивировано 23 июня 2011 года.
  5. Amoroso, Edward. Fundamentals of Computer Security : [англ.]. — Upper Saddle River : Prentice Hall, 1994. — ISBN 0-13-108929-3.
  6. Fault Tree Handbook with Aerospace Applications (англ.). hq.nasa.gov. NASA. Дата обращения: 22 июня 2024. Архивировано 21 января 2017 года.
  7. Buckshaw, Donald L Mission Oriented Design Analysis of Critical Information Systems (англ.). innovativedecisions.com (2005). Дата обращения: 22 июня 2024.
  8. Ingoldsby, Terrance R Attack Tree-based Threat Risk Analysis (англ.). amenaza.com. Amenaza Technologies Limited. Дата обращения: 22 июня 2024. Архивировано 4 марта 2016 года.
  9. NOOSE — Networked Object-Oriented Security Examiner, 14th Systems Administration Conference (LISA 2000), New Orleans (англ.). usenix.org (2000). Дата обращения: 22 июня 2024. Архивировано 7 июня 2011 года.
  10. National Vulnerability Database (англ.). nvd.nist.gov. Дата обращения: 22 июня 2024. Архивировано 6 апреля 2018 года.
  11. Ingols, Kyle; Lippmann, Richard; Piwowarski, Keith (2006). “Practical attack graph generation for network defense”. Proceedings, ACSAC [англ.]: 121—130. Дата обращения 2024-06-22. |access-date= требует |url= (справка)
  12. Jajodia, S; Noel, Steven; O’Berry, B (2005). “Topological analysis of network attack vulnerability”. Managing Cyber Threats [англ.]: 247—266. Дата обращения 2024-06-22. |access-date= требует |url= (справка)
  13. Ou, Xinming; Govindavajhala, Sudhakar; Appel, Andrew W. (2005). “MulVAL: a logicbased network security analyzer”. Proceedings of the 14th conference on USENIX Security Symposium - Volume 14 [англ.]. Дата обращения 2024-06-22. |access-date= требует |url= (справка)