
Herramienta Pwsh para la auditoría de enumeración de grupos de AD
Detecta el reconocimiento de Active Directory antes de que se convierta en una brecha.
QuietPhase es una herramienta de PowerShell que comprueba si tu dominio está configurado para detectar la enumeración de grupos, la fase de reconocimiento silenciosa en la que un atacante mapea quién posee acceso privilegiado. Verifica la política de auditoría de los controladores de dominio, informa qué grupos privilegiados y personalizados están auditados para lecturas de pertenencia y propone (o, si lo eliges, aplica) las correcciones.
La mayoría de las organizaciones alertan cuando alguien cambia un grupo privilegiado. Muy pocas se dan cuenta cuando alguien lee uno. QuietPhase ayuda a cerrar esa brecha y facilita la configuración de grupos honeypot que convierten la enumeración en una alerta de alta confianza.
Lectura de contexto: The Quiet Phase: Why Active Directory Group Enumeration Deserves Your Attention
adminCount=1) son restablecidos por SDProp, por lo que también se comprueba y corrige AdminSDHolder.Out-ConsoleGridView). Úsalo para grupos honeypot o cualquier otra cosa que quieras vigilar.-Apply, y cada uno se confirma. Se admite -WhatIf.-FixScriptPath escribe todos los cambios propuestos en un archivo .ps1 revisable, apto para el control de cambios.Un controlador de dominio registra un evento de enumeración de grupos solo cuando ambas condiciones están presentes:
member por parte de Everyone o Authenticated Users.Cuando ambas son ciertas, cada lectura de pertenencia genera el evento 4662 en el DC que respondió a la consulta. Campos clave:
| Campo | Valor | Significado |
|---|---|---|
ObjectName | %{<objectGUID of the group>} | Qué grupo fue leído |
Properties | {bf9679c0-0de6-11d0-a285-00aa003049e2} | El atributo member |
Properties | {bc0ac240-79a9-11d0-9020-00c04fc2d4cf} | Conjunto de propiedades de pertenencia (a menudo junto al anterior) |
AccessMask | 0x10 | Read Property |
SubjectUserName / SubjectUserSid | Cuenta | Quién realizó la lectura |
SubjectLogonId | p. ej. 0x3A7F21 | Unir con el evento 4624 (TargetLogonId) para obtener la IP de origen y la estación de trabajo |
Nota: Las herramientas basadas en SAMR, como
net group /domain, no activan esta señal 4662. Cubre esa vía con el registro de creación de procesos (evento 4688 / Sysmon / EDR) o con detecciones de red como Microsoft Defender for Identity.
Out-ConsoleGridView, que forma parte del módulo Microsoft.PowerShell.ConsoleHost, el cual es una dependencia de Microsoft.PowerShell.ConsoleGuiTools. Instalado en el ámbito 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
| Parámetro | Predeterminado | Descripción |
|---|---|---|
-Server | DC descubierto | DC o dominio de destino |
-AllDomainControllers | Desactivado | Comprobar la política de auditoría en todos los DC, no solo en el de destino |
-AuditPrincipal | Everyone | Principal usado para las reglas propuestas: Everyone o AuthenticatedUsers. Cualquiera de los dos cuenta como configurado al comprobar. |
-Apply | Desactivado | Aplicar los cambios propuestos, con un aviso de confirmación para cada uno |
-SkipCustomGroups | Desactivado | Omitir la fase 3 (selección de grupos personalizados) |
-FixScriptPath | Ninguno | Exportar toda la remediación propuesta a un archivo .ps1 |
-WhatIf / -Confirm | Estándar | Previsualizar cambios o controlar los avisos cuando se usa con -Apply |
auditpol para corregirlo, y luego se detiene. Las SACL de grupo no sirven de nada hasta que esto esté en su lugar.Cuando algo necesita cambios, la ejecución termina con un bloque NEXT STEPS de comandos listos para pegar para -Apply, -WhatIf, -FixScriptPath o pasos manuales en 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
==============================================================================