Saltar a contenido

Active Directory Rights and Privileges

Los derechos y privilegios son fundamentales en la gestión de Active Directory (AD) y, si se administran incorrectamente, pueden ser fácilmente aprovechados por atacantes o penetration testers. Los derechos de acceso y privilegios son dos temas importantes en AD (y en infosec en general) y debemos entender la diferencia. Los Rights (derechos) suelen asignarse a usuarios o grupos y se refieren a permisos para access (acceder) a un objeto, como un archivo, mientras que los privileges (privilegios) otorgan a un usuario permiso para perform an action (realizar una acción), como ejecutar un programa, apagar un sistema, restablecer contraseñas, etc. Los privilegios pueden asignarse individualmente a los usuarios o conferirse a través de la pertenencia a grupos predeterminados o personalizados. Los equipos con Windows tienen un concepto llamado User Rights Assignment, que, aunque se refiere a derechos, en realidad son tipos de privilegios otorgados a un usuario. Hablaremos de esto más adelante en esta sección. Debemos tener un firme entendimiento de las diferencias entre derechos y privilegios en un sentido más amplio y, en particular, cómo se aplican en un entorno de AD.


Built-in AD Groups

AD contiene muchos grupos de seguridad predeterminados o integrados, algunos de los cuales otorgan a sus miembros poderosos derechos y privilegios que pueden ser aprovechados para escalar privilegios dentro de un dominio y, en última instancia, obtener privilegios de Domain Admin o SYSTEM en un Domain Controller (DC). La membresía en muchos de estos grupos debe ser estrictamente gestionada, ya que la membresía/privilegios excesivos en los grupos es un fallo común en muchas redes AD que los atacantes buscan aprovechar. Algunos de los grupos integrados más comunes se enumeran a continuación.

Nombre del Grupo Descripción
Account Operators Los miembros pueden crear y modificar la mayoría de los tipos de cuentas, incluidas las de usuarios, grupos locales y grupos globales, y los miembros pueden iniciar sesión localmente en controladores de dominio. No pueden gestionar la cuenta de Administrador, cuentas de usuario administrativas o miembros de los grupos Administrators, Server Operators, Account Operators, Backup Operators o Print Operators.
Administrators Los miembros tienen acceso completo y sin restricciones a una computadora o a todo un dominio si están en este grupo en un Domain Controller.
Backup Operators Los miembros pueden realizar copias de seguridad y restaurar todos los archivos de una computadora, independientemente de los permisos establecidos en los archivos. Los Backup Operators también pueden iniciar sesión y apagar la computadora. Los miembros pueden iniciar sesión en los DCs localmente y deben considerarse como Domain Admins. Pueden hacer copias de seguridad de la base de datos SAM/NTDS, que, si se toma, se puede usar para extraer credenciales y otra información valiosa.
DnsAdmins Los miembros tienen acceso a la información de red DNS. El grupo solo se creará si el rol de servidor DNS está o estuvo instalado en un Domain Controller en el dominio.
Domain Admins Los miembros tienen acceso completo para administrar el dominio y son miembros del grupo local de administradores en todas las máquinas unidas al dominio.
Domain Computers Cualquier computadora creada en el dominio (excepto los controladores de dominio) se agrega a este grupo.
Domain Controllers Contiene todos los DCs dentro de un dominio. Los nuevos DCs se agregan automáticamente a este grupo.
Domain Guests Este grupo incluye la cuenta de invitado incorporada del dominio. Los miembros de este grupo tienen un perfil de dominio creado al iniciar sesión en una computadora unida al dominio como invitado local.
Domain Users Este grupo contiene todas las cuentas de usuario en un dominio. Una nueva cuenta de usuario creada en el dominio se agrega automáticamente a este grupo.
Enterprise Admins La membresía en este grupo proporciona acceso completo a la configuración dentro del dominio. El grupo solo existe en el dominio raíz de un bosque de AD. Los miembros de este grupo tienen la capacidad de realizar cambios a nivel de bosque, como agregar un dominio secundario o crear una relación de confianza. La cuenta de Administrador para el dominio raíz del bosque es el único miembro de este grupo por defecto.
Event Log Readers Los miembros pueden leer los registros de eventos en computadoras locales. El grupo solo se crea cuando un host es promovido a Domain Controller.
Group Policy Creator Owners Los miembros crean, editan o eliminan Objetos de Política de Grupo en el dominio.
Hyper-V Administrators Los miembros tienen acceso completo y sin restricciones a todas las funciones de Hyper-V. Si hay DCs virtuales en el dominio, cualquier administrador de virtualización, como los miembros de Hyper-V Administrators, debe considerarse como Domain Admins.
IIS_IUSRS Este es un grupo incorporado utilizado por Internet Information Services (IIS), comenzando con IIS 7.0.
Pre–Windows 2000 Compatible Access Este grupo existe para la compatibilidad con versiones anteriores de computadoras que ejecutan Windows NT 4.0 y versiones anteriores. La membresía en este grupo a menudo es una configuración heredada residual. Puede llevar a fallos donde cualquier persona en la red puede leer información de AD sin requerir un nombre de usuario y contraseña válidos de AD.
Print Operators Los miembros pueden gestionar, crear, compartir y eliminar impresoras conectadas a controladores de dominio en el dominio, junto con cualquier objeto de impresora en AD. Los miembros tienen permitido iniciar sesión en los DCs localmente y pueden ser utilizados para cargar un controlador de impresora malicioso y escalar privilegios dentro del dominio.
Protected Users Los miembros de este grupo tienen protecciones adicionales contra el robo de credenciales y tácticas como el abuso de Kerberos.
Read-only Domain Controllers Contiene todos los controladores de dominio de solo lectura en el dominio.
Remote Desktop Users Este grupo se utiliza para otorgar a usuarios y grupos permiso para conectarse a un host a través de Remote Desktop (RDP). Este grupo no se puede renombrar, eliminar ni mover.
Remote Management Users Este grupo se puede usar para otorgar acceso remoto a los usuarios a las computadoras a través de Windows Remote Management (WinRM).
Schema Admins Los miembros pueden modificar el esquema de Active Directory, que es la forma en que se definen todos los objetos dentro de AD. Este grupo solo existe en el dominio raíz de un bosque de AD. La cuenta de Administrador para el dominio raíz del bosque es el único miembro de este grupo por defecto.
Server Operators Este grupo solo existe en los controladores de dominio. Los miembros pueden modificar servicios, acceder a SMB shares y hacer copias de seguridad de archivos en controladores de dominio. Por defecto, este grupo no tiene miembros.

