Search for in Google by Dino

Google Custom Search

miércoles, 29 de noviembre de 2006

Conocer el control de cuentas de usuario

Por Mark Minasi, BA, Master en Ciencias, MPh, MCSE

Conocerlo es amarlo... o, por lo menos, comprenderlo
De todas las muchas funciones de Windows Vista, la que casi todos simplemente odian es el Control de cuentas de usuario (UAC). Admito que al principio también me irritaba, pero ahondar un poco sobre cómo funciona y reflexionar sobre la realidad de las redes actuales, me hizo interesarme. En este artículo, lo invito a ponerse el casco de minero, poner algunas pilas nuevas en su lámpara más luminosa y permítame llevarle a niveles más detallados para mostrarle un poco de cómo funciona el UAC.

El UAC es una grupo de tecnologías diseñadas para ayudarle a ejecutar Windows® sin privilegios de administrador, de manera ideal con una cuenta de usuarios estándar. La mayoría concuerda en que es una buena idea y los administradores de informática apreciarán poder reducir los permisos en sus PCs. La controversia surge de una función llamada Modo de aprobación del administrador, que ejecuta sus programas con permisos estándar del usuario por predeterminación, y lo alerta en caso de iniciar un programa que requiere permisos de administrador; incluso si usted es un administrador.

No voy a intentar convencerle de que el Modo de aprobación del administrador es una buena idea, aunque considero que lo es; ya he escrito esa parte en algún otro lugar. Si desea saber por qué creo que finalmente es bueno para todos nosotros, eche un vistazo al artículo en http://www.windowsitpro.com/Article/ArticleID/93358/93358.html (en inglés).
El Control de cuentas del usuario utiliza una capa de programas que cambia la manera en que Windows crea el token de seguridad que obtiene después de iniciar sesión para que esté más consciente de cuándo está haciendo cosas que pueden arriesgar su sistema. En pocas palabras, básicamente realiza dos cosas:

•Cuando iniciaba sesión en una versión de Windows anterior a Windows Vista, recibía un token que contenía todos sus grupos y privilegios. Windows Vista cambia eso debido a que bajo algunas circunstancias crea dos tokens por usted: un token administrativo que guarda todas sus membresías y privilegios de grupo, y un token estándar de usuario que contiene un subconjunto de baja potencia de sus membresías y privilegios de grupo.

•Siempre que inicia un programa, ese programa tal vez necesite realizar acciones que requieren el token administrativo con toda la potencia o, como es el caso para la mayoría de los programas, la aplicación puede funcionar sin ningún problema utilizando sólo su token de usuario estándar de baja potencia. UAC adivina qué token requiere este programa y, si adivina que el programa necesitará un token administrativo, envía un cuadro de diálogo llamado "Interfaz de consentimiento" preguntándole si en realidad intentó asumir sus poderes administrativos para este programa

De nuevo, el punto de Modo de aprobación del administrador es generar conciencia en las personas de cuándo hacen cosas que pudieran dañar su sistema. Cuando es más útil, es en esos momentos en que un usuario qué está leyendo un correo electrónico o navega en Internet mientras inició sesión como administrador, hace clic en lo que parece un hipervínculo o archivo adjunto inocente, sólo para encontrarse con la Interfaz de consentimiento. Ese es el tipo de pista que, según esperan los diseñadores de UAC, puede evitar que alguien instale sin querer el rootkit du jour.

Avancemos a un mayor nivel de detalle. ¿Qué constituye un "administrador", una cuenta que necesita dos tokens a los ojos de UAC? ¿Qué tipos de grupos y privilegios elimina UAC del token estándar del usuario? Y, ¿cómo adivina UAC si algún proceso que intenta iniciar necesita su token de administrador o si puede obtener el token estándar de usuario? Eso es lo que vamos a examinar en el resto de este artículo.

¿Cómo están hechos los administradores?
Al diseñar UAC, Microsoft calculó que de los 34 privilegios posibles y muchas membresías de grupo que puede tener una cuenta de usuario de Windows Vista, nueve privilegios y cuatro grupos confieren la capacidad de hacer cierto tipo de daño a un sistema. Los “Nueve notorios” privilegios (como yo los llamo) son:

