Введение

Как правило, домен на базе Active Directory обладает значительным количеством объектов, свойств и связей между ними. В общем случае «вручную» выявить недостатки в настройке домена и на их основе построить вероятный вектор атаки является довольно трудоемкой задачей и справится с ней без вспомогательных программных средств не представляется возможным.

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

Важно отметить, что материал рассчитан на читателя, обладающего опытом по тестированию на проникновение Active Directory.

Имеющиеся решения

На момент написания статьи в общем доступе имеется множество инструментов по анализу недостатков настроек Active Directory. Например:

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

Собранные результаты могут быть представлены в интерактивном виде (BloodHound, Adalanche, Jackdaw). В этом случае инструмент обладает графической оболочкой к некоторой базе данных с возможностью выполнения уточняющих запросов со стороны специалиста.

Другим способом представления результатов является статический сгенерированный отчет (PingCastle, Purple Knight).

Существует небезосновательное мнение, что защищающиеся мыслят списками, а атакующие мыслят графами, и пока так – последние будут побеждать.

Поэтому особой популярностью пользуются именно интерактивные инструменты, отображающие результат запросов в виде графа. На практике одним из наиболее удобных и полезных из интерактивных инструментов считается BloodHound. К его преимуществам можно отнести наличие активного сообщества пользователей, возможность расширения функционала, а также удобный интерфейс. Фактически без BloodHound не обходится ни одно тестирование на проникновение домена на базе Active Directory. Именно поэтому далее основное внимание будет уделено этому средству.

Тем не менее некоторые из других представленных инструментов также заслуживают внимания. Особенно актуально использование альтернативных средств с точки зрения перекрестной проверки получаемых результатов.

Разумеется самым лучшим способом для оценки инструмента является “метод мачете”, то есть просто начать пользоваться, пусть даже по началу и не особо вдаваясь в детали. Рекомендую попробовать применить указанный метод к Jackdaw и Adalanche.

jackdaw

Пример интерфейса Jackdaw

adalanche_example

Пример интерфейса Adalanche

Часть 1. Улучшения Bloodhound

Далее рассмотрим некоторые способы расширения возможностей BloodHound.

Пользовательские хранимые запросы

BloodHound представляет графическую оболочку для работы с базой данных Neo4j. Запросы к базе Neo4j бывают:

  • “графовые” - результат представляет граф, который может быть отображен в приложении BloodHound.
  • “консольные” - результат представляет таблицу со строками, которую можно посмотреть в Neo4j Browser. В интерфейсе BloodHound работать с указанными запросами нельзя.

BloodHound позволяет специалисту добавить в интерфейс собственные наиболее часто используемые графовые запросы. Для этого необходимо сохранить указанные запросы в предопределенном формате в файл customqueries.json.

В Windows данный файл хранится по следующему пути:

C:\Users[USERNAME]\AppData\Roaming\BloodHound\customqueries.json

В Linux:

~/.config/bloodhound/customqueries.json

Посмотреть примеры дополнительных пользовательских запросов, а также ознакомиться со структурой файла customqueries.json, можно в следующих источниках:

Добавление новых сущностей

По умолчанию в BloodHound обрабатывается информация, добытая с помощью штатного сборщика - SharpHound. Тем не менее архитектура программы позволяет добавлять новые сущности: объекты, атрибуты объектов, а также связи.

Прежде чем выявлять какие-либо векторы атак целесообразно максимально наполнить пространство возможных вариантов, то есть собрать и загрузить в BloodHound как можно больше информации.

Certipy

Рассмотрим один из актуальных примеров добавления новых сущностей в BloodHound.

Летом 2021 года была опубликована знаковая статья “Certified Pre-Owned:
Abusing Active Directory Certificate Services”
. В результате публикации арсенал специалистов по тестированию на проникновение обогатился множеством новых методов атак, связанных с эксплуатацией небезопасных настроек центров сертификации.

Со временем появились программные средства, автоматизирующие поиск и эксплуатацию уязвимых настроек. Одно из указанных средств под названием Certipy имеет модуль сбора информации, обладающий возможностью интеграции с BloodHound.

В итоге в BloodHound могут быть дополнительно загружены следующие данные:

  • настройки центров сертификаций
  • шаблоны для выпуска сертификатов

Также с помощью Certipy в BloodHound добавляются новые связи (“enroll”, “ManageCA” и т.д.) между стандартными и новыми объектами.

