Идём по киберследу (страница 2)

Страница 2

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

Форма поиска

Рис. 2.4. Форма поиска

Форма поиска состоит из следующих элементов:

● Дополнительная информация (More Info)

● Поле поиска узлов

● Поиск путей (Pathfinding)

● Возврат (Back)

● Фильтрация типов связей (Filter Edge Types)

Дополнительная информация (More Info)

Этот объект является основным полем для получения информации о свойствах и некоторых связях узлов. При нажатии на кнопку More Info выпадает поле, состоящее из трех элементов.

Рис. 2.5. Вкладка «Дополнительная информация»

Database Info

Вкладка содержит статистические данные по количеству объектов в базе данных, а также некоторые инструменты для работы с базой данных (рис. 2.6).

Рис. 2.6. Статистика по узлам и связям

Ниже статистики находятся элементы для управления данными.

Рис. 2.7. Управление данными

Кратко рассмотрим эти элементы и их функционал:

● Refresh Database Stats – после загрузки данных или добавления информации через запросы Cypher статистика может быть неверной, эта кнопка обновляет статистические данные.

● Warm Up Database – по описанию от разработчиков, при нажатии этой кнопки данные из базы переносятся в оперативную память, что позволяет увеличить скорость работы с ними.

● Clear Sessions – при нажатии этой кнопки удаляются все связи HasSession. Эта функция бывает полезной перед загрузкой новых данных о сессиях пользователей.

● Clear Database – при нажатии этой кнопки удаляются все узлы и связи между ними.

Замечание

Интересно, что при очистке базы данных в браузере neo4j остаются ссылки на свойства объектов и названия связей.

Информация об узле (Node Info)

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

Рис. 2.8. Информация об узле

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

Рис. 2.9. Информация о группах и правах

Очень полезна информация о входящих и исходящих правах (ACL) на другие объекты, которые могут быть использованы во время работ.

Рис. 2.10. Входящие и исходящие ACL

Анализ (Analysis)

Вкладка Анализ (Analysis) содержит встроенные в BloodHound полезные запросы, с которых можно начать исследовать инфраструктуру Active Directory (рис. 2.11).

Рис. 2.11. Список встроенных запросов

Информация

Встроенные запросы находятся в файле PrebuildQueries.json в директории src\components\SearchContainer\Tabs.

Ниже находится раздел для добавления собственных Cypher-запросов, который содержит форму для их создания, а также список созданных запросов, разделенный по категориям.

Рис. 2.12. Раздел создания собственных запросов

При нажатии на кнопку в виде карандаша появляется форма для добавления запросов (рис. 2.13).

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

Информация

Файл customqueries.json с собственными запросами находится в домашней директории пользователя, запустившего BloodHound, с путем \AppData\Roaming\bloodhound\.

Рис. 2.13. Форма добавления собственных запросов

Информация

При вызове формы добавления собственных графов файл создается автоматически, если он еще не создан.

Мы еще вернемся к созданию собственных запросов.

Поле поиска

Следующий элемент – форма поиска узлов. Если начинать вводить буквы, BloodHound предлагает различные варианты. Также форма поиска показывает различные типы меток – они дают возможность видеть, к какому типу принадлежит узел. Функция полезна для поиска узлов по ключевым словам.

Внимание

По умолчанию поиск по ключевому слову ограничивается 10 узлами. Изменить количество узлов можно в Raw Query, если в настройках включен Query Debug Mode.

Кроме имени для поиска можно использовать свойство objectid.

Форма Поиск путей (Pathfinding)

Функция позволяет строить короткие пути. При нажатии на иконку появляется еще одна форма поиска, в первой строке указывается начальный узел, во второй – конечный (рис. 2.14).

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

Рис. 2.14. Форма поиска путей

Информация

BloodHound создает Cypher-запрос со всеми связями, указанными в файле AppContainer.jsx, и с учетом фильтра связей.

Возврат (Back)

Кнопка в виде стрелки влево возвращает предыдущий граф, но без возврата самого запроса в Raw Query.

Фильтр связей (Filter Edge Types)

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

Рис. 2.15. Фильтр связей

Внимание

Фильтр работает только с функцией Поиск путей (Pathfinding).

Меню

Меню состоит из следующих элементов:

● Обновление графа (Refresh)

● Экспорт графа (Export Graph)

● Импорт графа (Import Graph)

● Загрузка данных

● Статус загрузки (View Upload Status)

● Изменение отображения графа (Change Layout Type)

● Настройки

● Информация о программе (About)

[6] https://neo4j.com/.