UAC es una arquitectura de múltiples componentes implementada por múltiples binarios
El Control de cuentas de usuario (UAC) se refiere a varios componentes que juntos forman la arquitectura UAC . Revisaré brevemente algunos de ellos junto con los binarios responsables de su implementación, pero primero aquí hay una descripción general de la arquitectura UAC del artículo de Microsoft Docs Cómo funciona el Control de cuentas de usuario :
Autoridad de seguridad local (LSA) / Token filtrado
Conceptualmente, el "primer" componente de UAC es implementado por el subsistema de la Autoridad de Seguridad Local que maneja la creación del Token de acceso de un usuario durante el proceso de inicio de sesión. A partir de Windows Vista, el proceso de inicio de sesión se modificó de modo que cuando un administrador inicia sesión con UAC habilitado, el subsistema LSA genera dos tokens de acceso separados para el usuario:
- Uno con acceso de administrador completo, y
- Un segundo "token filtrado" con acceso de usuario estándar
Como se muestra aquí, este proceso es diferente al de un inicio de sesión de usuario estándar:
El servicio del subsistema LSA vive en el lsass.exe
proceso.
Virtualización
Agregado en Windows 7, la virtualización de archivos y registros es un componente de UAC que calza las aplicaciones más antiguas que no son compatibles con UAC pero solo requieren derechos administrativos para acceder a ciertas áreas protegidas del sistema de archivos o registro:
Cuando una aplicación administrativa que no es compatible con UAC intenta escribir en un directorio protegido, como Archivos de programa, UAC le da a la aplicación su propia vista virtualizada del recurso que está intentando cambiar. La copia virtualizada se mantiene en el perfil del usuario.
Fuente
Al redirigir estos intentos de acceso a áreas que no requieren permisos de administrador, estas aplicaciones continúan funcionando a pesar de que UAC está habilitado en el sistema.
Esta virtualización se implementa en el Kernel .
Servicio de información de aplicaciones
El Servicio de información de aplicaciones (AIS) lee el manifiesto de una aplicación y trabaja con la solicitud de consentimiento de UAC para determinar si una aplicación puede ejecutarse con derechos elevados (es decir, comenzar en el contexto del token de acceso de nivel administrativo no filtrado creado al iniciar sesión) . Esta publicación de blog ofrece una buena descripción de su papel en el proceso de UAC:
AIS facilita la ejecución de aplicaciones interactivas con privilegios administrativos adicionales. Si se detiene este servicio, los usuarios no podrán iniciar aplicaciones con los privilegios administrativos adicionales que puedan requerir ... El shell verifica con este servicio cuando inicia una aplicación. AIS es el que lee el manifiesto y la sección xml 'trustInfo' que tiene los requisitos para el 'nivel de ejecución solicitado' ...
Aquí hay un gráfico que sigue la cita anterior que detalla el papel de AIS en el proceso de solicitud de consentimiento de UAC:
El AIS se implementa en la DLLappinfo.dll
ejecutada por svchost.exe
.
Aviso de consentimiento
La respuesta de @ BenN explica el papel clave de la (in) famosa solicitud de consentimiento de UAC. Esto se implementa consent.exe
y es responsable de obtener el consentimiento del usuario o las credenciales de un usuario administrativo para permitir el lanzamiento de una aplicación que requiera derechos de administrador.
Escritorio seguro
El Escritorio seguro es donde se muestra la solicitud de consentimiento de UAC de forma predeterminada. El UACBlog de Microsoft nos dice qué tiene de especial este Escritorio en comparación con el Escritorio del Usuario:
Comúnmente interactúa con [el Escritorio seguro] cuando inicia sesión en Windows ya que la IU de inicio de sesión se ejecuta en el Escritorio seguro. La principal diferencia del Escritorio seguro del Escritorio del usuario es que solo los procesos confiables que se ejecutan como SYSTEM se pueden ejecutar aquí (es decir, nada que se ejecute como nivel de privilegio del Usuario) y la ruta para llegar al Escritorio seguro desde el Escritorio del usuario también debe ser confiable a través de Toda la cadena.
La idea detrás de usarlo cuando se solicita el consentimiento del usuario para ejecutar una aplicación con permisos elevados es que el malware no puede imitar el Escritorio seguro a menos que ya tenga derechos administrativos, en cuyo caso engañar a un usuario para que se los otorgue es discutible.
Conclusión: UAC no es solo un binario. Es un tejido de subsistemas entrelazados.
Todavía hay otros aspectos de la arquitectura UAC que no se tratan aquí, pero esto debería proporcionar evidencia suficiente de los hechos que:
- UAC no se implementa en un solo binario.
- Si está habilitado, es una parte integral de la realización de tareas administrativas.
Desde su introducción en Windows Vista, se ha integrado profundamente en partes clave del sistema operativo, por lo que no es factible eliminar todo el código responsable de UAC sin romper otras cosas (como su capacidad para iniciar sesión).
Creo que es seguro decir que si "eliminas por la fuerza" UAC, romperías Windows.