A continuación, proporcionamos algunos resultados relacionados con Domain Admins y Server Operators.

Server Operators Group Details

PS C:\htb>  Get-ADGroup -Identity "Server Operators" -Properties *

adminCount                      : 1
CanonicalName                   : INLANEFREIGHT.LOCAL/Builtin/Server Operators
CN                              : Server Operators
Created                         : 10/27/2021 8:14:34 AM
createTimeStamp                 : 10/27/2021 8:14:34 AM
Deleted                         : 
Description                     : Members can administer domain servers
DisplayName                     : 
DistinguishedName               : CN=Server Operators,CN=Builtin,DC=INLANEFREIGHT,DC=LOCAL
dSCorePropagationData           : {10/28/2021 1:47:52 PM, 10/28/2021 1:44:12 PM, 10/28/2021 1:44:11 PM, 10/27/2021 
                                  8:50:25 AM...}
GroupCategory                   : Security
GroupScope                      : DomainLocal
groupType                       : -2147483643
HomePage                        : 
instanceType                    : 4
isCriticalSystemObject          : True
isDeleted                       : 
LastKnownParent                 : 
ManagedBy                       : 
MemberOf                        : {}
Members                         : {}
Modified                        : 10/28/2021 1:47:52 PM
modifyTimeStamp                 : 10/28/2021 1:47:52 PM
Name                            : Server Operators
nTSecurityDescriptor            : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory                  : CN=Group,CN=Schema,CN=Configuration,DC=INLANEFREIGHT,DC=LOCAL
ObjectClass                     : group
ObjectGUID                      : 0887487b-7b07-4d85-82aa-40d25526ec17
objectSid                       : S-1-5-32-549
ProtectedFromAccidentalDeletion : False
SamAccountName                  : Server Operators
sAMAccountType                  : 536870912
sDRightsEffective               : 0
SID                             : S-1-5-32-549
SIDHistory                      : {}
system

Flags                     : -1946157056
uSNChanged                      : 228556
uSNCreated                      : 12360
whenChanged                     : 10/28/2021 1:47:52 PM
whenCreated                     : 10/27/2021 8:14:34 AM

Como podemos ver arriba, el estado predeterminado del grupo Server Operators es no tener miembros y ser un grupo local de dominio por defecto. En contraste, el grupo Domain Admins que se muestra a continuación tiene varios miembros y cuentas de servicio asignadas a él. Domain Admins también son grupos Globales en lugar de locales de dominio. Más sobre la membresía de grupos se puede encontrar más adelante en este módulo. Ten cuidado con a quién, si es que a alguien, le das acceso a estos grupos. Un atacante podría fácilmente obtener las claves del sistema si obtiene acceso a un usuario asignado a estos grupos.

Domain Admins Group Membership

PS C:\htb>  Get-ADGroup -Identity "Domain Admins" -Properties * | select DistinguishedName,GroupCategory,GroupScope,Name,Members