Более того, автор Certipy также создал собственную версию BloodHound, чтобы красиво отображать новые сущности, то есть отрисовать их иконки и вкладку со свойствами, появляющуюся при выделении объекта.

certipy_examples_1

Пример отображения новых объектов в версии BloodHound от создателя Certipy

certipy_examples_2

Пример содержимого во вкладке центра сертификации

certipy_examples_3

Пример отображения прав на выпуск сертификата

Кроме того, для удобной работы с полученными данными в Certipy предусмотрен перечень типовых запросов к BloodHound.

certipy_examples_4

Пример новых запросов с учетом шаблонов для выдачи сертификатов

Важно отметить, что при всем своем великолепии Certipy иногда предоставляет неверную информацию. Это связано с некорректной проверкой прав доступа к шаблонам сертификатов. В этом плане лучше ориентироваться на PingCastle, в котором анализ настроек производится корректно.

Используемые источники:

Ручное добавление

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

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

Рекомендую взять две следующие версии BloodHound:

Далее с помощью WInMerge требуется сравнить указанные версии между собой. В результате сравнения будет видно, где и как требуется подправить код программы. Остается всего-то по аналогии внести необходимые изменения и заново скомпилировать программу.

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

Прикладной и сетевой уровни

Продолжим рассматривать идеи для обогащения BloodHound новыми сущностями.

Прежде всего стоит отметить, что BloodHound работает с информацией “административного” уровня, то есть с атрибутами объектов домена. Тем не менее можно добавить другие уровни: “прикладной” и “сетевой”.

levels

“Прикладной” уровень содержит информацию об используемом программном обеспечении. По сути добавление объектов на прикладном уровне сводится к инструментальному сканированию на предмет наличия критических уязвимостей.

Допустим один из серверов домена подвержен MS17-10. В этом случае имеет смысл отметить указанный сервер, как захваченный и дальнейшее построение векторов атак проводить с учетом новой начальной точки.

Также на прикладном уровне возможно выделять веб-приложения для последующего поиска уязвимостей или перебора учетных записей. Осуществить указанный поиск возможно с помощью Witness-подобных инструментов, например GoWitness.

На “сетевом” уровне следует оценивать доступность объекта с точки зрения правил разграничения сетевого доступа. Проверить доступность можно следующими двумя способами:

  • проанализировав настройки правил в конфигурационных файлах телекоммуникационного оборудования
  • выполнив сканирование

В плане сетевого сканирования особо интересен инструмент cornershot. Одной из отличительных черт указанного инструмента является возможность проверки сетевой доступности узла Б со стороны узла Ц, находясь на узле А.

Таким образом, в результате анализа “сетевого” уровня можно уменьшить количество ложных векторов, например:

  • присутствует ребро “CanRDP”, но по факту по RDP подключиться нельзя
  • присутствует критическая уязвимость, но отсутствует сетевой доступ к службе, необходимой для эксплуатации уязвимости

Попытка реализовать рассмотренные подходы предпринималась в инструментах BlueHound, ShotHound.

blueHound_interface

Пример интерфейса BlueHound

Также возможно поискать системы с несколькими сетевыми интерфейсами:

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

Привилегии

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

В 2020 году Riccardo Ancarani написал замечательную статью Extending BloodHound Part 1 - GPOs and User Right Assignment , в которой рассказывается, как дополнить BloodHound информацией о наличии критичных привилегий у пользователей домена.

Дело в том, что групповые политики могут использоваться для назначения привилегий, в том числе “опасных”, например:

  • SeAssignPrimaryToken
  • SeBackupPrivilege
  • SeCreateTokenPrivilege
  • SeDebugPrivilege
  • SeImpersonatePrivilege
  • SeLoadDriverPrivilege
  • SeRestorePrivilege
  • SeTakeOwnershipPrivilege
  • SeTcbPrivilege

Обладание любой из указанных привилегий позволяет пользователю успешно локально повысить свои права до уровня системы. Более подробно об эксплуатации указанных привилегий можно посмотреть в докладе “Show me your privileges and I will lead you to SYSTEM”

В BloodHound получившийся граф атаки выглядит следующим образом:

privilege_privesc

Кроме того, важно выделить привилегию SeEnableDelegationPrivilege, которая позволяет скомпрометировать не отдельную систему, а домен целиком.

Cписки контроля доступа

Вопрос улучшения Bloodhound интересует и других отечественных исследователей. Не так давно Дмитрий Неверов опубликовал три статьи на эту тему.

