Saltar a contenido

Windows Privileges Overview

Privileges en Windows son derechos que una cuenta puede recibir para realizar una variedad de operaciones en el sistema local, como gestionar servicios, cargar drivers, apagar el sistema, depurar una aplicación, y más. Los privileges son diferentes de los access rights, que un sistema utiliza para otorgar o denegar acceso a objetos securables. Los privileges de usuario y grupo se almacenan en una base de datos y se otorgan a través de un access token cuando un usuario inicia sesión en un sistema. Una cuenta puede tener local privileges en una computadora específica y diferentes privileges en distintos sistemas si la cuenta pertenece a un Active Directory domain. Cada vez que un usuario intenta realizar una acción con privilegios, el sistema revisa el access token del usuario para ver si la cuenta tiene los privileges necesarios y, de ser así, verifica si están habilitados. La mayoría de los privileges están deshabilitados por defecto. Algunos pueden habilitarse abriendo un cmd.exe o una consola de PowerShell con privilegios administrativos, mientras que otros pueden habilitarse manualmente.

El objetivo de una assessment es a menudo obtener acceso administrativo a un sistema o múltiples sistemas. Supongamos que podemos iniciar sesión en un sistema como usuario con un conjunto específico de privileges. En ese caso, podemos aprovechar esta funcionalidad integrada para escalar privileges directamente o utilizar los privileges asignados a la cuenta objetivo para avanzar en nuestro acceso en busca de nuestro objetivo final.


Windows Authorization Process

Los security principals son cualquier cosa que pueda ser autenticada por el sistema operativo Windows, incluyendo cuentas de usuario y computadora, procesos que se ejecutan en el contexto de seguridad de otra cuenta de usuario/computadora, o los security groups a los que pertenecen estas cuentas. Los security principals son la forma principal de controlar el acceso a recursos en hosts de Windows. Cada security principal es identificado por un Security Identifier (SID) único. Cuando se crea un security principal, se le asigna un SID que permanece asignado a ese principal durante su vida útil.

El siguiente diagrama recorre el proceso de autorización y control de acceso de Windows a un alto nivel, mostrando, por ejemplo, el proceso que se inicia cuando un usuario intenta acceder a un objeto securable como una carpeta en un recurso compartido de archivos. Durante este proceso, el access token del usuario (incluyendo su user SID, SIDs para cualquier grupo al que pertenezca, lista de privileges y otra información de acceso) se compara con las Access Control Entries (ACEs) dentro del security descriptor del objeto (que contiene información de seguridad sobre un objeto securable como los access rights otorgados a usuarios o grupos). Una vez completada esta comparación, se toma una decisión para otorgar o denegar el acceso. Todo este proceso ocurre casi instantáneamente cada vez que un usuario intenta acceder a un recurso en un host de Windows. Como parte de nuestras actividades de enumeration y privilege escalation, intentamos usar y abusar de los access rights e insertarnos en este proceso de autorización para avanzar en nuestro acceso hacia nuestro objetivo.

image

Image source


Rights and Privileges in Windows

Windows contiene muchos grupos que otorgan a sus miembros poderosos rights y privileges. Muchos de estos pueden ser abusados para escalar privileges tanto en un host de Windows independiente como en un entorno de Active Directory domain. En última instancia, estos pueden ser utilizados para obtener Domain Admin, local administrator, o SYSTEM privileges en una estación de trabajo, servidor o Domain Controller (DC) de Windows. Algunos de estos grupos se enumeran a continuación.