•SeCreateTokenPrivilege, crear nuevos tokens de Windows
•SeTcbPrivilege, "actuar como parte del sistema operativo" – esencial para una operación RunAs-like
•SeTakeOwnershipPrivilege
•SeLoadDriverPrivilege
•SeBackupPrivilege
•SeRestorePrivilege
•SeImpersonatePrivilege
•SeRelabelPrivilege, el privilegio para cambiar una etiqueta de integridad de Windows (nuevo en Windows Vista)
•SeDebugPrivilege, el privilegio para ver dentro de los procesos de otras personas
Los “Cuatro grupos temibles” son todos grupos locales integrados:
•Administradores
•Operadores de respaldo
•Operadores de configuración de la red
•Usuarios avanzados

Los primeros tres grupos confieren claramente algunos de los Nueve privilegios notorios, de ahí su inclusión; veremos por qué los Usuarios avanzados están ahí en un momento. Si UAC observa que su cuenta tiene ya sea uno de los Nueve privilegios notorios o las membresías del grupo de los Cuatro temibles, durante el inicio de sesión su cuenta obtendrá dos tokens.

Crear el token de usuario estándar
El token administrativo es sencillo: contiene su ID de seguridad (SID), las SIDs de sus membresías de grupo, sus privilegios y una etiqueta de Control de integridad de Windows de “alto”. (WIC es otra parte interesante de la seguridad de Windows Vista, pero es un tema diferente, y amplio, por lo que no puedo cubrirlo en este artículo). El token de usuario estándar es, en contraste, un tanto más complejo de desarrollar. Contiene:

•Su SID, como antes
•Una etiqueta de Control de integridad de Windows de “medio”
•Todos sus privilegios que no son miembros de los Nueve notorios
•Todas sus membresías de grupo que no son miembros de los Cuatro temibles
•Todas sus membresía de grupo de los Cuatro temibles, excepto que son membresías de “sólo rechazo”

Ese último punto requiere más explicación. Es posible, aunque no común, que Windows incluya una entrada de control de acceso, un "permiso" que confiere un "rechazo" más que un "permiso". Los tokens de usuario estándar los contienen. Por ejemplo, supongamos que inicio sesión en un cuadro de Windows Vista con una cuenta que fue miembro de Usuarios avanzados. Recibiría un token de usuario estándar que incluiría el grupo Usuarios avanzados para “sólo rechazo”. Si después intentara acceder a algo sobre lo que los Usuarios avanzados tuvieran control total, mi intento fracasaría debido a que estaría utilizando mi membresía de grupo de Usuarios avanzados en un modo “permitir” en lugar de un modo “rechazar”, y no puedo obtener un “permitir” de Usuarios avanzados en el token de usuario estándar. Si, en contraste, intentara con mi token de usuario estándar acceder a un archivo que mantuviera una entrada de control de acceso que especificara Usuarios avanzados/rechazar todo, se negaría el acceso a ese archivo. En resumen, las membresías de grupo “sólo rechazar” confieren todas las desventajas de ser un miembro de un grupo, sin ninguna de las ventajas.

Cómo elige UAC qué token utilizar
En este momento, inició sesión con el token de administrador y con el token de usuario estándar. Va a iniciar un programa y, como siempre, Windows debe adjuntar su token a ese programa como parte del proceso para iniciarlo. Ahora, una vez que Windows ha adjuntado un token a un programa, no hay manera de “inyectarle algo más” a éste posteriormente; el inicio del programa es el momento para decidir si el programa puede vivir con el token de usuario estándar o debe tener un token de administrador. Si UAC lo supone de manera errónea, fracasará al intentar hacer algo sólo para enfrentar algún tipo de mensaje irritante de "acceso denegado", por lo que es importante que UAC lo suponga correctamente. Para asegurarnos de que UAC suponga de manera correcta, Windows Vista proporciona seis maneras de identificar una aplicación que requiere "elevación”, la frase breve para "necesita el token de administrador”. UAC le preguntará si puede elevar un programa si:

•Inicia la aplicación al hacer clic con el botón alterno en su icono y al elegir “Ejecutar como administrador”.
•Marca la aplicación que necesita elevación al hacer clic con el botón alterno en su icono, y al seleccionar Propiedades, y luego hacer clic en la pestaña Compatibilidad en la página Propiedades y seleccionar el cuadro marcado como “Ejecutar este programa como un administrador”.
•La aplicación está marcada como que necesita credenciales administrativas con un “archivo manifiesto" incrustado externo.
•UAC adivina que el programa se encuentra en un programa de instalación.
•El Asistente de compatibilidad del programa marca la aplicación que necesita elevación para poder ejecutarse.
•El Kit de herramientas de compatibilidad de la aplicación marca la aplicación que necesita elevación para poder ejecutarse.

