Saltar a contenido

Examining Group Policy

La Group Policy es una característica de Windows que proporciona a los administradores una amplia gama de configuraciones avanzadas que se pueden aplicar tanto a cuentas de usuario como de computadora en un entorno Windows. Cada host de Windows tiene un editor de Local Group Policy para gestionar configuraciones locales. Para nuestros propósitos, nos centraremos en la Group Policy en un contexto de dominio para gestionar usuarios y computadoras en Active Directory. Group Policy es una herramienta poderosa para gestionar y configurar configuraciones de usuario, sistemas operativos y aplicaciones. También es una herramienta potente para gestionar la seguridad en un entorno de dominio. Desde un contexto de seguridad, aprovechar la Group Policy es una de las mejores maneras de influir ampliamente en la postura de seguridad de tu empresa. Active Directory no es seguro "out of the box", y Group Policy, cuando se usa adecuadamente, es una parte crucial de una estrategia de defensa en profundidad.

Aunque Group Policy es una excelente herramienta para gestionar la seguridad de un dominio, también puede ser abusada por atacantes. Obtener derechos sobre un Group Policy Object podría llevar a movimientos laterales, escalada de privilegios e incluso a la completa toma de control del dominio si el atacante puede aprovecharlos para tomar control de un usuario o computadora de alto valor. También pueden ser utilizados por un atacante para mantener persistencia dentro de una red. Comprender cómo funciona Group Policy nos dará una ventaja contra los atacantes y puede ayudarnos enormemente en pruebas de penetración, a veces encontrando configuraciones erróneas sutiles que otros testers podrían pasar por alto.


Group Policy Objects (GPOs)

Un Group Policy Object (GPO) es una colección virtual de configuraciones de políticas que se pueden aplicar a user(s) o computer(s). Los GPOs incluyen políticas como el tiempo de espera de bloqueo de pantalla, la desactivación de puertos USB, la imposición de una política de contraseñas personalizada en el dominio, la instalación de software, la gestión de aplicaciones, la personalización de configuraciones de acceso remoto, y mucho más. Cada GPO tiene un nombre único y se le asigna un identificador único (GUID). Se pueden vincular a una OU específica, dominio o sitio. Un solo GPO puede estar vinculado a múltiples contenedores, y cualquier contenedor puede tener varios GPOs aplicados a él. Se pueden aplicar a usuarios individuales, hosts o grupos al ser aplicados directamente a una OU. Cada GPO contiene una o más configuraciones de Group Policy que pueden aplicarse a nivel de máquina local o dentro del contexto de Active Directory.


Example GPOs

Algunos ejemplos de lo que se puede hacer con GPOs incluyen:

  • Establecer diferentes políticas de contraseñas para cuentas de servicio, cuentas de administrador y cuentas de usuario estándar utilizando GPOs separados.
  • Prevenir el uso de dispositivos de medios removibles (como dispositivos USB).
  • Imponer un protector de pantalla con contraseña.
  • Restringir el acceso a aplicaciones que un usuario estándar no necesita, como cmd.exe y PowerShell.
  • Imponer políticas de auditoría y registro.
  • Bloquear a los usuarios de ejecutar ciertos tipos de programas y scripts.
  • Desplegar software en todo el dominio.
  • Bloquear a los usuarios de instalar software no aprobado.
  • Mostrar un banner de inicio de sesión siempre que un usuario inicie sesión en un sistema.
  • Deshabilitar el uso de hash LM en el dominio.
  • Ejecutar scripts cuando las computadoras se inician/apagan o cuando un usuario inicia/cierra sesión en su máquina.

