Cómo funciona el Control de cuentas de usuario
El Control de cuentas de usuario (UAC) es un componente fundamental de la visión global de seguridad de Microsoft. UAC te ayuda a mitigar el impacto de malware.
Procesos e interacciones del UAC
Cada aplicación que requiere el token de acceso de administrador debe solicitar consentimiento. La única excepción es la relación que existe entre 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 10 protege los procesos marcando sus niveles de integridad. Los niveles de integridad son medidas de confianza. Una aplicación de integridad "alta" es una que realiza tareas que modifiquen los datos del sistema, como una aplicación de partición de disco, mientras que una aplicación de integridad "baja" es aquella que realiza tareas que podrían poner en riesgo el sistema operativo, como un explorador web. Las aplicaciones con los niveles de integridad bajos no pueden modificar datos en 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, el UAC requiere que el usuario proporcione credenciales de administrador válidas.
Para comprender mejor cómo se produce este proceso, veamos el proceso de inicio de sesión de Windows.
Proceso de inicio de sesión
A continuación se muestra cómo difiere el proceso de inicio de sesión para un administrador del proceso de inicio de sesión para un usuario estándar.
De forma predeterminada, los administradores y los usuarios estándar obtienen acceso a recursos y ejecutan aplicaciones en el contexto de seguridad de los usuarios estándar. Cuando un usuario inicia sesión en un equipo, el sistema crea un token de acceso para ese usuario. El token de acceso contiene información sobre el nivel de acceso que obtiene el usuario, incluidos los identificadores de seguridad (SID) y 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. El 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 el SID y los privilegios administrativos de Windows. El token de acceso de usuario estándar se usa para iniciar aplicaciones que no realizan tareas administrativas (aplicaciones de usuario estándar). Luego, el token de acceso de usuario estándar se usa para mostrar el escritorio (explorer.exe). Explorer.exe es el proceso principal del que otros procesos iniciados por el usuario heredan el token de acceso. Como resultado, todas las aplicaciones se ejecutan como un usuario estándar, a menos que un usuario dé su consentimiento o sus credenciales para autorizar a una aplicación usar un token de acceso administrativo completo.
Un usuario que sea miembro del grupo Administradores puede iniciar sesión, navegar por la Web y consultar el correo electrónico con un token de acceso de usuario estándar. Cuando el administrador necesita realizar una tarea que requiere token de acceso de administrador, Windows 10 solicita automáticamente al usuario su aprobación. Este mensaje se denomina una petición de elevación, y su comportamiento puede configurarse mediante el complemento de Directiva de seguridad local (Secpol.msc) o la Directiva de grupo. Para obtener más información, consulta Configuración de directiva de seguridad de Control de cuentas de usuario.
La experiencia del usuario del UAC
Cuando el UAC está habilitado, la experiencia del usuario para los usuarios estándar es diferente de la de los administradores en modo de aprobación de administrador. El método recomendado y más seguro de ejecutar Windows 10 es establecer la cuenta de usuario principal en una cuenta de usuario estándar. Ejecutar como usuario estándar ayuda a maximizar la seguridad de un entorno administrado. Con el componente de elevación de UAC integrado, los usuarios estándar pueden realizar fácilmente una tarea administrativa escribiendo las credenciales válidas para una cuenta de administrador local. El componente predeterminado de elevación del UAC integrado para los usuarios estándar es la petición de credenciales.
La alternativa a ejecutar como un usuario estándar es ejecutar como administrador en el modo de aprobación de administrador. Con el componente de elevación de UAC integrado, los miembros del grupo de administradores local pueden realizar fácilmente una tarea administrativa proporcionando aprobación. El componente predeterminado de elevación de UAC integrado para una cuenta de administrador en el modo de aprobación de administrador es la petición de consentimiento.
Peticiones de consentimiento y credenciales
Con UAC habilitado, Windows 10 solicita consentimiento o solicita credenciales de una cuenta de administrador local válida antes de iniciar el programa o la tarea que requiera un token de acceso de administrador completo. Este mensaje garantiza que no se pueda instalar ningún malware en modo silencioso.
Petición de consentimiento
La petición de consentimiento se presenta cuando un usuario intenta realizar una tarea que requiere el token de acceso administrativo de un usuario. El siguiente es un ejemplo de la petición de consentimiento del UAC.
La petición de credenciales
La petición de credenciales se presenta cuando un usuario estándar intenta realizar una tarea que requiere un token de acceso administrativo de un usuario. Los administradores también pueden tener que proporcionar sus credenciales estableciendo el valor de configuración de directiva Control de cuentas de usuario: comportamiento de la petición de elevación para los administradores en el modo de aprobación de administrador para Pedir credenciales.
El siguiente es un ejemplo de la petición de credenciales del UAC.
Peticiones de elevación del UAC
Las peticiones de elevación del UAC están codificadas con colores para ser específicas de la aplicación, lo que permite la identificación inmediata del posible riesgo de seguridad de la aplicación. Cuando una aplicación se intenta ejecutar con el token de acceso total del administrador, Windows 10 analiza primero el archivo ejecutable para determinar su editor. Primero, las aplicaciones se dividen en tres categorías en función del editor del archivo: Windows 10, comprobadas por el editor (firmada) y no comprobadas por el editor (sin firmar). El siguiente diagrama ilustra cómo Windows 10 determina qué petición de elevación de color presentar al usuario.
La codificación de colores para la petición de elevación es la siguiente:
Fondo rojo con un icono de escudo rojo: la aplicación está bloqueada por la Directiva de grupo o por un editor que está bloqueado.
Fondo azul con un icono de escudo azul y dorado: la aplicación es una aplicación de administración de Windows 10, como un elemento del Panel de control.
Fondo azul con un icono de escudo azul: la aplicación está firmada con Authenticode y es de confianza para el equipo local.
Fondo amarillo con un icono de escudo amarillo: la aplicación está sin firmar o firmada, pero aún no es de confianza para el equipo local.
Icono de escudo
Algunos elementos del Panel de control, como Propiedades de fecha y hora, contienen una combinación de operaciones de usuario estándar y de administrador. Los usuarios estándar puedan ver el reloj y cambiar la zona horaria, pero es necesario un token de acceso de administrador total para cambiar la hora del sistema local. Lo siguiente es una captura de pantalla del elemento del Panel de control Propiedades de fecha y hora.
El icono de escudo del botó Cambiar fecha y hora indica que el proceso requiere un token de acceso de administrador total y mostrará una petición de elevación del UAC.
Protección de la petición de elevación
El proceso de elevación se protege aún más dirigiendo el símbolo del sistema al escritorio seguro. Los avisos de consentimiento y credenciales se muestran en el escritorio seguro de forma predeterminada en Windows 10. Solo los procesos de Windows pueden tener acceso al escritorio seguro. Para mayor seguridad, se recomienda mantener la configuración de directiva Control de cuentas de usuario: cambiar al escritorio seguro cuando se pida confirmación de elevación habilitada.
Cuando un archivo ejecutable solicita la elevación, el escritorio interactivo, también llamado el escritorio del usuario, se cambia al escritorio seguro. El escritorio seguro atenúa el escritorio del usuario y muestra una petición de elevación que se debe responder antes de continuar. Cuando el usuario hace clic en Sí o No, el escritorio vuelve al escritorio del usuario.
El malware puede presentar una imitación del escritorio seguro, pero cuando la configuración de directiva Control de cuentas de usuario: comportamiento de la petición de elevación para los administradores en el modo de aprobación de administrador está establecida en Petición de consentimiento, el malware no obtendrá la elevación si el usuario hace clic en Sí en la imitación. Si la configuración de directiva está establecida en Pedir credenciales, el malware que imita la petición de credenciales puede recopilar las credenciales del usuario. Sin embargo, el malware no obtiene privilegios elevados y el sistema tiene otras protecciones que evitan que el malware tome el control de la interfaz de usuario incluso con una contraseña obtenida.
Mientras el malware podría presentar una imitación del escritorio seguro, este problema no se puede producir a menos que un usuario instalara 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 el UAC está habilitado, el usuario debe dar su consentimiento explícito haciendo clic en Sí o proporcionando credenciales de administrador. El comportamiento específico de la petición de elevación del UAC depende de la Directiva de grupo.
Arquitectura del UAC
El siguiente diagrama detalla la arquitectura del UAC.
Para comprender mejor cada componente, revisa la tabla siguiente:
Componente |
---|
Usuario |
El usuario realiza la operación que requieren privilegios |
ShellExecute |
CreateProcess |
Sistema |
Servicio de información de la aplicación |
Elevación de una instalación de ActiveX |
Comprobar el nivel del control deslizante del UAC |
Escritorio seguro habilitado |
CreateProcess |
AppCompat |
Fusion |
Detección del instalador |
Kernel |
Virtualización |
Sistema de archivos y registro |
El control deslizante nunca apagará el UAC completamente. Si lo estableces en No notificarme nunca:
Mantendrá el servicio UAC en ejecución.
Hará que todas las solicitudes de elevación iniciadas por los administradores se aprueben automáticamente sin mostrar un símbolo del sistema del UAC.
Denegará automáticamente todas las solicitudes de elevación para los usuarios estándar.
Importante
Para deshabilitar completamente el UAC, debes deshabilitar la directiva Control de cuentas de usuario: ejecutar todos los administradores en Modo de aprobación de administrador.
Advertencia
Las aplicaciones universales de Windows no funcionarán si el 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 el UAC está activado.
Windows 10 incluye la tecnología de virtualización de archivos y del registro para las aplicaciones que no son compatibles con UAC y que requieren el token de acceso de administrador para ejecutarse correctamente. Cuando las aplicaciones de administración que no son compatibles con el UAC se intentan escribir en una carpeta protegida, como en Archivos de programa, el UAC proporciona su propia vista virtualizada del recurso que está intentando cambiar. La copia virtualizada se mantiene en el perfil del usuario. Esta estrategia crea una copia independiente del archivo virtualizado para cada usuario que se ejecuta la aplicación no compatible.
La mayoría de las tareas de aplicación funcionan correctamente con las características de virtualización. Aunque la virtualización permite que la mayoría de aplicaciones se ejecuten, es una solución a corto plazo, no a largo plazo. Los desarrolladores de aplicaciones deben modificar sus aplicaciones para que sean compatibles tan pronto como sea posible, en lugar de confiar en la virtualización del archivo, la carpeta o el registro.
La virtualización no es una opción en los siguientes escenarios:
La virtualización no se aplica a las aplicaciones que son elevadas y que se ejecutan con un token de acceso administrativo total.
Virtualización solo admite aplicaciones de 32 bits. Las aplicaciones de 64 bits sin privilegios elevados simplemente reciben un mensaje de acceso denegado al intentar adquirir un identificador (un identificador único) de un objeto de Windows. Las aplicaciones nativas de Windows de 64 bits son necesarias para que sean compatibles con el UAC y para escribir datos en las ubicaciones correctas.
La virtualización se deshabilita si la aplicación incluye un manifiesto de la aplicación con un atributo de nivel de ejecución solicitado.
Solicitar niveles de ejecución
Un manifiesto de la aplicación es un archivo XML que describe e identifica los ensamblados en paralelo compartidos y privados a los que una aplicación se debe enlazar en tiempo de ejecución. El manifiesto de la aplicación incluye entradas para fines de compatibilidad de aplicación del UAC. Las aplicaciones administrativas que incluyen una entrada en el manifiesto de la aplicación piden al usuario permiso para obtener acceso 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 el uso de correcciones de compatibilidad de la aplicación. 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 la aplicación. Si la aplicación requiere acceso administrativo al sistema, marcar la aplicación con un nivel de ejecución solicitado de "requiere administrador" garantiza que el sistema identifique este programa como una aplicación administrativa y realice los pasos necesarios de elevación. 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 se escriben en directorios del sistema y claves del registro. Normalmente, en estas ubicaciones de sistema protegidas solo puede escribir 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 los programas. Windows 10 detecta de forma heurística programas de instalación y pide credenciales de administrador o aprobación del usuario administrador para que se ejecuten con privilegios de acceso. Windows 10 también detecta de forma heurística actualizaciones y programas que desinstalan aplicaciones. Uno de los objetivos de diseño del UAC es impedir que las instalaciones se ejecuten sin el conocimiento y el consentimiento del usuario, porque los programas de instalación se escriben en áreas protegidas del sistema de archivos y del 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 "instalar," "configurar" o "actualización".
Los campos de recursos de control de versiones contienen las siguientes palabras clave: proveedor, nombre de la compañía, nombre de producto, descripción del archivo, nombre de archivo original, nombre interno y nombre de exportación.
Las palabras clave en el manifiesto en paralelo se incrustan en el archivo ejecutable.
Las palabras clave en determinadas entradas de StringTable están vinculadas en el archivo ejecutable.
Los atributos clave en los datos de script de recursos están vinculados en el archivo ejecutable.
Existen secuencias dirigidas de bytes en el archivo ejecutable.
Nota
Las palabras clave y las secuencias de bytes se derivan de características comunes observadas de distintas tecnologías de instalador.
Nota
El control de cuentas de usuario: la detección de instalaciones de aplicaciones y la petición de configuración de directivas de elevación deben estar habilitadas para que la detección del instalador detecte los programas de instalación. Para obtener más información, consulta Configuración de directiva de seguridad de Control de cuentas de usuario.