Kitobni o'qish: «Идём по киберследу: Анализ защищенности Active Directory c помощью утилиты BloodHound»

Shrift:

Знак информационной продукции (Федеральный закон № 436-ФЗ от 29.12.2010 г.)


Редактор: Евгения Якимова

Руководитель проекта: Анна Туровская

Арт-директор: Татевик Саркисян

Корректоры: Наташа Казакова, Елена Сербина

Верстка: Белла Руссо


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

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


© Неверов Д., 2024

© Оформление. ООО «Альпина ПРО», 2025

* * *

Вступление

Утилита BloodHound – популярный инструмент для проведения оценки защищенности Active Directory. BloodHound использует графовую базу данных neo4j и язык запросов Cypher, что позволяет увидеть небезопасные связи между объектами, которые не очевидны при обычном линейном рассмотрении. В книге приводятся интерфейсы BloodHound и базы данных neo4j. Также мы знакомимся с языком запросов Cypher на реальных примерах, а в завершение рассматриваем, как можно расширить функционал BloodHound, чтобы повысить эффективность утилиты.

01. Общая информация и настройка лаборатории

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

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

Графы можно рисовать на бумаге или в приложениях (например, visio), но при использовании этого метода могут быть упущены некоторые связи. Существуют инструменты, которые на основе полученных данных могут показать связи между объектами, даже если эти связи на первый взгляд неочевидны. Среди них Adelante1, Ping Castle2 и BloodHound3. Именно о BloodHound эта книга.

Что такое BloodHound

BloodHound состоит из трех элементов:

1. BloodHound – это одностраничное веб-приложение, написанное на Java Script; при создании приложения используется Linkurious. Для компиляции используется Electron.

2. Neo4j – база данных для хранения информации, в которой используется язык запросов Cypher.

3. SharpHound – сборщик информации из Active Directory.

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

В первую очередь для установки Active Directory на сервере, который будет являться контроллером домена, необходимо поменять имя на DC и установить статический адрес.


Рис. 1.1. Установка статического адреса для контроллера домена


Запускаем Server Manager и выбираем Add roles and features. Следуем за мастером добавления новой роли. Нажимаем кнопку Next. Предложенные по умолчанию настройки нас будут устраивать, поэтому нажимаем кнопку Next до тех пор, пока не появится окно Select server roles.

Выбираем следующие роли:

● Active Directory Domain Service;

● DNS Server.


Рис. 1.2. Выбор ролей


Далее нажимаем кнопку Next до самого конца, пока кнопка Install не станет активной, и нажимаем на нее (рис. 1.3)

После установки нажимаем на кнопку Close. В верхнем правом углу появился желтый восклицательный знак, который указывает нам, что роли требуют завершения настройки (рис. 1.4).

Нажимаем на ссылку Promote this server to a domain controller. Появляется окно с выбором, куда добавить контроллер домена. Так как у нас ничего нет, выбираем Add a new forest и вводим имя домена domain.local (рис. 1.5).

В следующем окне оставляем все по умолчанию и вводим пароль для восстановления (рис. 1.6).


Рис. 1.3. Подтверждение установки Active Directory


Рис. 1.4. Завершение установки Active Directory


Рис. 1.5. Установка имени домена


Рис. 1.6. Выбор уровня домена


Все остальные настройки оставляем без изменений и нажимаем кнопку Next до того момента, как кнопка Install станет активной. Нажимаем на нее, дожидаемся установки и перезагрузки сервера.

Теперь необходимо ввести машины 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

Совет

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

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

● добавим пользователя user в группу локальных администраторов на хосте COMP;

● авторизуемся на хосте SERVER от имени пользователя victim.

Совет

Добавьте пользователя user в группу локальных администраторов на хосте COMP для будущих запросов.

Установка neo4j

Перед использованием BloodHound необходимо подготовить рабочую станцию (в нашем случае это будет компьютер с именем COMP): установить OpenJDK и neo4j.

Установка OpenJDK

База данных neo4j написана на языке Java, и для ее работы требуется OpenJDK. Для версии neo4j 4.4.11, которая будет использоваться на протяжении всей книги, необходимо установить OpenJDK 11. Существует два варианта установки: вручную, где потребуется прописывать все пути самостоятельно, и с помощью winget.

Внимание

Если использовать другие версии 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 необходимо установить App Installer из магазина, а в Windows 11 winget установлен по умолчанию. Запустите консоль с правами администратора и выполните команду:

winget install ojdkbuild.openjdk.11.jdk

После установки все пути будут добавлены автоматически.

Установка neo4j

Скачать neo4j можно с официального сайта разработчика6, для изучения будем использовать бесплатную версию Community Edition. На момент подготовки книги к печати использовалась версия 4.4.11.

Внимание

Бесплатная версия neo4j позволяет создавать только одну базу. Для работы над проектом этого достаточно.

Распаковываем архив с neo4j в удобную директорию, я обычно использую C: \Tools\Neo4j\ (для удобства будем называть эту директорию $NEO4J_HOME), затем запускаем командную строку или powershell с правами администратора (потребуется для установки службы) и выполняем следующую команду:

c: \Tools\Neo4j\bin\neo4j.bat console

Если никаких ошибок не возникнет, то можно увидеть информацию об успешном запуске, как показано ниже.


Рис. 1.10. Первый запуск neo4j


Остановить neo4j можно сочетанием клавиш CTRL + z.

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

C: \Tools\Neo4j\bin\neo4j.bat install-service

C: \Tools\Neo4j\bin\neo4j.bat start

Первая команда установит службу, а вторая ее запустит.


Рис. 1.11. Создание и запуск службы


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

c: \Tools\Neo4j\bin\neo4j.bat status


Рис. 1.12. Проверка статуса


Смена пароля

После успешного запуска neo4j требует сменить пароль, установленный по умолчанию. Для этого запускаем браузер, переходим по адресу http://localhost:7474 и вводим логин neo4j и пароль neo4j.


Рис. 1.13. Первый запуск браузера neo4j


Выполнив первую аутентификацию, neo4j попросит сменить пароль для пользователя neo4j.


Рис. 1.14. Форма смены пароля


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

Установка BloodHound

Для установки BloodHound не требуется сложных действий. Скачаем необходимую версию (на момент подготовки книги к печати 4.3.1) с официального GitHub7.

Внимание

Более новая версия BloodHound может потребовать новую версию neo4j.

Разархивируем загруженный архив, перейдем в директорию с полученными из архива файлами и запустим bloodhound.exe. После запуска приложения появится приглашение для ввода пароля.


Рис. 1.15. Форма аутентификации BloodHound


Можно установить флаг Save Password, чтобы не вводить пароль каждый раз.

02. Знакомство с SharpHound, BloodHound и neo4j

Как говорилось ранее, утилита BloodHound состоит из трех частей: непосредственно сама BloodHound, сборщик данных SharpHound и база данных neo4j. В этой части книги мы рассмотрим интерфейсы этих приложений.

Bepul matn qismi tugad.

Yosh cheklamasi:
16+
Litresda chiqarilgan sana:
31 yanvar 2025
Yozilgan sana:
2024
Hajm:
298 Sahifa 214 illyustratsiayalar
ISBN:
9785206004519
Matbaachilar:
Mualliflik huquqi egasi:
Альпина Диджитал
Yuklab olish formati:
Matn
O'rtacha reyting 5, 2 ta baholash asosida