
Un script de PowerShell para ayudar a encontrar configuraciones vulnerables en la Directiva de Grupo de AD. (obsoleto, ¡use Grouper2 en su lugar!)
NO USES MÁS GROUPER. ¡USA GROUPER2! https://github.com/l0ss/Grouper2
Un script de PowerShell para ayudar a encontrar configuraciones vulnerables en la Directiva de Grupo de Active Directory.

Grouper es un módulo de PowerShell diseñado para pentesters y redteamers (aunque probablemente también útil para administradores de sistemas) que examina el (normalmente muy ruidoso) resultado XML del cmdlet Get-GPOReport (parte del módulo de Directiva de Grupo de Microsoft) e identifica todas las configuraciones definidas en Objetos de Directiva de Grupo (GPO) que podrían resultar útiles para alguien que intente hacer algo divertido/maligno.
Ejemplos del tipo de cosas que encuentra en las GPO:
Sí, es bastante tosco, pero me ahorra una enorme cantidad de tiempo leyendo esos horribles informes HTML de GPO de 150MB, y si funciona para mí, puede que funcione para ti.
Nota: Aunque algunos nombres de funciones puedan incluir la palabra auditoría, Groper NO pretende ser una auditoría exhaustiva de configuraciones de mejores prácticas, etc. Si quieres eso, deberías usar Microsoft SCT y LGPO.exe o algo similar.
Genera un informe de GPO en una máquina Windows con los cmdlets de Directiva de Grupo instalados. Estos están instalados por defecto en los Controladores de Dominio, se pueden instalar en clientes Windows usando RSAT, o se pueden habilitar mediante el asistente "Agregar característica" en servidores Windows.
Get-GPOReport -All -ReportType xml -Path C:\temp\gporeport.xml
Importa el módulo Grouper.
Import-Module .\grouper.psm1
Ejecuta Grouper.
Invoke-AuditGPOReport -Path C:\temp\gporeport.xml
También hay un par de parámetros que puedes modificar y que alteran qué configuraciones de directiva te mostrará Grouper:
-showDisabled
Por defecto, Grouper solo te mostrará las GPO que están actualmente habilitadas y vinculadas a una OU en AD. Esto cambia ese comportamiento.
-Online
Por defecto, Grouper solo trabaja con el resultado XML real de Get-GPOReport, y no realiza comunicaciones de red en absoluto, lo que lo hace bastante "seguro para opsec", aunque odio ese término.
Si lo invocas con -Online, Grouper activará comprobaciones que requieren hablar (al menos) con el dominio de AD desde el cual se generó el informe, pero también implicará probablemente hablar con servidores de archivos, por ejemplo. Esto permitirá a Grouper hacer cosas útiles como informar sobre las ACL de los archivos objetivo de las GPO y comprobar si, por ejemplo, el usuario actual puede escribir en el archivo en cuestión.
-Level
Grouper tiene 3 niveles de filtrado que puedes aplicar a su salida.
El uso es sencillo. -Level 3, -Level 2, etc.
Get-GPOReport funciona perfectamente en máquinas no unidas al dominio mediante runas /netonly. Necesitarás algunas credenciales de bajo privilegio, pero eso es de esperar.
Haz esto:
runas /netonly /user:dominio\usuario powershell.exe
en una máquina no unida al dominio que pueda comunicarse con un controlador de dominio.
Luego, en la sesión de PowerShell resultante, haz esto:
Get-GpoReport -Domain example.com -All -ReportType xml -Path C:\temp\gporeport.xml
Fácil.
Todo lo que necesita Grouper para funcionar es PowerShell 2.0 y el archivo xml de salida de Get-GPOReport. Puedes ejecutarlo en una VM sin tarjeta de red si estás preocupado y seguirá funcionando bien.
Dicho esto, es código bastante básico, así que no debería ser difícil ver que no está haciendo nada remotamente sospechoso.
Respuesta corta: Sí.
Respuesta larga: Sí, hacer una de esas cosas sería mejor, pero hay un par de cosas que me impidieron hacerlas TODAVÍA.
Idealmente, me gustaría analizar los archivos de directiva directamente desde SYSVOL, pero se almacenan en varios formatos de archivo diferentes, algunos son propietarios, son realmente difíciles de leer, y no tengo ni el tiempo ni la inclinación para escribir un montón de analizadores desde cero cuando Microsoft ya proporciona cmdlets que hacen el trabajo muy bien.
En un futuro no muy lejano, me gustaría integrar Get-GPOReport de Microsoft en Grouper, para que no necesites RSAT en absoluto, pero necesito averiguar si eso será algún tipo de violación de derechos de autor. También necesito descubrir cómo hacer eso que acabo de decir.
Grouper no es un escáner de vulnerabilidades. Grouper simplemente filtra la enorme cantidad de paja y ruido en los informes de Directiva de Grupo para mostrarte solo las configuraciones de directiva que PODRÍAN estar configuradas de formas explotables.
En la medida de lo posible, estoy trabajando en cada una de las categorías de comprobaciones para agregar filtrado adicional que elimine configuraciones obviamente no vulnerables y reduzca aún más los niveles de ruido, pero la Directiva de Grupo es extremadamente flexible y es bastante difícil anticipar cada posible error que un administrador pueda cometer.
Genial, acabas de encontrar una manera de mejorar Grouper. Desplázate hacia abajo y verás donde he proporcionado una pequeña guía para agregar nuevas comprobaciones a Grouper.