
GPOHound — Updated!
Офензивный инструмент для извлечения и анализа GPO, который использует и обогащает данные BloodHound
GPOHound
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 связями и свойствами
Установка
Установка с помощью pip
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
Установка с помощью pipx
pipx install "git+https://github.com/cogiceo/GPOHound"
Настройка APOC для Neo4j
Необходимо настроить 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.
Добавление запросов BloodHound
Чтобы визуализировать связи и свойства, добавленные GPOHound, вы можете импортировать пользовательские запросы из файла customqueries.json в BloodHound. По умолчанию этот файл находится по пути ~/.config/bloodhound/customqueries.json.
Предварительные требования
Дамп SYSVOL
Начните с загрузки содержимого 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
Получите все необходимые данные из LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
BloodHound
Для обогащения данных 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 -
Обнаружение любых доверенных лиц, добавленных в привилегированные локальные группы:
Группа Ребро Administrators AdminToRemote Desktop Users CanRDPDistributed COM Users ExecuteDCOMRemote Management Users CanPSRemoteBackup Operators CanPrivEscPrint Operators CanPrivEscNetwork 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 | — |
Привилегии
По умолчанию привилегированные доверенные лица, а также служебные учетные записи с SID, начинающимися с S-1-5-8, исключаются из анализа.
| Привилегия | Описание | Ребро |
|---|---|---|
| SeDebugPrivilege | Позволяет пользователю отлаживать и взаимодействовать с любым процессом | CanPrivEsc |
| SeBackupPrivilege | Предоставляет доступ к конфиденциальным файлам | CanPrivEsc |
| SeRestorePrivilege | Обходит разрешения объектов во время восстановления | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Включает олицетворение токена для повышения до SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | Позволяет создавать процесс в контексте другого пользователя | CanPrivEsc |
| SeTakeOwnershipPrivilege | Позволяет пользователям забирать права собственности на системные объекты | CanPrivEsc |
| SeTcbPrivilege | Предоставляет возможность действовать как часть ОС | CanPrivEsc |
| SeCreateTokenPrivilege | Разрешает создание токенов аутентификации | CanPrivEsc |
| SeLoadDriverPrivilege | Разрешает загрузку/выгрузку драйверов | CanPrivEsc |
| SeManageVolumePrivilege | Предоставляет привилегии управления томами или дисками | CanPrivEsc |
| SeEnableDelegationPrivilege | Включает возможность доверия делегированию для учётных записей компьютеров и пользователей |
Улучшения
- Улучшить журналирование
- Интегрировать LDAP
- Интегрировать SMB
- Разобрать оставшиеся расширения
- Веб-интерфейс
- Подсветить возможные конфликты между GPO
Документация GPO
SYSVOL и LDAP
- [MS-GPAC] Расширение конфигурации аудита
- [MS-GPCAP] Расширение протокола политик централизованного доступа
- [MS-GPEF] Расширение шифрованной файловой системы
- [MS-GPFAS] Структура данных брандмауэра и расширенной безопасности
- [MS-GPFR] Расширение протокола перенаправления папок
- [MS-GPIE] Расширение обслуживания Internet Explorer
- [MS-GPNAP] Расширение защиты сетевого доступа (NAP)
- [MS-GPNRPT] Расширение данных таблицы политики разрешения имён (NRPT)
- [MS-GPOL] Базовый протокол
- [MS-GPPREF] Структура данных расширения предпочтений
- [MS-GPREG] Кодировка расширения реестра
- [MS-GPSB] Расширение протокола безопасности
- [MS-GPSCR] Кодировка расширения сценариев
- [MS-GPSI] Расширение протокола установки программного обеспечения
Только LDAP
- [MS-GPDPC] Расширение развёрнутых подключений принтеров
- [MS-GPWL] Расширение протокола беспроводной/проводной сети