Las dos primeras se explican por sí mismas. La tercera se refiere a agregar un archivo de texto XML corto, ya sea dentro de un archivo .exe o dentro del mismo directorio que el archivo .exe que indica varias cosas al sistema operativo. Los manifiestos aparecieron primero en Windows XP, donde los desarrolladores podían utilizarlos para señalar al sistema operativo que sus aplicaciones no debían recibir efectos de tema Windows XP como ventanas esquinadas. Windows Vista amplió este uso de un archivo de manifiesto al permitir que los desarrolladores marquen un ejecutable como que requiere elevación o, en realidad, marquen que la aplicación no necesita elevación, pero está consciente de Windows Vista.

La cuarta se refiere a un conjunto de heurísticas, reglas generales que UAC utiliza para identificar archivos .exe que en realidad son programas de instalación para otros programas. Si un archivo .exe no es marcado con un manifiesto consciente de Windows Vista e incluye las palabras “setu”, “instal” o “update” en su nombre, UAC asume que es un programa de instalación y por lo tanto solicita elevación. Puede intentar esto al copiar un archivo como calc.exe desde una copia de Windows XP a una máquina de Windows Vista y renombrar posteriormente el archivo como “setup.exe” y ejecutarlo. UAC también puede reconocer archivos .exe que son paquetes de instalación creados por InstallShield o por Wyse Installer.

El Asistente de compatibilidad de programas (PCA) es una aplicación de ayuda que observa cómo se ejecutan los programas del instalador anteriores a Windows Vista y, si aparentemente fallan, le muestra una ventana emergente y le solicita comparar si realmente fallaron. Si así fue, le pedirá que los vuelva a ejecutar de nuevo con configuraciones diferentes. Usted puede ver el PCA en acción al realizar el ejemplo que sugería arriba y, cuando UAC le pregunte si puede ejecutar el programa falso "setup.exe", dígale que permita el programa. Una vez que se está ejecutando Windows XP Calc, ciérrelo y aparecerá PCA. Bajo algunas circunstancias, PCA verificará en esencia el cuadro “Ejecutar este programa como un administrador” en una pestaña de Compatibilidad del archivo .exe, causando elevación en las ejecuciones subsecuentes.

Por último, Microsoft ha realizado mucho trabajo desde que salió Windows XP para crear un conjunto de "compensaciones" de tiempo de ejecución, arreglos inmediatos pueden permitir una aplicación, que tal vez no podría ejecutarse bajo Windows XP, Windows Server 2003 o Windows Vista, se ejecute con la asistencia de esas compensaciones. Uno, por ejemplo, es una función de UAC en la que no contamos con el espacio para cubrirla aquí, "virtualización del archivo y del Registro". (Esta herramienta inteligente permite que las aplicaciones que insisten en escribir en lugares como System32 y HKEY_LOCAL_MACHINE\SOFTWARE funcionen bien sin privilegios administrativos, debido a que la virtualización remite de manera invisible las operaciones de escritura y lectura para que la aplicación piense que ha tenido éxito al escribir a un área protegida, aunque no haya sido así). Microsoft ha analizado literalmente miles de aplicaciones, ha recopilado notas sobre cuáles compensaciones necesita cada una de estas aplicaciones antiguas y ha empacado todo esto en un archivo llamado sysmain.sdb, que se envía con cada una de las copias de Windows Vista. Una de esas compensaciones es una observación sencilla de que “esta aplicación no va a funcionar a menos de que sea elevada” y, si UAC encuentra esa configuración para una aplicación dada, intentará elevar esa aplicación.
Este artículo no cubre la totalidad de UAC, es obvio. Espero que les haya proporcionado una visión más clara que le simplifique el comprender cómo funciona UAC y por lo tanto le sea más fácil aprender a quererla. ¡Desactivar UAC no es la manera de hacerlo!

Mark Minasi publica la Página gratuita de Tecnología de red de Windows de Mark Minasi y celebra un foro de soporte técnico en www.minasi.com. Es autor de 25 libros sobre computación, redes y seguridad, incluyendo el próximo Administrar la seguridad de Vista: Las Grandes sorpresas y Perfeccionarse en Windows Vista. También es columnista desde hace mucho de la revista Windows IT Pro. Lo puede contactar en help@minasi.com.

No hay comentarios.: