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.

Diagrama que describe el proceso de inicio de sesión de Windows de UAC.

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.

Captura de pantalla que muestra el símbolo del sistema de credenciales de UAC.

El símbolo del consentimiento se presenta cuando un usuario intenta realizar una tarea que requiere el token de acceso administrativo de un usuario.

Captura de pantalla que muestra la solicitud de consentimiento de UAC.

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 Captura de pantalla que muestra el símbolo del sistema de credenciales de UAC con un ejecutable firmado.
  • Fondo amarillo: la aplicación está sin signo o firmada, pero no es de confianza Captura de pantalla que muestra el símbolo del consentimiento de UAC con un ejecutable sin signo.

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.

Captura de pantalla que muestra el icono de escudo de UAC en propiedades de 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 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 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 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.

Diagrama que describe 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.
  • Siempre notificará lo siguiente:
    • Notifíquelo cuando los programas intenten instalar software o realizar cambios en el equipo.
    • Notifíquelo cuando realice cambios en la configuración de Windows.
    • Inmovilizar otras tareas hasta que responda.
    Se recomienda si a menudo instala software nuevo o visita sitios web desconocidos.
  • Notifíqueme solo cuando los programas intenten realizar cambios en mi equipo :
    • Notifíquelo cuando los programas intenten instalar software o realizar cambios en el equipo.
    • No se le notificará cuando realice cambios en la configuración de Windows.
    • Inmovilizar otras tareas hasta que responda.
    Se recomienda si no suele instalar aplicaciones o visitar sitios web desconocidos.
  • Notifíqueme solo cuando los programas intenten realizar cambios en mi equipo (no atenúe mi escritorio):
    • Notifíquelo cuando los programas intenten instalar software o realizar cambios en el equipo.
    • No se le notificará cuando realice cambios en la configuración de Windows.
    • No inmovilizar otras tareas hasta que responda.
    No se recomienda. Elija esto solo si tarda mucho tiempo en atenuar el escritorio en el equipo.
  • Nunca notificar (Deshabilitar mensajes de UAC) hará lo siguiente:
    • No le notifique cuando los programas intenten instalar software o realizar cambios en el equipo.
    • No se le notificará cuando realice cambios en la configuración de Windows.
    • No inmovilizar otras tareas hasta que responda.
    No se recomienda debido a problemas de seguridad.
Escritorio seguro habilitado Control de cuenta de usuario: cambie al escritorio seguro cuando se compruebe la configuración de la directiva de elevación :
  • Si el escritorio seguro está habilitado, todas las solicitudes de elevación van al escritorio seguro, independientemente de la configuración de la directiva de comportamiento de mensajes para administradores y usuarios estándar.
  • Si el escritorio seguro no está habilitado, todas las solicitudes de elevación van al escritorio del usuario interactivo y se usa la configuración por usuario para administradores y usuarios estándar.
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.