Идём по киберследу: Анализ защищенности Active Directory c помощью утилиты BloodHound — страница 2 из 46

# Добавить пользователя admin в группу доменных администраторов

Add-ADGroupMember -Identity "Domain Admins" -Members admin

Совет

Для наполнения домена можно воспользоваться скриптом BadBlood[4], но не стоит для первых экспериментов создавать большое количество объектов. Работать с хостом

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) с официального GitHub[7].

Внимание

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

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

bloodhound.exe
. После запуска приложения появится приглашение для ввода пароля.


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


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

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. Узлы можно перемещать по полю. Само поле, узлы и связи имеют контекстное меню, которое можно вызвать правой клавишей мыши.