DistinguishedName : CN=Domain Admins,CN=Users,DC=INLANEFREIGHT,DC=LOCAL
GroupCategory     : Security
GroupScope        : Global
Name              : Domain Admins
Members           : {CN=htb-student_adm,CN=Users,DC=INLANEFREIGHT,DC=LOCAL, CN=sharepoint
                    admin,CN=Users,DC=INLANEFREIGHT,DC=LOCAL, CN=FREIGHTLOGISTICSUSER,OU=Service
                    Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL, CN=PROXYAGENT,OU=Service
                    Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL...}

User Rights Assignment

Dependiendo de su membresía actual en grupos, y otros factores como los privilegios que los administradores pueden asignar a través de Group Policy (GPO), los usuarios pueden tener varios derechos asignados a su cuenta. Este artículo de Microsoft sobre User Rights Assignment proporciona una explicación detallada de cada uno de los derechos de usuario que se pueden configurar en Windows. No todos los derechos listados aquí son importantes para nosotros desde el punto de vista de la seguridad como penetration testers o defensores, pero algunos derechos otorgados a una cuenta pueden llevar a consecuencias no deseadas, como la escalada de privilegios o el acceso a archivos sensibles. Por ejemplo, digamos que podemos obtener acceso de escritura sobre un Group Policy Object (GPO) aplicado a una OU que contiene uno o más usuarios que controlamos. En este ejemplo, podríamos aprovechar una herramienta como SharpGPOAbuse para asignar derechos específicos a un usuario. Podemos realizar muchas acciones en el dominio para ampliar nuestro acceso con estos nuevos derechos. Algunos ejemplos incluyen:

Privilege Descripción
SeRemoteInteractiveLogonRight Este privilegio podría otorgar a nuestro usuario objetivo el derecho a iniciar sesión en un host a través de Remote Desktop (RDP), lo que podría potencialmente ser utilizado para obtener datos sensibles o escalar privilegios.
SeBackupPrivilege Esto otorga a un usuario la capacidad de crear copias de seguridad del sistema y podría ser utilizado para obtener copias de archivos sensibles del sistema que se pueden usar para recuperar contraseñas como los SAM y SYSTEM Registry hives y el archivo de base de datos NTDS.dit de Active Directory.
SeDebugPrivilege Esto permite a un usuario depurar y ajustar la memoria de un proceso. Con este privilegio, los atacantes podrían utilizar una herramienta como Mimikatz para leer el espacio de memoria del proceso Local System Authority (LSASS) y obtener cualquier credencial almacenada en memoria.
SeImpersonatePrivilege Este privilegio nos permite suplantar un token de una cuenta privilegiada como NT AUTHORITY\SYSTEM. Esto podría ser aprovechado con una herramienta como JuicyPotato, RogueWinRM, PrintSpoofer, etc., para escalar privilegios en un sistema objetivo.
SeLoadDriverPrivilege Un usuario con este privilegio puede cargar y descargar controladores de dispositivos que podrían ser utilizados para escalar privilegios o comprometer un sistema.
SeTakeOwnershipPrivilege Esto permite que un proceso tome posesión de un objeto. En su nivel más básico, podríamos usar este privilegio para obtener acceso a un archivo compartido o a un archivo en un share que de otro modo no estaba accesible para nosotros.

Hay muchas técnicas disponibles para abusar de los derechos de usuario detalladas aquí y aquí. Aunque fuera del alcance de este módulo, es esencial entender el impacto que puede tener la asignación incorrecta de un privilegio a una cuenta dentro de Active Directory. Un pequeño error de administración puede llevar a la completa compromisión de un sistema o empresa.


Viewing a User's Privileges

Después de iniciar sesión en un host, escribir el comando whoami /priv nos dará una lista de todos los derechos de usuario asignados al usuario actual. Algunos derechos solo están disponibles para usuarios administrativos y solo se pueden listar/aprovechar cuando se ejecuta una sesión de CMD o PowerShell con privilegios elevados. Estos conceptos de derechos elevados y User Account Control (UAC) son características de seguridad introducidas con Windows Vista que, por defecto, restringen las aplicaciones para que no se ejecuten con permisos completos a menos que sea absolutamente necesario. Si comparamos y contrastamos los derechos disponibles para nosotros como administradores en una consola no elevada frente a una consola elevada, veremos que difieren drásticamente. Primero, veamos los derechos disponibles para un usuario estándar de Active Directory.

Standard Domain User's Rights

PS C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                    State
============================= ============================== ========
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled

Podemos ver que los derechos son muy limitados y ninguno de los derechos "peligrosos" mencionados anteriormente está presente. A continuación, veamos un usuario privilegiado. A continuación se muestran los derechos disponibles para un usuario de Domain Admin.

Domain Admin Rights Non-Elevated

