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