В одной из статей “Расширение списка ACE для BloodHound” показывается, как добавить в BloodHound следующие новые ребра:

  • WriteGPLink
  • WriteGPOptions
  • WriteSAMAccountName
  • WriteUserAccountControl
  • WriteTSInitialProgram
  • WriteScriptPath

aces_edges

Рекомендую ознакомиться со статьями Дмитрия целиком. Cреди прочего в его материалах раскрыт технический процесс внедрения новых сущностей в BloodHound.

Отмечу, что список рассмотренных в статье прав, можно дополнить расширенным правом DS-Validated-Write-Computer, позволяющим проводить атаку ShadowCredentials.

Локальные администраторы

В другой статье BloodHound: групповые политики и локальный администратор Дмитрий Неверов показывает, как и откуда добавить в BloodHound учетные записи локальных администраторов.

LocalAdmins

От себя могу заметить, что учетные записи локальных администраторов также могут быть подобраны перебором или извлечены из SYSVOL.

Аутентификационные данные

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

Анализ паролей и NT-хешей полезен при выборе наиболее подходящих целей для атак методом распыления паролей. Автоматизация указанной идеи описана в статье Неверова “BloodHound и результаты атаки PasswordSpray”.

Также выявление одинаковых паролей рассматривается в статьях:

В последней статье для загрузки паролей предлагается использовать утилиту CrackHound. Альтернативная утилита - add-spw из Max.

spw-example

password-reuse-query

Кроме того, анализ аутентификационных данных можно проводить на предмет выявления разных учетных записей, принадлежащих одному и тому же пользователю. Подробнее почитать об этом можно в статье: Exploring Users With Multiple Accounts In BloodHound.

sameuser

В рассмотренных примерах авторы оперируют паролями или их NT-хешами, но можно пойти еще дальше и добавить NTLM v1 хеши.

Получение NTLM v1 хеша пароля к некоторой учетной записи равноценно получению доступа к указанной учетной записи ввиду возможности проведения атаки методом полного перебора за приемлемое время на соответствующем оборудовании (до 2 суток на ферме из 8 RTX 2080).

Разбор атак на NTLM v1 выходит за рамки настоящего материала. Отмечу, что в ряде случаев, когда не получается использовать радужные таблицы, важным становится вопрос выделения наиболее приоритетных хешей для брута. Именно тогда может пригодиться расширение объектов BloodHound новым атрибутом, отображающим наличие NTLM v1 хеша.

Пользовательские сервисные учетные записи

Еще один примитив, который может быть добавлен в BloodHound - ребро, свидетельствующее об использовании пользовательской учетной записи в качестве сервисной на определенной системе. По словам автора в 2/3 случаев удается получить пароль в открытом виде к указанной учетной записи из хранилища секретов LSA.

spn-rel

Для создания указанного ребра можно использовать утилиту add-spns из Max.

Весовые коэффициенты

Рассмотрим следующие два результата запроса на поиск кратчайшего пути к администраторам домена:

1_short_path

Первый путь

2_short_path

Второй путь

С точки зрения BloodHound второй путь выглядит более предпочтительным, так как он короче чем первый. На практике наоборот, первый путь представляет последовательность вложенных групп, то есть фактически никаких усилий для доступа к группе “Domain Admins” предпринимать не надо. Во втором пути требуется выполнения дополнительных условий, в частности “User B” после входа по RDP должен каким-то образом повысить свои права на “CALABDC.HACKERS.LAB”.

Приведенный пример хорошо иллюстрирует следующую мысль: “разные ребра графа обладают разными характеристиками, которые никак не учитываются в BloodHound”.

В качестве характеристик можно рассматривать следующие параметры:

  • сложность перехода по ребру с точки зрения реализации на практике
  • скрытность эксплуатации

Определившись с категориями характеристик, специалист должен вручную задать весовые параметры для каждого из возможных ребер графа. По итогу получается подобная таблица:

table

Чем хуже проявляется свойство, тем выше вес. Сразу отмечу, что задача распределения весов сводится к экспертной оценке специалиста.

После распределения весов для дальнейшей работы необходимо составить соответствующие запросы. По умолчанию BloodHound не учитывает вес при поиске кратчайших путей. Для использования в Neo4j алгоритмов поиска наименьших расстояний во взвешенном графе следует подключить библиотеку Graph Data Science.

Более подробно вопрос внедрения весовых коэффициентов описывается в статье Not All Paths are Created Equal.

Многоуровневая архитектура безопасности

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

