
Инструмент Pwsh для аудита перечисления групп AD
Обнаруживайте разведку в Active Directory до того, как она превратится в нарушение.
QuietPhase — это инструмент PowerShell, который проверяет, настроен ли ваш домен для обнаружения перечисления групп — тихой фазы разведки, в ходе которой злоумышленник составляет карту того, кто обладает привилегированным доступом. Он проверяет политику аудита контроллеров домена, сообщает, какие привилегированные и пользовательские группы аудируются на предмет чтения членства, и предлагает (или, если вы выберете, применяет) исправления.
Большинство организаций подают оповещения, когда кто-то изменяет привилегированную группу. Очень немногие замечают, когда кто-то читает её. QuietPhase помогает закрыть этот пробел и упрощает настройку honeypot-групп, которые превращают перечисление в оповещение с высокой степенью достоверности.
Дополнительное чтение: The Quiet Phase: Why Active Directory Group Enumeration Deserves Your Attention
adminCount=1) сбрасываются SDProp, поэтому AdminSDHolder также проверяется и исправляется.Out-ConsoleGridView). Используйте его для honeypot-групп или любых других групп, которые хотите отслеживать.-Apply, и каждое из них подтверждается. Поддерживается -WhatIf.-FixScriptPath записывает все предлагаемые изменения в проверяемый файл .ps1, подходящий для процедуры управления изменениями.Контроллер домена регистрирует событие перечисления групп только при одновременном наличии обоих условий:
member со стороны Everyone или Authenticated Users.Когда оба условия выполнены, каждое чтение членства создаёт событие 4662 на контроллере домена, обработавшем запрос. Ключевые поля:
| Поле | Значение | Значение |
|---|---|---|
ObjectName | %{<objectGUID of the group>} | Какая группа была прочитана |
Properties | {bf9679c0-0de6-11d0-a285-00aa003049e2} | Атрибут member |
Properties | {bc0ac240-79a9-11d0-9020-00c04fc2d4cf} | Набор свойств членства (часто вместе с предыдущим) |
AccessMask | 0x10 | Read Property |
SubjectUserName / SubjectUserSid | Учётная запись | Кто выполнил чтение |
SubjectLogonId | например, 0x3A7F21 | Связь с событием 4624 (TargetLogonId) для получения IP-адреса источника и рабочей станции |
Примечание: Инструменты на основе SAMR, такие как
net group /domain, не вызывают этот сигнал 4662. Покройте этот путь с помощью журналирования создания процессов (событие 4688 / Sysmon / EDR) или сетевых средств обнаружения, таких как Microsoft Defender for Identity.
Out-ConsoleGridView, часть модуля Microsoft.PowerShell.ConsoleHost, который является зависимостью Microsoft.PowerShell.ConsoleGuiTools. Устанавливается в области CurrentUser.# Report only (default): check the discovered DC, privileged groups, then pick custom groups
.\QuietPhase.ps1
# Check audit policy on every DC in the domain
.\QuietPhase.ps1 -AllDomainControllers
# Export proposed fixes for review or change approval
.\QuietPhase.ps1 -AllDomainControllers -FixScriptPath .\QuietPhase-Fix.ps1
# Preview changes, then apply them (each change is confirmed)
.\QuietPhase.ps1 -Apply -WhatIf
.\QuietPhase.ps1 -Apply
# Propose rules for Authenticated Users instead of Everyone
.\QuietPhase.ps1 -Apply -AuditPrincipal AuthenticatedUsers
| Параметр | По умолчанию | Описание |
|---|---|---|
-Server | Обнаруженный DC | DC или домен, на который нужно нацелиться |
-AllDomainControllers | Выкл. | Проверять политику аудита на каждом DC, а не только на целевом |
-AuditPrincipal | Everyone | Субъект, используемый для предлагаемых правил: Everyone или AuthenticatedUsers. Любой из них считается настроенным при проверке. |
-Apply | Выкл. | Применить предлагаемые изменения с запросом подтверждения для каждого |
-SkipCustomGroups | Выкл. | Пропустить фазу 3 (выбор пользовательских групп) |
-FixScriptPath | Нет | Экспортировать все предлагаемые исправления в файл .ps1 |
-WhatIf / -Confirm | Стандартные | Предварительный просмотр изменений или управление запросами при использовании с -Apply |
auditpol для исправления, после чего останавливается. SACL групп бесполезны, пока это не настроено.Когда что-либо требует изменений, запуск завершается блоком NEXT STEPS с готовыми к вставке командами для -Apply, -WhatIf, -FixScriptPath или ручных шагов в ADUC.
==============================================================================
PHASE 1 - Domain controller audit policy
==============================================================================
Domain: contoso.com Target DC: DC01.contoso.com DCs checked: 1
DC01.contoso.com
Audit Directory Service Access: Success
Audit Security Group Management: Success
Force audit policy subcategory settings: enabled (or default)
PHASE 1 PASSED: Directory Service Access auditing is enabled.
==============================================================================
PHASE 2 - Well-known privileged groups
==============================================================================