Обзор фреймворка BloodHound для аудита рисков в Active Directory

Рассматриваемый в данной статье инструмент представляет интерес как для сотрудников ИБ, изучающих риски в инфраструктуре Active Directory, так и для атакующих, поскольку даёт наглядное графовое представление связей и сущностей в Active Directory. Инструмент позволяет быстро найти всех доменных администраторов; найти все хосты, на которых залогинены доменные администраторы; выстроить цепочку от компьютера атакующего до компьютера на котором есть сессия доменного администратора и много другой полезной информации. BloodHound представляет собой одностраничное Javascript веб приложение. Для сбора данных используется сценарий PowerShell PowerView. Приступим к установке.

Фреймворк развивается довольно активно и вся актуальная информация доступна на странице проекта https://github.com/BloodHoundAD/Bloodhound/wiki. Установка возможна на Windows, Linux, OSX. Краткие руководства доступны на странице: https://github.com/BloodHoundAD/BloodHound/wiki/Getting-started. Здесь мы рассмотрим вариант установки всех необходимых для работы компонент на Windows.

Java

Для начала работы на компьютере должна быть установлена актуальная версия Java: https://java.com/ru/download/. Для 64-битной ОС нужна 64-битная Java:
https://www.java.com/ru/download/manual.jsp:

Причём, если будут стоять обе и 32 и 64, то при установке субд Neo4j 64 битной версии сервис не запустится, похоже, что Path от 32 битной версии Java мешается.

BloodHound

Скачиваем файлы проекта с Github https://github.com/BloodHoundAD/BloodHound:

Извлекаем содержимое архива в удобную папку, например в C:\BloodHound

СУБД Neo4j

Neo4j — графовая СУБД с открытым исходным кодом, реализованная на Java.

Системные требования https://neo4j.com/docs/operations-manual/current/installation/requirements/

Скачиваем дистрибутив https://neo4j.com/download/other-releases/#releases
Я взял последний Community релиз для Windows 64-bit:

Распаковываем содержимое архива в ту же папку, куда извлекли исходники BloodHound:

Варианты установки описаны здесь https://neo4j.com/docs/operations-manual/current/installation/windows/

Теперь, когда все исходные файлы подготовлены, приступаем к установке. Для этого открываем cmd с повышением привилегий и запускаем сценарий установки neo4j.bat из директории bin:

Сценарий запускаем с ключом install-service, чтобы установить СУБД как Windows службу:

Запускаем службу Neo4j:

Проверяем работу сервиса. Открываем в браузере URL http://localhost:7474/browser/. Должна открыться страница с запросом на подключение к БД:

Создание базы данных

Для начала необходимо остановить сервис Neo4j:

Создаём базу данных:

Из папки BloodHound-master копируем образец базы данных (папка BloodHoundExampleDB.graphdb) в папку neo4j-community-3.3.4\data\databases:

Изменяем конфигурационный файл neo4j.conf, нацеливая СУБД на созданную базу:
В моём случае он лежит здесь C:\BloodHound\neo4j-community-3.3.4\conf

В разделе # The name of the database to mount изменяем строку

#dbms.active_database=graph.db на созданную базу dbms.active_database=BloodHoundExampleDB.graphdb и снимаем комментарий.

В разделе # Enable this to be able to upgrade a store from an older version. снимаем комментарий с параметра dbms.allow_upgrade=true

Сохраняем файл, запускаем Neo4j:

Открываем в браузере url http://localhost:7474/browser/ и подключаемся к СУБД со следующими параметрами:
Host: bolt://localhost:7687
Username: neo4j
Password: neo4j
Система предложит изменить пароль. Меняем его на свой.

Запускаем BloodHound.exe из релиза https://github.com/BloodHoundAD/BloodHound/releases.

В графическом интерфейсе указываем:
Database URL: bolt://localhost:7687
DB Username: neo4j
DB Password: тот, который установили

Система отобразит данные, которые были загружены в БД для примера:

Сбор данных

Для работы BloodHound требуется три набора данных из Active Directory:
1. Кто и где залогинен
2. Кто имеет административные права и где
3. Какие пользователи и группы в какие группы входят
Для сбора этих данных в большинстве случаев не требуется какой-либо привилегированный доступ или выполнение кода на удалённых системах. Сбор данных может быть  проводится с помощью PowerShell сценария PowerView, либо с помощью утилиты SharpHound.exe, которая находится в папке Ingestors. Я рассмотрю вариант сбора данных с помощью SharpHound.exe.

В моём примере SharpHound.exe находится в папке C:\BloodHound\BloodHound-master\Ingestors:

Собранные данные сохраняются в CSV файлы в эту же папку.
Документация по работе с утилитой здесь: https://github.com/BloodHoundAD/SharpHound

Для работы требуется .Net 3.5. Запускаться должна из контекста доменного пользователя.
При запуске без параметров выполняется сбор членов групп AD, доверительных отношений, локальных администраторов и текущих сессий.
Результат работы выводится в CMD:

В результате работы имеем 4 CSV файла в папке ingestors:

Файл BloodHound.bin — файл кэша, который нам дальше не понадобится.

Импорт данных в базу данных

Запускаем BloodHound.exe и подключаемся к базе данных.

Данные, которые были загружены для примера можно удалить, нажав кнопку Clear Database:

Затем загружаем полученные CSV файлы в чистую базу данных. Для этого в меню инструментов справа нажимаем кнопку Upload Data:

На этом загрузка данных завершена и можно приступать к анализу полученной информации.

Анализ полученных данных

BloodHound имеет 10 встроенных запросов:
Find all Domain Admins
Find Shortest Paths to Domain Admins
Find logged in admins
Find Top 10 Users with Most Sessions
Find Top 10 Computers with Most Sessions
Find Top 10 Users with Most Local Admin Rights
Find Top 10 Computers with Most Admins
Users with Foreign Domain Group Membership
Groups with Foreign Domain Group Membership
Map Domain Trusts

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

Find all Domain Admins:

Find Shortest Paths to Domain Admins:

Find logged in admins:

Find Top 10 Users with Most Sessions:

Find Top 10 Computers with Most Sessions:

Find Top 10 Users with Most Local Admin Rights:

Find Top 10 Computers with Most Admins:

Users with Foreign Domain Group Membership:

Map Domain Trusts:

Полученные графы можно экспортировать как картинки или в JSON.

Добавить комментарий