Abusing Active Directory ACLs/ACEs
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Esta página es principalmente un resumen de las técnicas de https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces y https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges. Para más detalles, consulta los artículos originales.
Este privilegio otorga a un atacante control total sobre una cuenta de usuario objetivo. Una vez que se confirman los derechos GenericAll
utilizando el comando Get-ObjectAcl
, un atacante puede:
Cambiar la Contraseña del Objetivo: Usando net user <nombredeusuario> <contraseña> /domain
, el atacante puede restablecer la contraseña del usuario.
Kerberoasting Dirigido: Asignar un SPN a la cuenta del usuario para hacerla susceptible a kerberoasting, luego usar Rubeus y targetedKerberoast.py para extraer e intentar romper los hashes del ticket-granting ticket (TGT).
ASREPRoasting dirigido: Desactivar la pre-autenticación para el usuario, haciendo que su cuenta sea vulnerable a ASREPRoasting.
Este privilegio permite a un atacante manipular las membresías de grupo si tiene derechos GenericAll
en un grupo como Domain Admins
. Después de identificar el nombre distinguido del grupo con Get-NetGroup
, el atacante puede:
Agregarse al Grupo de Administradores de Dominio: Esto se puede hacer a través de comandos directos o utilizando módulos como Active Directory o PowerSploit.
Tener estos privilegios en un objeto de computadora o una cuenta de usuario permite:
Kerberos Resource-based Constrained Delegation: Permite tomar el control de un objeto de computadora.
Shadow Credentials: Utiliza esta técnica para suplantar una computadora o cuenta de usuario aprovechando los privilegios para crear credenciales en sombra.
Si un usuario tiene derechos de WriteProperty
en todos los objetos para un grupo específico (por ejemplo, Domain Admins
), puede:
Add Themselves to the Domain Admins Group: Alcanzable mediante la combinación de los comandos net user
y Add-NetGroupUser
, este método permite la escalación de privilegios dentro del dominio.
Este privilegio permite a los atacantes agregarse a grupos específicos, como Domain Admins
, a través de comandos que manipulan directamente la membresía del grupo. Usar la siguiente secuencia de comandos permite la auto-adición:
Un privilegio similar, esto permite a los atacantes agregarse directamente a grupos modificando las propiedades del grupo si tienen el derecho de WriteProperty
en esos grupos. La confirmación y ejecución de este privilegio se realizan con:
Tener el ExtendedRight
en un usuario para User-Force-Change-Password
permite restablecer contraseñas sin conocer la contraseña actual. La verificación de este derecho y su explotación se pueden realizar a través de PowerShell o herramientas de línea de comandos alternativas, ofreciendo varios métodos para restablecer la contraseña de un usuario, incluyendo sesiones interactivas y comandos de una sola línea para entornos no interactivos. Los comandos varían desde invocaciones simples de PowerShell hasta el uso de rpcclient
en Linux, demostrando la versatilidad de los vectores de ataque.
Si un atacante descubre que tiene derechos de WriteOwner
sobre un grupo, puede cambiar la propiedad del grupo a sí mismo. Esto es particularmente impactante cuando el grupo en cuestión es Domain Admins
, ya que cambiar la propiedad permite un control más amplio sobre los atributos y la membresía del grupo. El proceso implica identificar el objeto correcto a través de Get-ObjectAcl
y luego usar Set-DomainObjectOwner
para modificar el propietario, ya sea por SID o nombre.
Este permiso permite a un atacante modificar las propiedades del usuario. Específicamente, con acceso GenericWrite
, el atacante puede cambiar la ruta del script de inicio de sesión de un usuario para ejecutar un script malicioso al iniciar sesión el usuario. Esto se logra utilizando el comando Set-ADObject
para actualizar la propiedad scriptpath
del usuario objetivo para que apunte al script del atacante.
Con este privilegio, los atacantes pueden manipular la membresía de grupos, como agregarse a sí mismos u otros usuarios a grupos específicos. Este proceso implica crear un objeto de credencial, usarlo para agregar o eliminar usuarios de un grupo y verificar los cambios de membresía con comandos de PowerShell.
Poseer un objeto de AD y tener privilegios de WriteDACL
sobre él permite a un atacante otorgarse a sí mismo privilegios de GenericAll
sobre el objeto. Esto se logra a través de la manipulación de ADSI, lo que permite el control total sobre el objeto y la capacidad de modificar sus membresías de grupo. A pesar de esto, existen limitaciones al intentar explotar estos privilegios utilizando los cmdlets Set-Acl
/ Get-Acl
del módulo de Active Directory.
El ataque DCSync aprovecha permisos específicos de replicación en el dominio para imitar un Controlador de Dominio y sincronizar datos, incluyendo credenciales de usuario. Esta poderosa técnica requiere permisos como DS-Replication-Get-Changes
, permitiendo a los atacantes extraer información sensible del entorno de AD sin acceso directo a un Controlador de Dominio. Aprende más sobre el ataque DCSync aquí.
El acceso delegado para gestionar Objetos de Política de Grupo (GPO) puede presentar riesgos de seguridad significativos. Por ejemplo, si un usuario como offense\spotless
tiene derechos de gestión de GPO, puede tener privilegios como WriteProperty, WriteDacl y WriteOwner. Estos permisos pueden ser abusados con fines maliciosos, como se identifica usando PowerView: bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
Para identificar GPO mal configurados, se pueden encadenar los cmdlets de PowerSploit. Esto permite descubrir GPOs que un usuario específico tiene permisos para gestionar: powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
Computadoras con una Política Dada Aplicada: Es posible resolver qué computadoras se ven afectadas por un GPO específico, ayudando a entender el alcance del impacto potencial. powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}
Políticas Aplicadas a una Computadora Dada: Para ver qué políticas se aplican a una computadora en particular, se pueden utilizar comandos como Get-DomainGPO
.
OUs con una Política Dada Aplicada: Identificar unidades organizativas (OUs) afectadas por una política dada se puede hacer usando Get-DomainOU
.
Los GPO mal configurados pueden ser explotados para ejecutar código, por ejemplo, creando una tarea programada inmediata. Esto se puede hacer para agregar un usuario al grupo de administradores locales en las máquinas afectadas, elevando significativamente los privilegios:
El módulo GroupPolicy, si está instalado, permite la creación y vinculación de nuevos GPOs, y la configuración de preferencias como valores de registro para ejecutar puertas traseras en los computadores afectados. Este método requiere que el GPO sea actualizado y que un usuario inicie sesión en el computador para su ejecución:
SharpGPOAbuse ofrece un método para abusar de GPOs existentes al agregar tareas o modificar configuraciones sin necesidad de crear nuevos GPOs. Esta herramienta requiere la modificación de GPOs existentes o el uso de herramientas RSAT para crear nuevos antes de aplicar cambios:
Las actualizaciones de GPO suelen ocurrir aproximadamente cada 90 minutos. Para acelerar este proceso, especialmente después de implementar un cambio, se puede utilizar el comando gpupdate /force
en la computadora objetivo para forzar una actualización inmediata de la política. Este comando asegura que cualquier modificación a los GPO se aplique sin esperar al próximo ciclo de actualización automática.
Al inspeccionar las Tareas Programadas para un GPO dado, como la Política mal configurada
, se puede confirmar la adición de tareas como evilTask
. Estas tareas se crean a través de scripts o herramientas de línea de comandos con el objetivo de modificar el comportamiento del sistema o escalar privilegios.
La estructura de la tarea, como se muestra en el archivo de configuración XML generado por New-GPOImmediateTask
, detalla las especificaciones de la tarea programada, incluyendo el comando a ejecutar y sus desencadenadores. Este archivo representa cómo se definen y gestionan las tareas programadas dentro de los GPO, proporcionando un método para ejecutar comandos o scripts arbitrarios como parte de la aplicación de políticas.
Los GPO también permiten la manipulación de membresías de usuarios y grupos en sistemas objetivo. Al editar directamente los archivos de políticas de Usuarios y Grupos, los atacantes pueden agregar usuarios a grupos privilegiados, como el grupo local de administradores
. Esto es posible a través de la delegación de permisos de gestión de GPO, que permite la modificación de archivos de políticas para incluir nuevos usuarios o cambiar las membresías de grupos.
El archivo de configuración XML para Usuarios y Grupos detalla cómo se implementan estos cambios. Al agregar entradas a este archivo, se pueden otorgar privilegios elevados a usuarios específicos en los sistemas afectados. Este método ofrece un enfoque directo para la escalada de privilegios a través de la manipulación de GPO.
Además, se pueden considerar métodos adicionales para ejecutar código o mantener persistencia, como aprovechar scripts de inicio/cierre de sesión, modificar claves del registro para autoruns, instalar software a través de archivos .msi o editar configuraciones de servicios. Estas técnicas proporcionan diversas vías para mantener el acceso y controlar sistemas objetivo a través del abuso de GPOs.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)