
Офензивный инструмент для извлечения и анализа GPO, который использует и обогащает данные BloodHound
GPOHound — это инструмент для дампа и анализа объектов групповой политики (GPO), извлечённых из общей папки SYSVOL.
Он предоставляет структурированный, формализованный формат для выявления неверных конфигураций, небезопасных настроек и путей повышения привилегий в средах Active Directory.
Инструмент интегрируется с базой данных Neo4j BloodHound, используя её как LDAP-подобный источник информации об Active Directory, а также обогащая её путём добавления новых связей (рёбер) и свойств узлов на основе анализа.
Выполняет дамп GPO в структурированном формате JSON или дерева
Работает с несколькими доменами
Разрешает имена GPO по GUID GPO
Фильтрует вывод по файлам GPO, GUID GPO и доменам
Выполняет поиск по парам ключ/значение с использованием регулярных выражений
Группирует настройки по затронутому объекту (например, локальные группы, реестр)
Обнаруживает добавление участников в привилегированные локальные группы
Обнаруживает небезопасные настройки реестра, сохранённые учётные данные и привилегии
Поддерживает расшифровку учётных данных VNC и паролей GPP
Находит домены, контейнеры и OU, затронутые GPO
Получает GPO, применённые к конкретному пользователю, компьютеру, OU, контейнеру или домену
Обогащает данные BloodHound связями и свойствами
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
pipx install "git+https://github.com/cogiceo/GPOHound"
Необходимо настроить Neo4j APOC для обогащения данных BloodHound:
Если вы используете стандартную установку Neo4j, вы можете включить APOC, скопировав JAR-файл APOC в папку плагинов и перезапустив Neo4j:
cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
neo4j restart
Если вы устанавливаете Neo4j с помощью "Docker Compose", добавьте переменную окружения NEO4J_PLUGINS=["apoc"]:
neo4j:
image: neo4j:latest
environment:
- NEO4J_PLUGINS=["apoc"]
Для получения более подробной информации или альтернативных способов установки обратитесь к официальной документации APOC.
Чтобы визуализировать связи и свойства, добавленные GPOHound, вы можете импортировать пользовательские запросы из файла customqueries.json в BloodHound. По умолчанию этот файл находится по пути ~/.config/bloodhound/customqueries.json.
Начните с загрузки содержимого SYSVOL с контроллера домена.
Загрузка полного SYSVOL:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
Загрузка только GPO:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
Загрузка с исключениями:
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
Получите все необходимые данные из LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
Для обогащения данных BloodHound необходимо собрать данные BloodHound с помощью такого сборщика, как bloodhound.py или SharpHound.exe, и импортировать собранные данные в интерфейс BloodHound.
Примеры файлов GPOHound доступны в example.zip. Распакуйте их с помощью unzip example.zip.
Инструкции по настройке значений по умолчанию и конфигурации см. в CONFIG.md.
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
[!IMPORTANT]
- Условия, такие как фильтры безопасности, WMI-фильтры и таргетинг на уровне элементов, не интерпретируются.
- Конфликты GPO не моделируются, чтобы не пропустить корректные настройки.
Обнаружение пользователей, назначенных в привилегированные локальные группы во время входа в систему
Обнаружение переименованных встроенных привилегированных локальных групп.
Обнаружение доверенных лиц, добавленных в привилегированные локальные группы с помощью "Переменных процесса предпочтений" (например, %ComputerName%, %DomainName%)
Обнаружение потенциально опасных доверенных лиц с использованием перехвата sAMAccountName
Обнаружение любых доверенных лиц, добавленных в привилегированные локальные группы:
По умолчанию привилегированные доверенные лица, а также служебные учетные записи с SID, начинающимися с S-1-5-8, исключаются из анализа.
| Группа | Ребро |
|---|
| Administrators | AdminTo |
| Remote Desktop Users | CanRDP |
| Distributed COM Users | ExecuteDCOM |
| Remote Management Users | CanPSRemote |
| Backup Operators | CanPrivEsc |
| Print Operators | CanPrivEsc |
| Network Configuration Operators | CanPrivEsc |
| Анализ | Свойство |
|---|
| Группа "Все" включает "Анонимный вход" | — |
| Подпись сеанса сервера SMB не включена | smbSigningEnabled: false |
| Подпись сеанса сервера SMB не требуется | smbSigningRequired: false |
| Поддерживается аутентификация NTLMv1 | NTLMv1Support: true |
| Пароль по умолчанию для автоматического входа Windows | — |
| Учётные данные VNC (Generic: RealVNC, TightVNC, TigerVNC и т.д.) | *VNC*PASS* (различные) |
| Сохранённые пароли FileZilla | — |
| Прокси-пароль PuTTY | — |
| Сохранённые учётные данные TeamViewer | — |
| Сохранённые сеансы WinSCP | — |
| Сохранённый пароль Picasa | — |
| Привилегия | Описание | Ребро |
|---|
| SeDebugPrivilege | Позволяет пользователю отлаживать и взаимодействовать с любым процессом | CanPrivEsc |
| SeBackupPrivilege | Предоставляет доступ к конфиденциальным файлам | CanPrivEsc |
| SeRestorePrivilege | Обходит разрешения объектов во время восстановления | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Включает олицетворение токена для повышения до SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | Позволяет создавать процесс в контексте другого пользователя | CanPrivEsc |
| SeTakeOwnershipPrivilege | Позволяет пользователям забирать права собственности на системные объекты | CanPrivEsc |
| SeTcbPrivilege | Предоставляет возможность действовать как часть ОС | CanPrivEsc |
| SeCreateTokenPrivilege | Разрешает создание токенов аутентификации | CanPrivEsc |
| SeLoadDriverPrivilege | Разрешает загрузку/выгрузку драйверов | CanPrivEsc |
| SeManageVolumePrivilege | Предоставляет привилегии управления томами или дисками | CanPrivEsc |
| SeEnableDelegationPrivilege | Включает возможность доверия делегированию для учётных записей компьютеров и пользователей |