Представьте, что вы можете видеть невидимые связи в вашей инфраструктуре Active Directory, выявлять сложные последовательности атак и устранять их до того, как они приведут к инцидентам. Утилита BloodHound делает это реальностью! В этой книге вы познакомитесь с мощным инструментом, который использует графовую базу данных Neo4j и язык запросов Cypher, чтобы дать вам полный контроль над вашей системой безопасности. С помощью этой книги вы сможете освоить интерфейсы BloodHound и расширять его функционал для решения специфических задач вашей организации, научитесь писать эффективные запросы на языке Cypher для выявления скрытой опасности, визуализировать все опасные связи между объектами Active Directory и планировать действия по их устранению. Не важно, специалист вы по безопасности, аудитор или участник Red Team, эта книга даст вам все необходимые знания для проведения глубокого анализа защищенности Active Directory и выявления потенциальных атак. Необходимо помнить, что не только пользователи могут иметь права локального администратора на хосте, но и компьютеры. Зачем читать • Получите глубокое понимание того, что такое BloodHound, и возможность создать инструмент по своему желанию. • Научитесь использовать SharpHound для сбора информации и анализировать результаты в Neo4j. • Реальные примеры и практические сценарии анализа безопасности Active Directory. Интересно, что при очистке базы данных в браузере neo4j остаются ссылки на свойства объектов и названия связей. Вы узнаете Научитесь эффективно использовать один из самых мощных инструментов для анализа и повышения безопасности Active Directory, получите практические знания и примеры, которые помогут выявлять и предотвращать сложные киберугрозы. Cypher — достаточно свободный язык запросов, одинаковых результатов можно добиться разными путями. Для кого Книга предназначена для специалистов и аудиторов информационной безопасности, IT-специалистов и разработчиков.
Приведённый ознакомительный фрагмент книги «Идём по киберследу: Анализ защищенности Active Directory c помощью утилиты BloodHound» предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других
02. Знакомство с SharpHound, BloodHound и neo4j
Как говорилось ранее, утилита BloodHound состоит из трех частей: непосредственно сама BloodHound, сборщик данных SharpHound и база данных neo4j. В этой части книги мы рассмотрим интерфейсы этих приложений.
SharpHound
SharpHound — это консольное приложение, написанное на C#. SharpHound собирает информацию об объектах домена через запросы LDAP, а также информацию с хостов, такую как членство в локальных группах и сессиях.
Скачать SharpHound можно на официальном GitHub[8]. Разные версии SharpHound генерируют разные форматы данных в JSON, которые BloodHound не всегда принимает. Для BloodHound версии 4.3.1 подойдет SharpHound 1.1.0 или 1.1.1.
Информация
В исходных кодах BloodHound тоже есть SharpHound, он находится в директории Collectors.
Внимание
Стоит упомянуть, что антивирусные решения считают SharpHound вредоносной утилитой.
SharpHound имеет большое количество настроек, которые помогают более гибко собирать информацию с домена и рабочих станций. Не будем останавливаться на всех параметрах запуска утилиты — у нее есть понятная справка, которую можно получить, выполнив команду:
SharpHound.exe — h
В интернете можно найти различные подсказки по методам запуска и некоторую дополнительную информацию по запросам Cypher. Одна из таких подсказок представлена на рисунке 2.1[9].
Для последующего изучения нам потребуются данные из домена. Поэтому в нашей лаборатории запустим SharpHound на хосте COMP от имени доменной учетной записи admin, которая входит в группу доменных администраторов. Это позволит собрать всю полезную информацию из домена и хостов (рис. 2.2).
SharpHound — c All
Рис. 2.1. Подсказка по SharpHound
Рис. 2.2. Результат сбора информации
Внимание
Обновленные операционные системы не позволяют получить информацию о сессиях пользователей (HasSession) и членстве в локальных группах (CanRDP или AdminTo) без прав локального администратора.
К собранной информации вернемся позже, а сейчас рассмотрим интерфейс BloodHound.
Интерфейс BloodHound
После прохождения аутентификации открывается основное окно. Пока данных нет, оно пустое; после загрузки данных BloodHound выполняет запрос, который показывает, какие пользователи входят в группу доменных администраторов.
Интерфейс BloodHound интуитивно понятен. Весь его функционал представлен в одном окне.
Рис. 2.3. Основное окно BloodHound
В левом верхнем углу располагаются форма поиска и информационные вкладки, в правом верхнем углу — меню для настройки интерфейса, загрузки и выгрузки данных. В правом нижнем углу — работа с масштабом, внизу по центру окна располагается форма Raw Query для Cypher-запросов.
В основном поле отображается или узел, или граф на основании запроса Cypher. Узлы можно перемещать по полю. Само поле, узлы и связи имеют контекстное меню, которое можно вызвать правой клавишей мыши.
Рис. 2.4. Форма поиска
Форма поиска состоит из следующих элементов:
● Дополнительная информация (More Info)
● Поле поиска узлов
● Поиск путей (Pathfinding)
● Возврат (Back)
● Фильтрация типов связей (Filter Edge Types)
Дополнительная информация (More Info)
Этот объект является основным полем для получения информации о свойствах и некоторых связях узлов. При нажатии на кнопку More Info выпадает поле, состоящее из трех элементов.
Рис. 2.5. Вкладка «Дополнительная информация»
Database Info
Вкладка содержит статистические данные по количеству объектов в базе данных, а также некоторые инструменты для работы с базой данных (рис. 2.6).
Рис. 2.6. Статистика по узлам и связям
Ниже статистики находятся элементы для управления данными.
Рис. 2.7. Управление данными
Кратко рассмотрим эти элементы и их функционал:
● Refresh Database Stats — после загрузки данных или добавления информации через запросы Cypher статистика может быть неверной, эта кнопка обновляет статистические данные.
● Warm Up Database — по описанию от разработчиков, при нажатии этой кнопки данные из базы переносятся в оперативную память, что позволяет увеличить скорость работы с ними.
● Clear Sessions — при нажатии этой кнопки удаляются все связи HasSession. Эта функция бывает полезной перед загрузкой новых данных о сессиях пользователей.
● Clear Database — при нажатии этой кнопки удаляются все узлы и связи между ними.
Замечание
Интересно, что при очистке базы данных в браузере neo4j остаются ссылки на свойства объектов и названия связей.
Информация об узле (Node Info)
В этой вкладке отображаются свойства узла. Кроме того, в ней выполняются некоторые Cypher-запросы, которые предоставляют статистические данные, например, для пользователей и компьютеров выдается информация о сессиях или коротких путях до узлов высокой ценности.
Рис. 2.8. Информация об узле
Разные типы узлов содержат разную информацию. Так, например, групповые политики содержат информацию, к каким пользователям или компьютерам они применяются, а у пользователей и компьютеров отображается информация о правах на другие объекты или правах, связанных с боковым перемещением (рис. 2.9).
Рис. 2.9. Информация о группах и правах
Очень полезна информация о входящих и исходящих правах (ACL) на другие объекты, которые могут быть использованы во время работ.
Рис. 2.10. Входящие и исходящие ACL
Анализ (Analysis)
Вкладка Анализ (Analysis) содержит встроенные в BloodHound полезные запросы, с которых можно начать исследовать инфраструктуру Active Directory (рис. 2.11).
Рис. 2.11. Список встроенных запросов
Информация
Встроенные запросы находятся в файле PrebuildQueries.json в директории src\components\SearchContainer\Tabs.
Ниже находится раздел для добавления собственных Cypher-запросов, который содержит форму для их создания, а также список созданных запросов, разделенный по категориям.
Рис. 2.12. Раздел создания собственных запросов
При нажатии на кнопку в виде карандаша появляется форма для добавления запросов (рис. 2.13).
При переходе к полю выбора категории запроса можно создать собственную категорию или выбрать из существующих.
Информация
Файл customqueries.json с собственными запросами находится в домашней директории пользователя, запустившего BloodHound, с путем \AppData\Roaming\bloodhound\.
Рис. 2.13. Форма добавления собственных запросов
Информация
При вызове формы добавления собственных графов файл создается автоматически, если он еще не создан.
Мы еще вернемся к созданию собственных запросов.
Поле поиска
Следующий элемент — форма поиска узлов. Если начинать вводить буквы, BloodHound предлагает различные варианты. Также форма поиска показывает различные типы меток — они дают возможность видеть, к какому типу принадлежит узел. Функция полезна для поиска узлов по ключевым словам.
Внимание
По умолчанию поиск по ключевому слову ограничивается 10 узлами. Изменить количество узлов можно в Raw Query, если в настройках включен Query Debug Mode.
Кроме имени для поиска можно использовать свойство objectid.
Форма Поиск путей (Pathfinding)
Функция позволяет строить короткие пути. При нажатии на иконку появляется еще одна форма поиска, в первой строке указывается начальный узел, во второй — конечный (рис. 2.14).
Работает аналогично полю поиска, при нажатии стрелки формируется Cypher-запрос с построением коротких путей от первого узла до конечного.
Рис. 2.14. Форма поиска путей
Информация
BloodHound создает Cypher-запрос со всеми связями, указанными в файле AppContainer.jsx, и с учетом фильтра связей.
Возврат (Back)
Кнопка в виде стрелки влево возвращает предыдущий граф, но без возврата самого запроса в Raw Query.
Фильтр связей (Filter Edge Types)
При нажатии на кнопку в виде воронки появляется новое окно с перечнем доступных связей, при снятии галки связь убирается из запроса при использовании формы Поиск путей (Pathfinding). Каждая группа имеет кнопки включения всех связей (две галки) и отключения всех связей (ластик).
Рис. 2.15. Фильтр связей
Внимание
Фильтр работает только с функцией Поиск путей (Pathfinding).
Меню состоит из следующих элементов:
● Обновление графа (Refresh)
● Экспорт графа (Export Graph)
● Импорт графа (Import Graph)
● Загрузка данных
● Статус загрузки (View Upload Status)
● Изменение отображения графа (Change Layout Type)
● Настройки
● Информация о программе (About)
Рис. 2.16. Меню
Обновление графа (Refresh)
Нажатие на эту кнопку позволяет вернуть граф в исходное состояние, которое было получено при выполнении запроса.
Экспорт графа (Export Graph)
Кнопка в виде стрелки вверх позволяет экспортировать граф. BloodHound поддерживает два формата — в виде картинки PNG или в формате JSON.
Данный функционал полезен для вставки картинки в отчет, а JSON-файл можно передать для анализа графа.
Импорт графа (Import Graph)
Кнопка в виде стрелки вниз позволяет загрузить ранее сохраненный граф в виде JSON-файла, в результате чего будет отрисован граф, созданный ранее.
Информация
Импортировать граф можно даже в пустую базу или в базу с другими данными.
Загрузка данных (Upload Data)
При нажатии на кнопку в виде стрелки вверх в круге появляется окно, в котором указываются файлы, сгенерированные SharpHound. Обычно SharpHound формирует ZIP-архив, в котором находятся файлы, разделенные по классу объектов домена.
BloodHound автоматически распаковывает архив и преобразовывает JSON в Cypher-запросы, тем самым загружая данные.
Статус загрузки (View Upload Status)
Кнопка в виде списка показывает статус загрузки данных. При нажатии на кнопку Clear Finished статус удаляется.
Изменение отображения графа (Change Layout Type)
Иконка в виде графика позволяет изменять отображение графа. BloodHound предоставляет два вида отображения — Направленное (Directed) и Иерархическое (Hierarchical) (рис. 2.17–2.18).
Изменение типа позволяет лучше рассмотреть граф, и в некоторых случаях BloodHound выстраивает красивые цепочки.
Рис. 2.17. Направленное отображение графа
Рис. 2.18. Иерархическое отображение графа
Настройки (Settings)
При нажатии на кнопку Настройки появляется окно с настройками, их немного.
Рис. 2.19. Окно с настройкам
Кратко рассмотрим представленные настройки.
Порог свертывания узлов (Collapse Threshold). В BloodHound есть механизм, который группирует узлы, имеющие одинаковую связь (только одну) с другим узлом. Это позволяет уменьшить нагрузку на отображение графа, но при этом можно упустить какой-то узел. Применяется к Группам (Group), Контейнерам (Container) и Подразделениям (OU). Данный параметр имеет числовое значение, по умолчанию это 5, что означает — если будет пять узлов или больше, то они объединятся в одну группу. В этой группе появится значок количества объектов внутри группы. Значение 0 отключает эту функцию.
Отображение названия связи (Edge Lable Display) — режим отображения названия связи.
Отображение названия узла (Node Lable Display) — режим отображения названия узла.
Режим отображения узлов и связей может иметь следующие варианты:
● Пороговое отображение (Threshold Display) — название появляется или исчезает при изменении масштаба графа.
● Всегда показывать (Always Display) — название всегда отображается.
● Никогда не показывать (Never Display) — название никогда не отображается.
Вне зависимости от выбранного режима отображения название появится при наведении курсора мыши на узел.
Режим отладки запросов (Query Debug Node) — при включении данной опции все запросы отображаются в Raw Query. Это удобный вариант для обучения или отладки запросов Cypher.
Режим низкой детализации (Low Detail Mode) полезен для слабых машин, так как требует меньше ресурсов для отрисовки узлов. Узлы будут представлять собой только цветные круги.
Темный режим (Dark Mode) включает темный режим интерфейса.
Информация о программе (About)
Кнопка Информация о программе показывает окно с информацией о разработчиках и типе лицензии данной программы (рис. 2.20).
Рис. 2.20. Информация о программе
Рис. 2.21. Управление масштабом
Тут все просто: плюс увеличивает масштаб графа, минус — уменьшает, а кнопка в виде дома возвращает масштаб в исходное состояние. При этом если узлы перемещались, то они не будут возвращены в исходное состояние, в отличие от действия кнопки Обновление графа (Refresh).
Совет
Колесо мыши также можно использовать для изменения масштаба графа.
Данная форма позволяет вводить собственные запросы Cypher или отлаживать существующие. Не поддерживает многострочные запросы, в результате чего все многострочные запросы будут преобразованы в одну строку.
При нажатии правой клавишей мыши на узле появится окно управления данным узлом.
Рис. 2.22. Окно управления узлом
Данное окно содержит несколько интересных функций, которые могут пригодиться во время выполнения работ. Поэтому кратко их рассмотрим.
Установить в качестве начального узла (Set as Starting Node) — при выборе этого варианта в Форме поиска появится имя выбранного узла.
Установить в качестве конечного узла (Set as Ending Node) — при выборе этого варианта откроется форма Поиск путей (Pathfinding) и в конечном узле появится имя выбранного узла.
Построить короткие пути до узла (Shortest Paths to Here) — позволяет получить все короткие пути до выбранного узла.
Построить короткие пути от скомпрометированных узлов до указанного узла (Shortest Paths to Here from Owned) — данный вариант позволяет получить короткие пути от всех скомпрометированных узлов (у которых свойство owned имеет значение TRUE) до выбранного узла.
Изменить свойства узла (Edit Node) — нажатие на эту кнопку открывает окно, позволяющее изменять существующие свойства или добавлять новые.
Рис. 2.23. Форма изменения свойств узла
Пометить узел как скомпрометированный (Mark as Owned) — устанавливает свойству узла owned значение TRUE. Кроме изменения свойства owned на узле в правом нижнем углу появится значок в виде черепа. Если в свойстве owned уже установлено значение TRUE, тогда вариантом будет Снять метку со скомпрометированного узла (Unmark as Owned)
Конец ознакомительного фрагмента.
Приведённый ознакомительный фрагмент книги «Идём по киберследу: Анализ защищенности Active Directory c помощью утилиты BloodHound» предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других