Group Description
Default Administrators Domain Admins y Enterprise Admins son grupos "super".
Server Operators Los miembros pueden modificar servicios, acceder a comparticiones SMB y hacer copias de seguridad de archivos.
Backup Operators Los miembros pueden iniciar sesión en DCs localmente y deben considerarse Domain Admins. Pueden hacer copias de sombra de la base de datos SAM/NTDS, leer el registro remotamente y acceder al sistema de archivos en el DC a través de SMB. A veces, este grupo se agrega al grupo local Backup Operators en sistemas que no son DCs.
Print Operators Los miembros pueden iniciar sesión en DCs localmente y "engañar" a Windows para que cargue un driver malicioso.
Hyper-V Administrators Si hay DCs virtuales, cualquier administrador de virtualización, como los miembros de Hyper-V Administrators, debe considerarse Domain Admins.
Account Operators Los miembros pueden modificar cuentas y grupos no protegidos en el dominio.
Remote Desktop Users Los miembros no reciben permisos útiles por defecto, pero a menudo se les otorgan derechos adicionales como Allow Login Through Remote Desktop Services y pueden moverse lateralmente usando el protocolo RDP.
Remote Management Users Los miembros pueden iniciar sesión en DCs con PSRemoting (a veces este grupo se agrega al grupo de administración remota local en sistemas que no son DCs).
Group Policy Creator Owners Los miembros pueden crear nuevos GPOs pero necesitarían permisos adicionales para vincular GPOs a un contenedor como un dominio u OU.
Schema Admins Los miembros pueden modificar la estructura del Active Directory schema y backdoor cualquier grupo/GPO que se creará agregando una cuenta comprometida al ACL del objeto predeterminado.
DNS Admins Los miembros pueden cargar un DLL en un DC, pero no tienen los permisos necesarios para reiniciar el servidor DNS. Pueden cargar un DLL malicioso y esperar un reinicio como mecanismo de persistencia. Cargar un DLL a menudo resultará en que el servicio se bloquee. Una forma más confiable de explotar este grupo es crear un WPAD record.

User Rights Assignment

Dependiendo de la pertenencia a grupos y otros factores como los privileges asignados a través de políticas de dominio y locales (Group Policy), los usuarios pueden tener varios rights asignados a su cuenta. Este artículo de Microsoft sobre User Rights Assignment proporciona una explicación detallada de cada uno de los user rights que se pueden configurar en Windows, así como consideraciones de seguridad aplicables a cada derecho. A continuación se presentan algunos de los key user rights assignments, que son configuraciones aplicadas al localhost. Estos derechos permiten a los usuarios realizar tareas en el sistema, como iniciar sesión local o remotamente, acceder al host desde la red, apagar el servidor, etc.

Setting Constant Setting Name Standard Assignment Description
SeNetworkLogonRight Access this computer from the network Administrators, Authenticated Users Determina qué usuarios pueden conectarse al dispositivo desde la red. Esto es requerido por protocolos de red como SMB, NetBIOS, CIFS y COM+.
SeRemoteInteractiveLogonRight Allow log on through Remote Desktop Services Administrators, Remote Desktop Users Esta configuración de política determina qué usuarios o grupos pueden acceder a la pantalla de inicio de sesión de un dispositivo remoto a través de una conexión de Remote Desktop Services. Un usuario puede establecer una conexión de Remote Desktop Services con un servidor en particular, pero no puede iniciar sesión en la consola de ese mismo servidor.
SeBackupPrivilege Back up files and directories Administrators Este user right determina qué usuarios pueden omitir los permisos de archivos y directorios, registro y otros objetos persistentes con el propósito de respaldar el sistema.
SeSecurityPrivilege Manage auditing and security log Administrators Esta configuración de política determina qué usuarios pueden especificar opciones de auditoría de acceso a objetos para recursos individuales como archivos, objetos de Active Directory y claves de registro. Estos objetos especifican sus listas de control de acceso del sistema (SACL). Un usuario asignado a este user right también puede ver y borrar el Security log en el Event Viewer.
SeTakeOwnershipPrivilege Take ownership of files or other objects Administrators Esta configuración de política determina qué usuarios pueden asumir la propiedad de cualquier objeto securable en el dispositivo, incluidos los objetos de Active Directory, archivos y carpetas NTFS, impresoras, claves de registro, servicios, procesos y subprocesos.
SeDebugPrivilege Debug programs Administrators Esta configuración de política determina qué usuarios pueden adjuntar o abrir cualquier proceso, incluso un proceso que no poseen. Los desarrolladores que están depurando sus aplicaciones no necesitan este user right. Los desarrolladores que están depurando nuevos componentes del sistema necesitan este user right. Este user right proporciona acceso a componentes del sistema operativo sensibles y críticos.
SeImpersonatePrivilege Impersonate a client after authentication Administrators, Local Service, Network Service, Service Esta configuración de política determina qué programas pueden hacerse pasar por un usuario u otra cuenta especificada y actuar en nombre del usuario.
SeLoadDriverPrivilege Load and unload device drivers Administrators Esta configuración de política determina qué usuarios pueden cargar y descargar dinámicamente controladores de dispositivos. Este user right no es necesario si un controlador firmado para el nuevo hardware ya existe en el archivo driver.cab en el dispositivo. Los controladores de dispositivos se ejecutan como código con privilegios elevados.
SeRestorePrivilege Restore files and directories Administrators Esta configuración de seguridad determina qué usuarios pueden omitir los permisos de archivos, directorios, registros y otros objetos persistentes cuando restauran archivos y directorios respaldados. Determina qué usuarios pueden establecer security principals válidos como propietarios de un objeto.

