15 dic 2020

Jugando con GPOs I - Cómo registrar cambios sobre GPOs en tu Directorio Activo

¡Muy buenas a todos!

Hoy damos comienzo a una nueva serie de artículos en Flu, esta vez, sobre GPOs (Group Policy Objects). Durante los próximos tres artículos vamos a tratar los siguientes temas:

  • Parte I: Habilitaremos los logs en un Controlador de Dominio para monitorizar los cambios sobre las GPOs de nuestro Directorio Activo.
  • Parte II: Con los logs activados y actuando como un atacante, explotaremos una configuración errónea de una de las GPO desplegadas (GPO abuse).
  • Parte III: Analizaremos los logs generados en el DC desde el punto de vista de un analista para intentar detectar los cambios realizados por el atacante.

Dicho esto, ¡comencemos!

Fig 1: Una definición de GPO muy intuitiva.

Introducción a las GPO

Según Microsoft, una GPO es una colección de políticas del sistema con nombre único (GUID). En castellano, es un objeto donde podemos definir políticas a aplicar sobre determinados grupos del directorio activo. Por ejemplo, deshabilitar el administrador local de máquina de todos los equipos pertenecientes al grupo Recursos Humanos. 

Bien, como os podéis imaginar, las GPOs son muy potentes; una mala configuración sobre sus permisos podría permitir a un usuario modificar sus políticas y, por ende, afectar a los grupos que cuelguen de esa GPO (imaginad si, en el caso anterior, un usuario pudiera reactivar el administrador local, por ejemplo). Para registrar los cambios sobre las GPOs (modificación, creación y eliminación), es necesario que sigamos los siguientes pasos. 

Nota: Para entrar en detalle, podéis seguir este artículo.

Cómo habilitar los logs

Primero, tendremos que activar los logs de cambios del Directory Service.

Fig 2: Active Directory Service Changes tiene que estar en "Success".

Con esta configuración activa, los cambios sobre las GPOs se empezarán a incluir en los eventos de Windows, sin embargo, de todos los eventos posibles que se pueden generar (5136, 5137, 5138, 5139), solo se registraran de manera automática los de modificación (5136).

Fig 3: Únicos eventos generados tras activar los logs.

Para mejorar esta pobre recolección, tendremos que habilitarlos mediante una entrada específica en su SACL, para ello, emplearemos el editor de ADSI.

Fig 4: Mejorando la generación de logs con ADSI.

Una vez dentro (os vuelvo a remitir al artículo de antes), crearemos las reglas de control de acceso. 

Fig 5: Reglas de auditoría que nos tienen que quedar tras activarlas.

La primera aplicará al propio objeto (Policies) y habilitará el check para registrar creaciones de GPO, es decir. todo objeto creado dentro de Policies (evento 5137). 

Fig 6: Eventos generados por la primera regla.

La segunda, aplicará a todos los objetos que caigan de Policies y registrará el borrado y las modificaciones de las GPOs existentes (eventos 5136 y 5141).

Fig 7: Eventos generados por la segunda regla.

Contenido de uno de los logs generados

Como podéis observar, con los cambios que hemos realizado, ya tenemos capacidad para detectar creaciones, modificaciones y eliminaciones de GPOs. Además, si entramos en el contenido de estos eventos, podremos identificar también el usuario que lo ha realizado, la hora, el GUID de la GPO eliminada... permitiéndonos tener una mayor trazabilidad sobre estos cambios.

Fig 8: Ejemplo de evento de borrado de una GPO.


En el próximo artículo, veremos como abusar de una mala configuración de GPO para adquirir privilegios de Administrador sobre un equipo vulnerable, pero ya será en 2021, porque los compañeros de Zerolynx haremos a partir de hoy un merecido descanso hasta después de las vacaciones de Navidad :)

En unos días contaréis con las habituales reflexiones del año de mis compañeros Pablo González y Juan Antonio Calles. 

Por mi parte, ¡desearos unas felices fiestas a todos!

Y... Happy Juancking!

No hay comentarios:

Publicar un comentario