Читаем Идём по киберследу: Анализ защищенности Active Directory c помощью утилиты BloodHound онлайн бесплатно
Идём по киберследу: Анализ защищенности Active Directory c помощью утилиты BloodHound
Представьте, что вы можете видеть невидимые связи в вашей инфраструктуре Active Directory, выявлять сложные последовательности атак и устранять их до того, как они приведут к инцидентам. Утилита BloodHound делает это реальностью! В этой книге вы познакомитесь с мощным инструментом, который использует графовую базу данных Neo4j и язык запросов Cypher, чтобы дать вам полный контроль над вашей системой безопасности. С помощью этой книги вы сможете освоить интерфейсы BloodHound и расширять его функционал для решения специфических задач вашей организации, научитесь писать эффективные запросы на языке Cypher для выявления скрытой опасности, визуализировать все опасные связи между объектами Active Directory и планировать действия по их устранению. Не важно, специалист вы по безопасности, аудитор или участник Red Team, эта книга даст вам все необходимые знания для проведения глубокого анализа защищенности Active Directory и выявления потенциальных атак. Необходимо помнить, что не только пользователи могут иметь права локального администратора на хосте, но и компьютеры. Зачем читать• Получите глубокое понимание того, что такое BloodHound, и возможность создать инструмент по своему желанию.• Научитесь использовать SharpHound для сбора информации и анализировать результаты в Neo4j.• Реальные примеры и практические сценарии анализа безопасности Active Directory.Интересно, что при очистке базы данных в браузере neo4j остаются ссылки на свойства объектов и названия связей. Вы узнаетеНаучитесь эффективно использовать один из самых мощных инструментов для анализа и повышения безопасности Active Directory, получите практические знания и примеры, которые помогут выявлять и предотвращать сложные киберугрозы.Cypher – достаточно свободный язык запросов, одинаковых результатов можно добиться разными путями. Для когоКнига предназначена для специалистов и аудиторов информационной безопасности, IT-специалистов и разработчиков.
Компьютеры и Интернет / Зарубежная компьютерная, околокомпьютерная литература / Программирование, программы, базы данныхЗнак информационной продукции (Федеральный закон № 436-ФЗ от 29.12.2010 г.)
Редактор:
Руководитель проекта:
Арт-директор:
Корректоры:
Верстка:
© Неверов Д., 2024
© Оформление. ООО «Альпина ПРО», 2025
Утилита BloodHound – популярный инструмент для проведения оценки защищенности Active Directory. BloodHound использует графовую базу данных neo4j и язык запросов Cypher, что позволяет увидеть небезопасные связи между объектами, которые не очевидны при обычном линейном рассмотрении. В книге приводятся интерфейсы BloodHound и базы данных neo4j. Также мы знакомимся с языком запросов Cypher на реальных примерах, а в завершение рассматриваем, как можно расширить функционал BloodHound, чтобы повысить эффективность утилиты.
Любой проект начинается со сбора и анализа информации, и проекты по наступательной безопасности не исключение. Можно сказать, что это один из самых важных этапов проекта: качество собранной информации позволит эффективно выполнить поставленные задачи и уменьшить количество потраченного времени.
В результате сбора информации мы получаем большой объем данных, который необходимо изучить и извлечь важное содержание. В линейных строковых данных не всегда можно эффективно определить связи между двумя объектами. Визуализация данных в виде графов помогает определить связь между двумя объектами и показать причину возникновения этой связи. Также графы помогают определить дальнейшие шаги при выполнении работ.
Графы можно рисовать на бумаге или в приложениях (например, visio), но при использовании этого метода могут быть упущены некоторые связи. Существуют инструменты, которые на основе полученных данных могут показать связи между объектами, даже если эти связи на первый взгляд неочевидны. Среди них
BloodHound состоит из трех элементов:
1.
2.
3.
BloodHound использует теорию графов, чтобы показать скрытые и часто непреднамеренные связи в среде Active Directory или Azure.
Наступательная безопасность: специалисты по информационной безопасности могут использовать BloodHound для обнаружения очень сложных последовательностей атак, которые обычным способом невозможно быстро обнаружить.
Кроме наступательной безопасности этот инструмент может использоваться и в других областях для обеспечения безопасности, например:
● Защитники могут использовать BloodHound для выявления и устранения тех же последовательностей атак.
● Специалисты по реагированию на инциденты могут использовать BloodHound для проведения расследований и выявления причин инцидента.
● Аудиторы могут проводить проверки на соответствие стандартам безопасности.
● Утилита BloodHound будет полезна во время стратегических и тактических игр, когда любой сценарий можно визуализировать и пошагово разобрать.
Материал в книге подготовлен с использованием среды Windows. Для сбора дополнительной информации используются скрипты, написанные на Powershell, который установлен по умолчанию на Windows и имеет достаточный набор функций для работы с доменом, файловой системой и т. д.
Для изучения материала потребуется тестовый стенд с Active Directory, а также машина, на которой будут анализироваться данные и добавляться функционал к самому BloodHound. В книге домен называется DOMAIN.LOCAL, но это не имеет большого значения, самое главное – менять имя домена на свое при выполнении запросов.
Минимальные требования к стенду – это контроллер домена и компьютер для аналитики и разработки. Для удобства сбора информации и анализа данных машину для BloodHound можно ввести в домен. Наименование машин будет следующим:
● DC – контроллер домена, Windows Server 2019;
● COMP – рабочая станция для BloodHound, Windows 10/11.
Если мощности позволят, необходимо создать еще одну виртуальную машину и добавить ее в домен. Если мощностей нет – тогда просто создать еще один объект, компьютер:
● SERVER – просто сервер, Windows Server 2019.
В первую очередь для установки Active Directory на сервере, который будет являться контроллером домена, необходимо поменять имя на DC и установить статический адрес.
Рис. 1.1. Установка статического адреса для контроллера домена
Запускаем
Выбираем следующие роли:
●
●
Рис. 1.2. Выбор ролей
Далее нажимаем кнопку
После установки нажимаем на кнопку
Нажимаем на ссылку domain.local (рис. 1.5).
В следующем окне оставляем все по умолчанию и вводим пароль для восстановления (рис. 1.6).
Рис. 1.3. Подтверждение установки Active Directory
Рис. 1.4. Завершение установки Active Directory
Рис. 1.5. Установка имени домена
Рис. 1.6. Выбор уровня домена
Все остальные настройки оставляем без изменений и нажимаем кнопку
Теперь необходимо ввести машины COMP и SERVER в домен. Но перед этим их нужно переименовать и установить статические IP-адреса.
Совет
Рекомендуется на всех хостах отключить межсетевой экран и антивирус, чтобы они нам не мешали во время экспериментов.
После создания домена необходимо создать несколько учетных записей:
● admin – пароль Qwerty123, установить бесконечный срок действия пароля, после создания добавить пользователя в группу доменных администраторов;
● user – пароль Qwerty123, установить бесконечный срок действия пароля;
● victim – пароль Qwerty123, установить бесконечный срок действия пароля.
Создать пользователей можно с помощью ADUC или Active Directory Module. В этом случае команды будут следующими:
# Создать пользователя admin
New-ADUser -Name"admin" -SamAccountName "admin" -UserPrincipalName "admin@domain.local" -DisplayName "admin" -GivenName "admin" -AccountPassword (ConvertTo-SecureString "Qwerty123" -AsPlainText -force) -Enabled $true -PasswordNeverExpires $true
# Создать пользователя user
New-ADUser -Name "user" -SamAccountName "user" -UserPrincipalName "user@domain.local" -DisplayName "user" -GivenName "user" -AccountPassword (ConvertTo-SecureString "Qwerty123" -AsPlainText -force) -Enabled $true -PasswordNeverExpires $true
# Создать пользователя victim
New-ADUser -Name "victim" -SamAccountName "victim" -UserPrincipalName "victim@domain.local" -DisplayName "victim" -GivenName "victim" -AccountPassword (ConvertTo-SecureString "Qwerty123" -AsPlainText -force) -Enabled $true -PasswordNeverExpires $true
# Добавить пользователя admin в группу доменных администраторов
Add-ADGroupMember -Identity "Domain Admins" -Members admin
Совет
Для наполнения домена можно воспользоваться скриптом BadBlood[4], но не стоит для первых экспериментов создавать большое количество объектов. Работать с хостом COMP будем от имени учетной записи admin, она входит в группу локальных администраторов как член группы доменных администраторов. В некоторых ситуациях можно использовать другие учетные записи для тестирования различных запросов.
Выполним еще несколько действий, которые позволят сделать нашу лабораторию более интересной с точки зрения запросов:
● добавим пользователя user в группу локальных администраторов на хосте COMP;
● авторизуемся на хосте SERVER от имени пользователя victim.
Совет
Добавьте пользователя user в группу локальных администраторов на хосте COMP для будущих запросов.
Перед использованием BloodHound необходимо подготовить рабочую станцию (в нашем случае это будет компьютер с именем COMP): установить OpenJDK и neo4j.
База данных neo4j написана на языке Java, и для ее работы требуется OpenJDK. Для версии neo4j 4.4.11, которая будет использоваться на протяжении всей книги, необходимо установить OpenJDK 11. Существует два варианта установки: вручную, где потребуется прописывать все пути самостоятельно, и с помощью
Внимание
Если использовать другие версии OpenJDK, при запуске neo4j возникнет ошибка с сообщением, что данная версия не поддерживается, и рекомендациями по поддерживаемым версиям.
Установка OpenJDK вручную
Для начала нужно скачать скомпилированный дистрибутив OpenJDK 11 с официального сайта[5]. Распакуем архив в директорию C: \Program Files\openjdk\. Теперь необходимо прописать пути в переменных окружения. В командной строке с правами локального администратора нужно выполнить sysdm.cpl, перейти во вкладку «
Рис. 1.7. Свойства системы
Теперь нужно создать новую системную переменную с именем JAVA_HOME и указать путь до распакованного архива (в нашем случае это C:\Program Files\openjdk\jdk-11.0.0.1).
Рис. 1.8. Переменная окружения JAVA_HOME
Также необходимо добавить созданную переменную окружения в PATH.
Рис. 1.9. Добавление в PATH
Установка OpenJDK с помощью winget
Для Windows 10 необходимо установить
winget install ojdkbuild.openjdk.11.jdk
После установки все пути будут добавлены автоматически.
Скачать neo4j можно с официального сайта разработчика[6], для изучения будем использовать бесплатную версию Community Edition. На момент подготовки книги к печати использовалась версия 4.4.11.





