Привет, Хабр! На связи Дмитрий Неверов, руководитель направления тестирования внутренней инфраструктуры в Бастионе. Недавно я выпустил книгу «Идём по киберследу», представляющую собой практическое руководство по BloodHound — инструменту для разведки и анализа Active Directory, который очень любят хакеры, пентестеры и сисадмины.
В статье расскажу о том, как работает это приложение и за что его так любят вышеупомянутые специалисты. Мы выясним, почему мониторинг Active Directory является ключевым элементом в построении безопасной сетевой инфраструктуры, и разберемся, как теория графов помогает защищать корпоративные сети. Напоследок поделюсь парой практических советов, которые помогут вам максимизировать пользу от этого инструмента при проведении пентестов.
Что такое BloodHound и зачем он нужен
По мере роста компании число связей между пользователями, группами и ресурсами растет экспоненциально, делая их ручной анализ практически невозможным. Постоянное усложнение корпоративной инфраструктуры приводит к возникновению множества «технических хвостов» — неактуальных учетных записей и избыточных прав доступа. Особенно остро эта проблема проявляется при работе с Active Directory (AD), где количество связей между объектами может исчисляться тысячами. BloodHound позволяет находить и анализировать такие неявные и скрытые связи с помощью теории графов.
Традиционный подход к анализу, основанный на просмотре списков и ручной проверке каждой учетной записи, требует огромных временных затрат и чреват ошибками. При таком подходе легко упустить неочевидные связи между объектами. Например, серьезный риск связан с управлением учетными записями уволенных сотрудников, которые не всегда своевременно блокируются.
Графовое представление данных позволяет быстро проследить путь от одной точки к другой, увидеть все промежуточные связи и оценить потенциальные риски. Это особенно критично при анализе больших инфраструктур, где ручной аудит практически невозможен из-за объема данных и сложности взаимосвязей между объектами.
Исторически анализ прав доступа и связей в инфраструктуре часто проводился вручную, когда специалисты по безопасности были вынуждены рисовать схемы на бумаге, отмечая возможные пути доступа пользователей к различным ресурсам. Такой подход крайне ограничен в масштабе и эффективности. Появление BloodHound и подобных ему инструментов — это качественный скачок в методологии анализа безопасности ИС за счет автоматизации.
Архитектура и принципы работы BloodHound
BloodHound — это не просто инструмент визуализации, а «надстройка» над базой данных графов. Система состоит из нескольких ключевых компонентов, каждый из которых выполняет свою специфическую функцию:
Центральным элементом системы является одностраничное веб-приложение, разработанное на JavaScript с использованием фреймворка Linkurious. Этот компонент отвечает за визуальное представление связей и зависимостей, обнаруженных в инфраструктуре.
В качестве хранилища данных BloodHound использует графовую базу данных Neo4j. Ее особенностью является использование специализированного языка запросов Cypher, который напоминает по своему синтаксису SQL.
За глубокое сканирование инфраструктуры и сбор информации о пользователях, группах, правах доступа и других объектах AD отвечает модуль SharpHound.
Благодаря взаимодействию этих компонентов система визуализирует собранные данные в виде графов, где узлами являются различные объекты инфраструктуры, а ребрами — связи между ними.
Всего существует три основные версии BloodHound, каждая из которых имеет свои особенности и целевую аудиторию:
Enterprise — коммерческая версия продукта с детальными рекомендациями по устранению обнаруженных уязвимостей и улучшенным пользовательским интерфейсом;
Community Edition — версия с более быстрой библиотекой для работы, выпущенная в 2024 году;
Legacy — классическая версия с открытым исходным кодом в виде одностраничного веб-приложения.
Практические аспекты анализа безопасности Active Directory с помощью BloodHound
Анализ с помощью BloodHound позволяет выявить сложные цепочки связей, где обнаружение одной уязвимости может привести к раскрытию более масштабных проблем. Например, один из критических аспектов ИБ в корпоративной среде связан с выявлением неочевидных привилегий доступа в Active Directory. Для решения этой задачи в базовый функционал BloodHound включены инструменты анализа членства в группах, прав локального администратора и параметров списков доступа.
Однако возможности инструмента не ограничиваются такой базовой функциональностью — его можно расширять под конкретные задачи аудита. Например, если во время проверки в общей папке обнаружен конфигурационный файл с паролем от учетной записи, администратор может добавить в BloodHound новый тип связи HasCredentials
. Данная дополнительная связь, в сочетании со стандартными правами доступа к файлу, поможет выявить новые потенциальные пути компрометации учетной записи через доступ к файлу с паролем.
Подобное расширение функционала особенно полезно при выявлении сложных сценариев компрометации системы безопасности. Один из таких сценариев связан с феноменом «теневых администраторов» — пользователей, обладающих повышенными правами доступа, которые забыли отозвать. В этой статье уже приводили пример, как с помощью BloodHound можно получить информацию о дополнительных служебных учетных записях или осуществить их поиск по SPN.
С одной стороны, BloodHound позволяет выявлять такие случаи, давая администратору возможность наглядно проследить, как пользователь может получить непредусмотренный доступ к критическим ресурсам через членство в различных группах. С другой — активность BloodHound может вызывать срабатывание систем безопасности, поскольку активное сканирование AD и массовые запросы к контроллеру домена схожи с поведением вредоносного ПО. Создается парадоксальная ситуация: механизмы защиты блокируют инструмент, который нужен для анализа безопасности.
Для решения этой проблемы специалисты по ИБ в некоторых случаях вынуждены модифицировать код модуля сбора данных SharpHound (именно он осуществляет активное сканирование сети) для снижения заметности его работы. Кроме того, приходится тщательно планировать время сканирования, чтобы минимизировать нагрузку на контроллеры домена.
Любой инструмент анализа безопасности — это палка о двух концах. Те же возможности, которые помогают защитникам находить уязвимости, могут быть использованы атакующими. Работая с BloodHound, специалисты RedTeam могут имитировать действия злоумышленников, а для BlueTeam утилита полезна своими возможностями подключения к SIEM (FalconHound).
Базовое исследование учетной записи выглядит так: администратор определяет группы, в которых состоит пользователь, анализирует их вложенность в другие группы, затем исследует имеющиеся права. При этом важно обращать внимание даже на названия групп — они могут дать подсказку о потенциальных привилегиях.
Например, группа с именем «RDP_SRV_1» может указывать на наличие доступа к серверу SRV1. После проверки такие предположения подтверждаются добавлением соответствующих связей в базу данных.
Если прямых связей нет, но доступ необходим, можно использовать дополнительные инструменты анализа, результаты которых также добавляются в BloodHound для расширения картины связей в инфраструктуре. Длинные цепочки связей особенно наглядно отображаются в отчетах, делая процесс анализа безопасности более понятным.
Ограничения и особенности использования BloodHound
Основной недостаток при работе с BloodHound связан с объемом собираемой информации — базовая версия инструмента не охватывает все потенциально важные для анализа безопасности данные. Например, до недавнего времени не собиралась информация о центрах сертификации, а данные об общих файловых ресурсах и потенциально опасных файлах (например, содержащих пароли) до сих пор требуют дополнительных настроек для сбора.
При работе с инструментом также следует учитывать возможность технических сбоев при формировании графов. Иногда это приводит к тому, что некоторые существующие связи не отображаются в базе данных, или, наоборот, отображаются несуществующие связи. Впрочем, гибкость BloodHound позволяет компенсировать эти ограничения за счет добавления новых типов связей, свойств и методов сбора данных под конкретные задачи аудита.
Несмотря на описанные ограничения, преимущества автоматизированного анализа очевидны. Яркий пример повышения эффективности: при компрометации множества учетных записей (20–30) с одинаковым паролем, BloodHound позволяет быстро проанализировать их привилегии, сгруппировав записи по общему признаку. Такой анализ вручную занял бы значительно больше времени и был бы чреват ошибками. Именно подобные практические потребности стимулируют дальнейшее развитие инструмента.
В отличие от того же Burp Suite, вокруг BloodHound пока не сформировалось активное сообщество разработчиков расширений. Развитие инструмента происходит скорее точечно: отдельные энтузиасты создают специфические функции под свои задачи, публикуют статьи о своих наработках, но систематической работы над расширением функциональности я не видел. А что касается сложностей при работе с инструментом, то они связаны не столько с техническими аспектами построения запросов, сколько с концептуальным пониманием желаемого результата.
Зачем создавалась книга про BloodHound
Идея написать книгу родилась из практического опыта работы с утилитой. От идеи до реализации прошло четыре месяца. В этом плане «Идём по киберследу» — не просто руководство по использованию BloodHound, а компиляция практического опыта по расширению возможностей инструмента: от создания новых меток и связей до добавления новых интерфейсов управления.
Хотя книга написана для Legacy-версии BloodHound, большая часть информации актуальна и для Community Edition, за исключением некоторых аспектов интерфейса.
Для эффективной работы с инструментом необходимо прежде всего хорошо понимать принципы работы Active Directory. В самом BloodHound ничего сверхсложного нет, по факту это своего рода конструктор. Если визуально — у нас есть один узел, есть второй узел, между ними мы прокладываем связь. Нужно лишь указать, какой узел является начальным, какой конечным, какие связи нам интересны. При создании более сложных запросов, например, для анализа цепочки связей, используется тот же принцип, но добавляются дополнительные точки. Главное — четко понимать, какой результат нужно получить на выходе.
В завершение хочу поделиться парой советов для эффективного тестирования внутренней инфраструктуры:
Начинайте работу с инструментом, исследуя ближайшее окружение. Изучайте доступные группы, их возможности и ограничения.
Иногда полезно двигаться от конца к началу, определяя конечную точку и возможные пути к ней.
Не ограничивайтесь только данными из BloodHound. Отсутствие прямой связи в графе не означает, что этой связи не существует — возможно, ее просто нужно искать другими инструментами.
Применяйте комбинированный подход, анализируя, как могут соприкасаться два различных узла, даже если между ними нет очевидной связи в базе данных.
Не пренебрегайте возможностью писать собственные запросы.
Старайтесь корректно наполнять базу данных и интерпретировать получаемые результаты: стоит добавлять информацию, которая может дать какой-то положительный результат. Например, если у вас есть возможность только читать атрибуты какого-то узла, но не изменять их, такая информация в большинстве случаев не представляет особой ценности.
При интерпретации результатов помните, что не все обнаруженные связи имеют ценность. Простой пример ложной интерпретации — когда инструмент строит граф через узел, который технически существует, но практически недоступен (например, отключен) или требует дополнительных прав доступа.
В отличие от официальной документации, которая фокусируется на технических аспектах, в книге описана методология работы с BloodHound, учитывающая специфику анализа корпоративных инфраструктур. Такой подход особенно ценен для специалистов, которые только начинают работать с инструментом или хотят расширить его возможности под свои конкретные задачи. Но не забывайте, что любой инструмент — это лишь средство в руках специалиста. Чтобы эффективно им пользоваться, нужно хорошо понимать контекст и правильно интерпретировать полученные данные.