Podemos ver lo siguiente en una consola no elevada, lo cual no parece ser más que lo disponible para un usuario estándar de dominio. Esto se debe a que, por defecto, los sistemas Windows no habilitan todos los derechos para nosotros a menos que ejecutemos la consola de CMD o PowerShell en un contexto elevado. Esto es para evitar que todas las aplicaciones se ejecuten con los privilegios más altos posibles. Esto está controlado por algo llamado User Account Control (UAC) que se cubre en profundidad en el módulo de Windows Privilege Escalation.

PS C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege           Change the time zone                 Disabled

Domain Admin Rights Elevated

Si ingresamos el mismo comando desde una consola de PowerShell elevada, podemos ver la lista completa de derechos disponibles para nosotros:

PS C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                            Description                                                        State
========================================= ================================================================== ========
SeIncreaseQuotaPrivilege                  Adjust memory quotas for a process                                 Disabled
SeMachineAccountPrivilege                 Add workstations to domain                                         Disabled
SeSecurityPrivilege                       Manage auditing and security log                                   Disabled
SeTakeOwnershipPrivilege                  Take ownership of files or other objects                           Disabled
SeLoadDriverPrivilege                     Load and unload device drivers                                     Disabled
SeSystemProfilePrivilege                  Profile system performance                                         Disabled
SeSystemtimePrivilege                     Change the system time                                             Disabled
SeProfileSingleProcessPrivilege           Profile single process                                             Disabled
SeIncreaseBasePriorityPrivilege           Increase scheduling priority                                       Disabled
SeCreatePagefilePrivilege                 Create a pagefile                                                  Disabled
SeBackupPrivilege                         Back up files and directories                                      Disabled
SeRestorePrivilege                        Restore files and directories                                      Disabled
SeShutdownPrivilege                       Shut down the system                                               Disabled
SeDebugPrivilege                          Debug programs                                                     Enabled
SeSystemEnvironmentPrivilege              Modify firmware environment values                                 Disabled
SeChangeNotifyPrivilege                   Bypass traverse checking                                           Enabled
SeRemoteShutdownPrivilege                 Force shutdown from a remote system                                Disabled
SeUndockPrivilege                         Remove computer from docking station                               Disabled
SeEnableDelegationPrivilege               Enable computer and

 user accounts to be trusted for delegation     Disabled
SeManageVolumePrivilege                   Perform volume maintenance tasks                                   Disabled
SeImpersonatePrivilege                    Impersonate a client after authentication                          Enabled
SeCreateGlobalPrivilege                   Create global objects                                              Enabled
SeIncreaseWorkingSetPrivilege             Increase a process working set                                     Disabled
SeTimeZonePrivilege                       Change the time zone                                               Disabled
SeCreateSymbolicLinkPrivilege             Create symbolic links                                              Disabled
SeDelegateSessionUserImpersonatePrivilege Obtain an impersonation token for another user in the same session Disabled

Los derechos de los usuarios aumentan según los grupos en los que se colocan o los privilegios que se les asignan. A continuación se muestra un ejemplo de los derechos otorgados a un miembro del grupo Backup Operators. Los usuarios de este grupo tienen otros derechos actualmente restringidos por UAC (derechos adicionales como el poderoso SeBackupPrivilege no están habilitados por defecto en una sesión de consola estándar). Sin embargo, podemos ver en este comando que tienen el SeShutdownPrivilege, lo que significa que pueden apagar un Domain Controller. Este privilegio por sí solo no podría usarse para obtener acceso a datos sensibles, pero podría causar una interrupción masiva del servicio si inician sesión en un Domain Controller localmente (no de forma remota a través de RDP o WinRM).

Backup Operator Rights

PS C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                    State
============================= ============================== ========
SeShutdownPrivilege           Shut down the system           Disabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled

Como atacantes y defensores, necesitamos comprender los derechos que se otorgan a los usuarios a través de la membresía en los grupos de seguridad integrados en Active Directory. No es raro encontrar usuarios aparentemente de bajo privilegio agregados a uno o más de estos grupos, lo que puede ser utilizado para acceder o comprometer el dominio. El acceso a estos grupos debe ser estrictamente controlado. Por lo general, es una mejor práctica dejar la mayoría de estos grupos vacíos y solo agregar una cuenta a un grupo si se necesita realizar una acción única o configurar una tarea repetitiva. Cualquier cuenta agregada a uno de los grupos discutidos en esta sección o a la que se le otorguen privilegios adicionales debe ser estrictamente controlada y monitoreada, asignada a una contraseña o frase de contraseña muy fuerte, y debe ser separada de una cuenta utilizada por un administrador de sistemas para realizar sus tareas diarias.

Ahora que hemos comenzado a tocar algunos aspectos de seguridad en AD relacionados con los privilegios de usuario y la membresía en grupos integrados, pasemos a algunos puntos clave para asegurar una instalación de Active Directory.