Cómo funciona el Control de cuentas de usuario
El Control de cuentas de usuario (UAC) es una parte clave de la seguridad de Windows. UAC reduce el riesgo de malware limitando la capacidad de que el código malintencionado se ejecute con privilegios de administrador. En este artículo se describe cómo funciona UAC y cómo interactúa con los usuarios finales.
Proceso e interacciones de UAC
Con UAC, cada aplicación que requiera el token de acceso de administrador debe pedir consentimiento al usuario final. La única excepción es la relación que existe entre los procesos primarios y secundarios. Los procesos secundarios heredan el token de acceso del usuario del proceso primario. Sin embargo, tanto los procesos primarios como secundarios deben tener el mismo nivel de integridad.
Windows protege los procesos marcando sus niveles de integridad. Los niveles de integridad son medidas de confianza:
- Una aplicación de alta integridad es aquella que realiza tareas que modifican los datos del sistema, como una aplicación de partición de disco.
- Una aplicación de baja integridad es aquella que realiza tareas que podrían poner en peligro el sistema operativo, como un explorador web.
Las aplicaciones con niveles de integridad inferiores no pueden modificar los datos de las aplicaciones con niveles de integridad más altos. Cuando un usuario estándar intenta ejecutar una aplicación que requiere un token de acceso de administrador, UAC requiere que el usuario proporcione credenciales de administrador válidas.
Para comprender mejor cómo funciona este proceso, echemos un vistazo más de cerca al proceso de inicio de sesión de Windows.
Proceso de inicio de sesión
En el diagrama siguiente se muestra cómo el proceso de inicio de sesión de un administrador difiere del proceso de inicio de sesión de un usuario estándar.
De forma predeterminada, los usuarios estándar y administrador acceden a los recursos y ejecutan aplicaciones en el contexto de seguridad de un usuario estándar.
Cuando un usuario inicia sesión, el sistema crea un token de acceso para ese usuario. El token de acceso contiene información sobre el nivel de acceso que se concede al usuario, incluidos los identificadores de seguridad (SID) específicos y los privilegios de Windows.
Cuando un administrador inicia sesión, se crean dos tokens de acceso independientes para el usuario: un token de acceso de usuario estándar y un token de acceso de administrador. Token de acceso de usuario estándar:
- Contiene la misma información específica del usuario que el token de acceso de administrador, pero se quitan los privilegios administrativos de Windows y los SID.
- Se usa para iniciar aplicaciones que no realizan tareas administrativas (aplicaciones de usuario estándar)
- Se usa para mostrar el escritorio mediante la ejecución del proceso explorer.exe. Explorer.exe es el proceso primario del que todos los demás procesos iniciados por el usuario heredan su token de acceso. Como resultado, todas las aplicaciones se ejecutan como un usuario estándar a menos que un usuario proporcione consentimiento o credenciales para aprobar una aplicación para usar un token de acceso administrativo completo.
Un usuario que sea miembro del grupo Administradores puede iniciar sesión, examinar la Web y leer el correo electrónico mientras usa un token de acceso de usuario estándar. Cuando el administrador necesita realizar una tarea que requiera el token de acceso de administrador, Windows solicita automáticamente al usuario la aprobación. Este símbolo del sistema se denomina símbolo del sistema de elevación y su comportamiento se puede configurar a través de la directiva o el registro.
La experiencia del usuario de UAC
Cuando UAC está habilitado, la experiencia de usuario de los usuarios estándar es diferente de la de los usuarios de administrador. El método recomendado y más seguro para ejecutar Windows es asegurarse de que la cuenta de usuario principal es un usuario estándar. La ejecución como usuario estándar ayuda a maximizar la seguridad de un entorno administrado. Con el componente de elevación UAC integrado, los usuarios estándar pueden realizar fácilmente una tarea administrativa escribiendo credenciales válidas para una cuenta de administrador local.
El componente de elevación UAC integrado predeterminado para los usuarios estándar es el símbolo del sistema de credenciales.
La alternativa a la ejecución como usuario estándar es ejecutarse como administrador en Administración modo de aprobación. Con el componente de elevación UAC integrado, los miembros del grupo de administradores locales pueden realizar fácilmente una tarea administrativa proporcionando aprobación.
El componente de elevación UAC integrado predeterminado para una cuenta de administrador en Administración modo de aprobación se denomina símbolo del consentimiento.
El símbolo del sistema de credenciales
El símbolo del sistema de credenciales se presenta cuando un usuario estándar intenta realizar una tarea que requiere el token de acceso administrativo de un usuario. Los administradores también pueden ser necesarios para proporcionar sus credenciales si establecen el valor de la directiva Control de cuentas de usuario: Comportamiento de la solicitud de elevación para administradores en Administración modo de aprobación en Solicitar credenciales.
La solicitud de consentimiento
El símbolo del consentimiento se presenta cuando un usuario intenta realizar una tarea que requiere el token de acceso administrativo de un usuario.
Solicitudes de elevación de UAC
Las solicitudes de elevación de UAC están codificadas por colores para que sean específicas de la aplicación, lo que permite identificar más fácilmente el posible riesgo de seguridad de una aplicación. Cuando una aplicación intenta ejecutarse con el token de acceso completo de un administrador, Windows analiza primero el archivo ejecutable para determinar su publicador. Las aplicaciones se dividen primero en tres categorías basadas en el publicador del archivo:
- Windows
- Publicador comprobado (firmado)
- Publicador no comprobado (sin firmar)
La codificación de color del símbolo del sistema de elevación es la siguiente:
- Fondo gris: la aplicación es una aplicación administrativa de Windows, como un elemento de Panel de control, o una aplicación firmada por un publicador comprobado
- Fondo amarillo: la aplicación está sin signo o firmada, pero no es de confianza
Icono de escudo
Algunos elementos Panel de control, como fecha y hora, contienen una combinación de operaciones de administrador y de usuario estándar. Los usuarios estándar pueden ver el reloj y cambiar la zona horaria, pero se requiere un token de acceso de administrador completo para cambiar la hora del sistema local. A continuación se muestra una captura de pantalla del elemento de Panel de control fecha y hora.
El icono de escudo del botón Cambiar fecha y hora... indica que el proceso requiere un token de acceso de administrador completo.
Protección del símbolo del sistema de elevación
El proceso de elevación se protege aún más dirigiendo el mensaje al escritorio seguro. De forma predeterminada, las solicitudes de consentimiento y credenciales se muestran en el escritorio seguro. Solo los procesos de Windows pueden acceder al escritorio seguro. Para mayores niveles de seguridad, se recomienda mantener el control de cuenta de usuario: cambie al escritorio seguro al solicitar la configuración de la directiva de elevación habilitada.
Cuando un archivo ejecutable solicita elevación, el escritorio interactivo, también denominado escritorio de usuario, se cambia al escritorio seguro. El escritorio seguro atenúa el escritorio del usuario y muestra un mensaje de elevación al que se debe responder antes de continuar. Cuando el usuario selecciona Sí o No, el escritorio vuelve al escritorio del usuario.
Nota
A partir de Windows Server 2019, no es posible pegar el contenido del Portapapeles en el escritorio seguro. Este es el mismo comportamiento de las versiones del sistema operativo cliente windows compatibles actualmente.
El malware puede presentar una imitación del escritorio seguro, pero cuando el control de cuenta de usuario: comportamiento de la solicitud de elevación para administradores en Administración configuración de directiva del modo de aprobación se establece en Solicitar consentimiento, el malware no obtiene elevación si el usuario selecciona Sí en la imitación. Si la configuración de la directiva se establece en Solicitar credenciales, es posible que el malware que imita el símbolo del sistema de credenciales pueda recopilar las credenciales del usuario. Sin embargo, el malware no obtiene privilegios elevados y el sistema tiene otras protecciones que mitigan el malware de tomar el control de la interfaz de usuario incluso con una contraseña cosechada.
Aunque el malware podría presentar una imitación del escritorio seguro, este problema no puede producirse a menos que un usuario haya instalado previamente el malware en el equipo. Dado que los procesos que requieren un token de acceso de administrador no se pueden instalar de forma silenciosa cuando UAC está habilitado, el usuario debe proporcionar consentimiento explícitamente seleccionando Sí o proporcionando credenciales de administrador. El comportamiento específico del símbolo del sistema de elevación de UAC depende de las directivas de seguridad.
Arquitectura de UAC
En el diagrama siguiente se detalla la arquitectura de UAC.
Para comprender mejor cada componente, revise las tablas siguientes:
Usuario
Componente | Descripción |
---|---|
El usuario realiza una operación que requiere privilegios | Si la operación cambia el sistema de archivos o el registro, se llama a Virtualization. Todas las demás operaciones llaman a ShellExecute. |
Shellexecute | ShellExecute llama a CreateProcess. ShellExecute busca el error ERROR_ELEVATION_REQUIRED de CreateProcess. Si recibe el error, ShellExecute llama al servicio Application Information para intentar realizar la tarea solicitada con el símbolo del sistema con privilegios elevados. |
Createprocess | Si la aplicación requiere elevación, CreateProcess rechaza la llamada con ERROR_ELEVATION_REQUIRED. |
Sistema
Componente | Descripción |
---|---|
Servicio de información de aplicaciones | Un servicio del sistema que ayuda a iniciar aplicaciones que requieren uno o varios privilegios elevados o derechos de usuario para ejecutarse, como tareas administrativas locales y aplicaciones que requieren niveles de integridad más altos. El servicio Application Information ayuda a iniciar estas aplicaciones mediante la creación de un nuevo proceso para la aplicación con el token de acceso completo de un usuario administrativo cuando se requiere elevación. En función de las directivas configuradas, el usuario podría dar su consentimiento. |
Elevación de una instalación de ActiveX | Si ActiveX no está instalado, el sistema comprueba el nivel de control deslizante de UAC. Si está instalado ActiveX, se comprueba el valor control de cuenta de usuario: cambiar al escritorio seguro al solicitar elevación directiva de grupo. |
Comprobación del nivel de control deslizante de UAC | UAC tiene un control deslizante para seleccionar entre cuatro niveles de notificación.
|
Escritorio seguro habilitado | Control de cuenta de usuario: cambie al escritorio seguro cuando se compruebe la configuración de la directiva de elevación :
|
Createprocess | CreateProcess llama a AppCompat, Fusion y la detección del instalador para evaluar si la aplicación requiere elevación. A continuación, se inspecciona el archivo para determinar su nivel de ejecución solicitado, que se almacena en el manifiesto de aplicación para el archivo. CreateProcess produce un error si el nivel de ejecución solicitado especificado en el manifiesto no coincide con el token de acceso y devuelve un error (ERROR_ELEVATION_REQUIRED) a ShellExecute. |
AppCompat | La base de datos AppCompat almacena información en las entradas de corrección de compatibilidad de la aplicación para una aplicación. |
Fusión | La base de datos fusion almacena información de manifiestos de aplicación que describen las aplicaciones. El esquema de manifiesto se actualiza para agregar un nuevo campo de nivel de ejecución solicitado. |
Detección del instalador | La detección del instalador detecta los archivos de instalación, lo que ayuda a evitar que las instalaciones se ejecuten sin el conocimiento y el consentimiento del usuario. |
Núcleo
Componente | Descripción |
---|---|
Virtualización | La tecnología de virtualización garantiza que las aplicaciones no conformes no se ejecuten o no se ejecuten de forma silenciosa de forma que no se pueda determinar la causa. UAC también proporciona virtualización y registro de archivos y registro para aplicaciones que escriben en áreas protegidas. |
Sistema de archivos y registro | La virtualización de archivos y registros por usuario redirige las solicitudes de escritura de archivos y registro por equipo a ubicaciones equivalentes por usuario. Las solicitudes de lectura se redirigen primero a la ubicación virtualizada por usuario y a la segunda ubicación por equipo. |
El control deslizante nunca desactiva completamente el UAC. Si lo establece en Nunca notificar, hará lo siguiente:
- Mantener el servicio UAC en ejecución
- Hacer que todas las solicitudes de elevación iniciadas por los administradores se aproben automáticamente sin mostrar una solicitud de UAC
- Denegar automáticamente todas las solicitudes de elevación para los usuarios estándar
Importante
Para deshabilitar completamente UAC, debe deshabilitar la directiva Control de cuentas de usuario: ejecute todos los administradores en Administración modo de aprobación.
Advertencia
Es posible que algunas aplicaciones Plataforma universal de Windows no funcionen cuando UAC está deshabilitado.
Virtualización
Dado que los administradores del sistema en entornos empresariales intentan proteger los sistemas, muchas aplicaciones de línea de negocio (LOB) están diseñadas para usar solo un token de acceso de usuario estándar. Como resultado, no es necesario reemplazar la mayoría de las aplicaciones cuando UAC está activado.
Windows incluye tecnología de virtualización de archivos y registro para aplicaciones que no son compatibles con UAC y que requieren que el token de acceso de un administrador se ejecute correctamente. Cuando una aplicación administrativa que no es compatible con UAC intenta escribir en una carpeta protegida, como Archivos de programa, UAC proporciona a la aplicación su propia vista virtualizada del recurso que intenta cambiar. La copia virtualizada se mantiene en el perfil del usuario. Esta estrategia crea una copia independiente del archivo virtualizado para cada usuario que ejecuta la aplicación no compatible.
La mayoría de las tareas de la aplicación funcionan correctamente mediante las características de virtualización. Aunque la virtualización permite la ejecución de la mayoría de las aplicaciones, es una solución a corto plazo y no a largo plazo. Los desarrolladores de aplicaciones deben modificar sus aplicaciones para que sean compatibles lo antes posible, en lugar de depender de la virtualización de archivos, carpetas y registros.
La virtualización no es una opción en los siguientes escenarios:
- La virtualización no se aplica a las aplicaciones con privilegios elevados y que se ejecutan con un token de acceso administrativo completo
- La virtualización solo admite aplicaciones de 32 bits. Las aplicaciones de 64 bits sin privilegios elevados reciben un mensaje de acceso denegado cuando intentan adquirir un identificador (un identificador único) en un objeto de Windows. Las aplicaciones nativas de Windows de 64 bits deben ser compatibles con UAC y escribir datos en las ubicaciones correctas.
- La virtualización está deshabilitada si la aplicación incluye un manifiesto de aplicación con un atributo de nivel de ejecución solicitado
Niveles de ejecución de solicitudes
Un manifiesto de aplicación es un archivo XML que describe e identifica los ensamblados compartidos y privados en paralelo a los que una aplicación debe enlazar en tiempo de ejecución. El manifiesto de aplicación incluye entradas con fines de compatibilidad de aplicaciones UAC. Las aplicaciones administrativas que incluyen una entrada en el manifiesto de la aplicación solicitan al usuario permiso para acceder al token de acceso del usuario. Aunque carecen de una entrada en el manifiesto de la aplicación, la mayoría de las aplicaciones administrativas se pueden ejecutar sin modificaciones mediante correcciones de compatibilidad de aplicaciones. Las correcciones de compatibilidad de aplicaciones son entradas de base de datos que permiten que las aplicaciones que no son compatibles con UAC funcionen correctamente.
Todas las aplicaciones compatibles con UAC deben tener un nivel de ejecución solicitado agregado al manifiesto de aplicación. Si la aplicación requiere acceso administrativo al sistema, marcar la aplicación con un nivel de ejecución solicitado de require administrator garantiza que el sistema identifica este programa como una aplicación administrativa y realiza los pasos de elevación necesarios. Los niveles de ejecución solicitados especifican los privilegios necesarios para una aplicación.
Tecnología de detección del instalador
Los programas de instalación son aplicaciones diseñadas para implementar software. La mayoría de los programas de instalación escriben en directorios del sistema y claves del Registro. Estas ubicaciones del sistema protegidas normalmente solo pueden escribirse por un administrador en la tecnología de detección del instalador, lo que significa que los usuarios estándar no tienen acceso suficiente para instalar programas. Windows detecta heurísticamente los programas de instalación y solicita credenciales de administrador o aprobación del usuario administrador para ejecutarse con privilegios de acceso. Windows también detecta heurísticamente actualizaciones y programas que desinstalan aplicaciones. Uno de los objetivos de diseño de UAC es evitar que las instalaciones se ejecuten sin el conocimiento y el consentimiento del usuario, ya que los programas de instalación escriben en áreas protegidas del sistema de archivos y el registro.
La detección del instalador solo se aplica a:
- Archivos ejecutables de 32 bits
- Aplicaciones sin un atributo de nivel de ejecución solicitado
- Procesos interactivos que se ejecutan como un usuario estándar con UAC habilitado
Antes de crear un proceso de 32 bits, se comprueban los siguientes atributos para determinar si es un instalador:
- El nombre de archivo incluye palabras clave como "install", "setup" o "update".
- Los campos recurso de control de versiones contienen las siguientes palabras clave: Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name y Export Name.
- Las palabras clave del manifiesto en paralelo se incrustan en el archivo ejecutable.
- Las palabras clave en entradas stringTable específicas están vinculadas en el archivo ejecutable.
- Los atributos clave de los datos del script de recursos están vinculados en el archivo ejecutable.
- Hay secuencias de bytes de destino dentro del archivo ejecutable.
Nota
Las palabras clave y secuencias de bytes se derivan de características comunes observadas a partir de diversas tecnologías del instalador.
Nota
El control de cuenta de usuario: detectar instalaciones de aplicaciones y solicitar la directiva de elevación debe estar habilitado para que la detección del instalador detecte programas de instalación. Para obtener más información, vea Lista de configuración de Control de cuentas de usuario.
Pasos siguientes
Obtenga más información sobre la configuración y la configuración del Control de cuentas de usuario.