Применительно к BloodHound существует инструмент ImproHound, с помощью которого возможно распределить все объекты домена между тремя уровнями.

improhound_tiers По окончанию распределения инструмент осуществляет поиск путей между объектами низлежащих уровней до объектов более высокого уровня и представляет результат в виде csv таблицы.

improhound_result

В качестве альтернативного решения, но уже без привязки к BloodHound, можно рассмотреть программу Forest Druid.

forest

Объекты первоначального доступа

При построении векторов атак важно определить объекты первоначального доступа. В дальнейшем поиск векторов осуществляется в предположении о наличие контроля над указанными объектами. В BloodHound эквивалентом объекта первоначального доступа можно считать метку “owned”.

Ранее уже были кратко затронуты некоторые примеры объектов первоначального доступа. Для большего порядка и централизации информации приведу расширенный перечень объектов, которые могут рассматриваться в качестве отправных точек:

  • Учетные записи, подверженные атаке asreproasting или kerberoasting (в ряде случаев)
  • Учетные записи с паролями в описании или в материалах общедоступных утечек информации, а также сетевых папок
  • Учетные записи, подверженные атаке методом распыления пароля
  • Машинные учетные записи с предустановленными паролями (Diving into Pre-Created Computer Accounts, Diving Deeper Into Pre-created Computer Accounts, pre2k)
  • Системы, обладающие критическими уязвимостями
  • Учетные записи, позволяющие атакующему узнать NTLM v1 хеш от своих паролей
  • Системы, позволяющие анонимное подключение
  • Системы cо сторонними сервисами, позволяющими подобрать учетную запись и получить доступ (ssh, базы данных, vnc, web порталы и т.д.)
  • Пользовательские учетные записи имеющие словарные пароли и позволяющие атакующему узнать NTLM v2 от хеш своих паролей
  • Учетные записи, добытые при анализе защищенности Wi-Fi, основанного на WPA2 Enterprise
  • Учетные записи, добытые из принтеров
  • Системы, подверженные MouseJack

Выгрузка отчетов

Некоторые утилиты используют, обрабатываемые в BloodHound данные, для выпуска статических отчетов. Познакомимся с двумя из них ближе.

PlumHound

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

  • перечень устаревших операционных систем с указанием DNS имен
  • перечень сессий пользователей
  • перечень учетных записей подверженных атаке Kerberoasting

report_kerberoastable

Пример страницы отчета PlumHound с информацией об учетных записях, подверженных атаке Kerberoasting

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

Анализ парольной политики

Целесообразность анализа выгрузки NT-хэшей пользователей домена довольно дискуссионный вопрос. Мнения специалистов на этот счет разнятся, но если проводить указанный анализ, то стоит обратить внимание на инструмент DPAT-max.

В качестве вводных данных DPAT-max принимает potfile Hashcat, перечень учетных записей с NT-хэшами в формате pwdump, а также логин и пароль к BloodHound.

Итоговый отчет имеет следующие разделы:

dpat-htmloutput

Разделы отчета, составленного в DPAT-max

Более подробно ознакомиться с возможностями и устройством DPAT-max можно в блоге автора указанной утилиты: Max: BloodHound Domain Password Audit Tool.

Визуализация

В следующих статьях рассказывается о дополнительных способах визуализации сведений, собранных для BloodHound, в том числе с использованием Jupyter Notebooks:

viz1

Пример созданной визуализации

Прочие дополнения

Также для общего развития приведу ряд утилит, которые не получилось отнести к какому-либо разделу ранее.

  • ADExplorerSnapshot.py - конвертер снимка состояния домена, сделанного с помощью AD Explorer, в JSON файл импортируемый BloodHound.
  • ldd2bh- конвертер ldapdomaindump в формат BloodHound, может пригодиться при релей атаках.
  • ACLPwn- старый скрипт для автоматизации эксплуатации уязвимостей, выявленных в BloodHound
  • Max- утилита, включающая в себя ряд различных модулей, часть из которых не была рассмотрена ранее
  • FoxTerrier
  • BofHound

Рекомендации по противодействию BloodHound

Чтобы затруднить атакующему проведение разведки с помощью BloodHound следует минимизировать сбор сведений, которые он может получить. Для этого можно:

  1. Ограничить доступ к списку сессий пользователей.
  2. Запретить выгрузку перечня пользователей и групп из Active Directory по протоколу SAMRPC.
  3. Отключить анонимные учетные записи
  4. Исключить группу “Authenticated Users” из группы “pre-Windows 2000 compatible access” - источник