Más información puede encontrarse aquí.

Escribir el comando whoami /priv te dará una lista de todos los user rights asignados a tu 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 elevada. Estos conceptos de derechos elevados y User Account Control (UAC) son características de seguridad introducidas con Windows Vista para restringir por defecto las aplicaciones de ejecutarse con permisos completos a menos que sea necesario. Si comparamos y contrastamos los derechos disponibles para nosotros como administradores en una consola no elevada vs. una consola elevada, veremos que difieren drásticamente.

A continuación se muestran los derechos disponibles para una cuenta de administrador local en un sistema Windows.

Local Admin User Rights - Elevated

Si ejecutamos una ventana de comandos elevada, podemos ver la lista completa de derechos disponibles para nosotros:

PS C:\htb> whoami 

winlpe-srv01\administrator


PS C:\htb> whoami /priv

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

Privilege Name                            Description                                                        State
========================================= ================================================================== ========
SeIncreaseQuotaPrivilege                  Adjust memory quotas for a process                                 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                                                     Disabled
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
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 

Cuando un privilege se enumera para nuestra cuenta en el estado Disabled, significa que nuestra cuenta tiene el privilege específico asignado. Sin embargo, no se puede usar en un access token para realizar las acciones asociadas hasta que se habilite. Windows no proporciona un comando integrado o cmdlet de PowerShell para habilitar privileges, por lo que necesitamos algunos scripts para ayudarnos. Veremos formas de abusar de varios privileges a lo largo de este módulo y diversas formas de habilitar privileges específicos dentro de nuestro proceso actual. Un ejemplo es este script de PowerShell que se puede utilizar para habilitar ciertos privileges, o este script que se puede utilizar para ajustar los token privileges.

Un usuario estándar, en contraste, tiene muchos menos derechos.

Standard User Rights

PS C:\htb> whoami 

winlpe-srv01\htb-student


PS C:\htb> whoami /priv

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

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

Los user rights aumentan en función de los grupos en los que se encuentran o los privileges asignados. A continuación se muestra un ejemplo de los derechos otorgados a los usuarios en el grupo Backup Operators. Los usuarios en este grupo tienen otros derechos que UAC actualmente restringe. Sin embargo, podemos ver en este comando que tienen el SeShutdownPrivilege, lo que significa que pueden apagar un domain controller, lo que podría causar una interrupción masiva del servicio si inician sesión localmente en un domain controller (no a través de RDP o WinRM).

Backup Operators 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

Detection

Este post vale la pena leer para obtener más información sobre los privileges en Windows, así como la detección y prevención de abusos, específicamente registrando el evento 4672: Special privileges assigned to new logon, que generará un evento si se asignan ciertos privileges sensibles a una nueva sesión de inicio de sesión. Esto se puede afinar de muchas maneras, como monitorear privileges que nunca deberían asignarse o aquellos que solo deberían asignarse a cuentas específicas.


Moving On

Como atacantes y defensores, necesitamos revisar la membresía de estos grupos. No es raro encontrar usuarios aparentemente de bajo privilegio agregados a uno o más de estos grupos, lo que puede usarse para comprometer un solo host o acceder más dentro de un entorno de Active Directory. Discutiremos las implicaciones de algunos de los derechos más comunes y realizaremos ejercicios sobre cómo escalar privileges si obtenemos acceso a un usuario con algunos de estos derechos asignados a su cuenta.