Tomemos como ejemplo una implementación predeterminada de Windows Server 2008 Active Directory, la complejidad de la contraseña se impone por defecto. Los requisitos de complejidad de la contraseña son los siguientes:

  • Las contraseñas deben tener al menos 7 caracteres de longitud.
  • Las contraseñas deben contener caracteres de al menos tres de las siguientes cuatro categorías:
    • Caracteres en mayúscula (A-Z)
    • Caracteres en minúscula (a-z)
    • Números (0-9)
    • Caracteres especiales (por ejemplo, !@#$%^&*()_+|~-=`{}[]:";'<>?,./)

Estos son solo algunos ejemplos de lo que se puede hacer con Group Policy. Hay cientos de configuraciones que se pueden aplicar dentro de un GPO, que pueden llegar a ser extremadamente detalladas. Por ejemplo, a continuación se presentan algunas opciones que podemos configurar para sesiones de Remote Desktop.

RDP GPO Settings

image

Las configuraciones de GPO se procesan utilizando la estructura jerárquica de AD y se aplican utilizando la regla de Order of Precedence, como se ve en la siguiente tabla:

Order of Precedence

Level Description
Local Group Policy Las políticas se definen directamente en el host localmente fuera del dominio. Cualquier configuración aquí se sobrescribirá si una configuración similar se define a un nivel superior.
Site Policy Cualquier política específica para el sitio empresarial en el que reside el host. Recuerda que los entornos empresariales pueden abarcar grandes campus e incluso países. Por lo tanto, es lógico que un sitio pueda tener sus propias políticas que lo diferencien del resto de la organización. Las políticas de Control de Acceso son un gran ejemplo de esto. Supongamos que un edificio o site específico realiza investigaciones secretas o restringidas y requiere un nivel más alto de autenticación para acceder a los recursos. Podrías especificar esas configuraciones a nivel de sitio y asegurarte de que estén vinculadas para que no sean sobrescritas por la política de dominio. Esta también es una excelente manera de realizar acciones como el mapeo de impresoras y comparticiones para usuarios en sitios específicos.
Domain-wide Policy Cualquier configuración que desees aplicar en todo el dominio. Por ejemplo, establecer el nivel de complejidad de la política de contraseñas, configurar un fondo de escritorio para todos los usuarios y establecer un banner de Aviso de Uso y Consentimiento para Monitorear en la pantalla de inicio de sesión.
Organizational Unit (OU) Estas configuraciones afectarían a los usuarios y computadoras que pertenecen a OUs específicas. Querrás colocar cualquier configuración única aquí que sea específica de roles. Por ejemplo, el mapeo de una unidad compartida particular que solo puede ser accedida por RRHH, el acceso a recursos específicos como impresoras, o la capacidad de los administradores de IT para utilizar PowerShell y el símbolo del sistema.
Any OU Policies nested within other OU's Las configuraciones a este nivel reflejarían permisos especiales para objetos dentro de OUs anidadas. Por ejemplo, proporcionar a los analistas de seguridad un conjunto específico de configuraciones de Applocker que difieran de las configuraciones estándar de IT Applocker.

Podemos gestionar Group Policy desde la Group Policy Management Console (encontrada en Administrative Tools en el Start Menu de un controlador de dominio), aplicaciones personalizadas, o utilizando el módulo GroupPolicy de PowerShell vía línea de comandos. Default Domain Policy es el GPO predeterminado que se crea automáticamente y se vincula al dominio. Tiene la mayor precedencia de todos los GPOs y se aplica por defecto a todos los usuarios y computadoras. Generalmente, es una buena práctica utilizar este GPO predeterminado para gestionar configuraciones predeterminadas que se aplicarán a nivel de dominio. Default Domain Controllers Policy también se crea automáticamente con un dominio y establece configuraciones de seguridad y auditoría básicas para todos los controladores de dominio en un dominio determinado. Se puede personalizar según sea necesario, como cualquier GPO.


GPO Order of Precedence

Los GPOs se procesan de arriba hacia abajo al visualizarlos desde un punto de vista organizacional de dominio. Un GPO vinculado a una OU en el nivel más alto en una red de Active Directory (a nivel de dominio, por ejemplo) se procesará primero, seguido por aquellos vinculados a una OU secundaria, etc. Esto significa que un GPO vinculado directamente a una OU que contiene objetos de usuario o computadora se procesa al final. En otras palabras, un GPO adjuntado a una OU específica tendría precedencia sobre un GPO adjuntado a nivel de dominio porque se procesará al final y podría correr el riesgo de sobrescribir configuraciones en un GPO más alto en la jerarquía del dominio. Otra cosa que se debe tener en cuenta con la precedencia es que una configuración configurada en la política de computadora siempre tendrá una mayor prioridad que la misma configuración aplicada a un usuario. El siguiente gráfico ilustra la precedencia y cómo se aplica.

GPO Precedence Order

image

Veamos otro ejemplo utilizando la Group Policy Management Console en un Domain Controller. En esta imagen, vemos varios GPOs. El Disabled Forced Restarts GPO

tendrá precedencia sobre el Logon Banner GPO ya que se procesará al final. Cualquier configuración configurada en el Disabled Forced Restarts GPO podría potencialmente sobrescribir configuraciones en cualquier GPO más alto en la jerarquía (incluyendo aquellos vinculados a la Corp OU).

GPMC Hive Example

image

Esta imagen también muestra un ejemplo de varios GPOs vinculados a la Corp OU. Cuando se vinculan más de un GPO a una OU, se procesan según el Link Order. El GPO con el Link Order más bajo se procesa al final, o el GPO con link order 1 tiene la mayor precedencia, luego 2, y así sucesivamente. Así que en nuestro ejemplo anterior, el Disallow LM Hash GPO tendrá precedencia sobre los Block Removable Media y Disable Guest Account GPOs, lo que significa que se procesará primero.

Es posible especificar la opción Enforced para aplicar configuraciones en un GPO específico. Si se selecciona esta opción, las configuraciones de políticas en GPOs vinculados a OUs inferiores NO PUEDEN sobrescribir las configuraciones. Si un GPO se establece a nivel de dominio con la opción Enforced seleccionada, las configuraciones contenidas en ese GPO se aplicarán a todas las OUs en el dominio y no podrán ser sobrescritas por políticas de OU de nivel inferior. En el pasado, esta configuración se llamaba No Override y se establecía en el contenedor en cuestión bajo Active Directory Users and Computers. A continuación, podemos ver un ejemplo de un GPO Enforced, donde el Logon Banner GPO tiene precedencia sobre los GPOs vinculados a OUs inferiores y, por lo tanto, no será sobrescrito.

Enforced GPO Policy Precedence

image

Independientemente de cuál GPO esté configurado como enforced, si el Default Domain Policy GPO está configurado como enforced, tendrá precedencia sobre todos los GPOs en todos los niveles.

Default Domain Policy Override

image

También es posible establecer la opción Block inheritance en una OU. Si esto se especifica para una OU en particular, entonces las políticas superiores (como a nivel de dominio) NO se aplicarán a esta OU. Si ambas opciones están configuradas, la opción No Override tiene precedencia sobre la opción Block inheritance. Aquí hay un ejemplo rápido. La Computers OU está heredando GPOs configurados en la Corp OU en la siguiente imagen.

image

Si se elige la opción Block Inheritance, podemos ver que los 3 GPOs aplicados más arriba a la Corp OU ya no se aplican a la Computers OU.

Block Inheritance

image


Group Policy Refresh Frequency

Cuando se crea un nuevo GPO, las configuraciones no se aplican automáticamente de inmediato. Windows realiza actualizaciones periódicas de Group Policy, que por defecto se realizan cada 90 minutos con un desfase aleatorio de +/- 30 minutos para usuarios y computadoras. El período es solo de 5 minutos para los Domain Controllers para actualizar por defecto. Cuando se crea un nuevo GPO y se vincula, podría tardar hasta 2 horas (120 minutos) en que las configuraciones entren en vigor. Este desfase aleatorio de +/- 30 minutos se establece para evitar sobrecargar a los Domain Controllers haciendo que todos los clientes soliciten Group Policy desde el Domain Controller simultáneamente.

Es posible cambiar el intervalo de actualización predeterminado dentro de Group Policy. Además, podemos emitir el comando gpupdate /force para iniciar el proceso de actualización. Este comando comparará los GPOs actualmente aplicados en la máquina con el Domain Controller y los modificará o los omitirá dependiendo de si han cambiado desde la última actualización automática.

Podemos modificar el intervalo de actualización a través de Group Policy haciendo clic en Computer Configuration --> Policies --> Administrative Templates --> System --> Group Policy y seleccionando Set Group Policy refresh interval for computers. Aunque se puede cambiar, no debería configurarse para que ocurra con demasiada frecuencia, ya que podría causar congestión en la red y provocar problemas de replicación.

image


Security Considerations of GPOs

Como se mencionó anteriormente, los GPOs pueden ser utilizados para llevar a cabo ataques. Estos ataques pueden incluir agregar derechos adicionales a una cuenta de usuario que controlamos, agregar un administrador local a un host, o crear una tarea programada inmediata para ejecutar un comando malicioso, como modificar la pertenencia a grupos, agregar una nueva cuenta de administrador, establecer una conexión de shell inverso, o incluso instalar malware dirigido en todo un dominio. Estos ataques suelen ocurrir cuando un usuario tiene los derechos necesarios para modificar un GPO que se aplica a una OU que contiene una cuenta de usuario que controlamos o una computadora.

A continuación se muestra un ejemplo de una ruta de ataque de GPO identificada utilizando la herramienta BloodHound. Este ejemplo muestra que el grupo Domain Users puede modificar el Disconnect Idle RDP GPO debido a la membresía de grupo anidado. En este caso, lo siguiente sería ver a qué OUs se aplica este GPO y si podemos aprovechar estos derechos para tomar el control de un usuario de alto valor (administrador o Domain Admin) o computadora (servidor, DC, o host crítico) y movernos lateralmente para escalar privilegios dentro del dominio.

image


Hemos cubierto mucha información hasta este punto. Active Directory es un tema vasto, y solo hemos arañado la superficie. Hemos cubierto la teoría fundamental; ahora, vamos a ensuciarnos las manos y jugar con objetos de Active Directory, Group Policy, y más en la siguiente sección.