Промежуточный итог первой части

Из рассмотренного ранее материала следуют выводы:

  • BloodHound можно обогатить множеством новых атрибутов, объектов и связей
  • “обогащённый” BloodHound можно дополнить новыми запросами
  • на основе запросов можно строить автоматизированные отчеты или интерактивные визуализации

Часть 2. Управление векторами атак

Как было показано ранее, BloodHound содержит множество данных, на основе которых можно строить вероятные вектора компьютерных атак. Управление указанными векторами позволяет решать различные задачи.

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

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

Создатели BloodHound разумеется не оставили без внимания такое перспективное направления для развития своего инструмента и выпустили на его основе полноценный продукт BloodHound Enterprise.

enterprise_example

Пример интерфейса BloodHound Enterprise

На официальном сайте BloodHound присутствует множество маркетинговых лозунгов и это нормально для сайта платного продукта. Тем не менее кроме пестрых заголовков авторы BloodHound написали ряд статей на тему управления векторами атак:

Важно отметить, что BloodHound Enterprise обладает моделью распространения Software-as-a-Service, что в совокупности с отсутствием общедоступной пробной версии, не позволяет оценить этот продукт рядовому исследователю. Если у кого-то есть возможность предоставить доступ к интерфейсу BloodHound Enterprise, то буду признателен.

enterprise_comparison

Таблица сравнения и различий двух версий BloodHound

Прежде чем выпустить платную версию, создатели BloodHound уже пробовали использовать его для управления векторами атак:

Кроме того, некоторые исследователи смотрели на граф BloodHound с точки зрения анализа возможного распространения атакующего, в частности вредоносной программы вымогателя:

Значимые объекты

Одним из ключевых вопросов при исследовании векторов атак является выявление наиболее значимых объектов.

Для лучшего понимания приведу следующее нестрогое определение: наиболее значимый объект - объект, захват которого вносит существенный вклад в дальнейшее развитие векторов атак.

Некоторые подходы к определению указанных объектов и оценки их значимости предпринимаются на практике, например в следующих инструментах:

goodhound

Пример запуска GoodHound

kangal_1

Пример до преобразования в Kangal

kangal_2

Пример после преобразования в Kangal

Также на момент написания настоящего материала был опубликован цикл статей:

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

Предлагаемый подход к оценке значимости

Для начала более формализовано опишу задачу. Имеется взвешенный мультиорграф, отображающий вероятные вектора атак в домене Active Directory, построенные от объектов первоначального доступа до заданной особо привилегированной цели, например группы “Domain Admins”. Требуется определить меру значимости каждого, входящего в указанный мультиорграф элемента с точки зрения атакующей или защищающей стороны.

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

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

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

Чуть более подробнее расскажу о предлагаемой идее. Для иллюстрации рассмотрим следующий надуманный пример:

path_example

Учетная запись, подверженная атаке AS-REP roasting, выступает в качестве точки первоначального доступа, а DC - особо привилегированная цель.

Для примера составим таблицу с весами:

НазваниеВес
“может зайти по RDP”40
“является админом”5
“входит”1
“имеет сессию”50
“DCSync”5

Далее полученный граф преобразовывается в электрическую схему по следующим правилам:

  1. Точки первоначального доступа преобразуются в источники ЭДС (тока). Также в качестве улучшения имеет смысл также составить отдельную таблицу для различных классов объектов первоначального доступа, в которой в зависимости от вероятности захвата указанных объектов ставить в соответствие различные напряжения.
  2. Ребро перехода преобразуются в резистор, последовательно соединенный с диодом. Величина сопротивления прямо пропорциональна весу ребра. Диод необходим для учета свойства ориентированности графа.
  3. Особо привилегированная цель преобразуется в заземление.

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

Тем, кто знаком с правилами Кирхгофа, преимущества предлагаемого подхода должны быть очевидны.

C помощью программы Multisim была смоделирована электрическая схема с учетом предложенных преобразований:

current_scheme

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

Автоматизировать построение и расчёт электрических схем на языке Python можно с помощью модуля ltspice.

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

waterfall

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

Для примера тестовый граф, приведенный ниже:

example_paths

Преобразуется в следующую интерактивную визуализацию:

yed_example

Заключение

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

Также в завершении был предложен и кратко описан свой собственный алгоритм оценки значимости объектов Active Directory с точки зрения атакующих и защищающих.