UAC en Windows 7

30 01 2009

Una de las nuevas caracteristicas de Windows 7 es la capacidad de finalmente poder configurar la User Account Control (UAC), esa infame y molesta ventanilla introducida en Windows Vista para mejorar la seguridad.

Como Windows no puede diferenciar entre un usuario haciendo click sobre un botón y un programa haciendo click sobre un botón, la UAC fue implementada inicialmente para siempre advertir al usuario via una ventana de dialogo mostrada en un Escritorio Seguro (Secure Destop), similar a la pantalla de inicio de sesión, sobre cualquier cambio en la configuraión del sistema.

Windows 7, sin embargo, ahora incluye la posibilidad de configurar UAC para ocultar estos – molestos a veces – avisos cuando los usuarios cambien configuraciones de Windows. Mientras que este modo aun asegura que las aplicaciones normales no puedan sobreescribir completamente alguna llave del registro, Microsoft ha permitido que los usuarios cambien cualquier configuración de Windows sin ningún aviso advirtiendo de aquello. Sí, incluso se puede cambiar la configuración de UAC – desactivar – de tal modo que Windows no advierta nunca al usuario de estos cambios que se están llevando a cabo en el sistema =O – en realidad en Windows Vista también se puede desactivar, pero nadie lo hace extrañanamente xD -, permitiendo así a las aplicaciones “reinar libremente” en el “modo elevado”.

Pero ¿qué tan dificil es pasar por alto o en otras palabras desactivar la UAC para afectar de alguna forma el normal funcionamiento de Windows?. Windows distingue entre un programa modificando la configuración del sistema y el mismo Windows modificando la configuración mediante un certicado de seguridad. Las aplicaciones que pueden cambiar la configuración del sistema están firmadas con un certificado especial de seguridad. Así, las distintas opciones dentro del panel de control de Windows están, de hecho, firmadas con este certificado y por lo tanto no advierten al usuario si este cambia alguna configuración del sistema.

El talón de Aquiles de todo esto, es que cambiando la configuración del UAC también estamos “cambiando la configuración de Windows”, y de acuerdo al nuevo nivel de seguridad de UAC, Windows no advertirá de tal cambio. Incluso el desactivar por completa la UAC no producirá ninguna advertencia al usuario de tal acción. Así un simple script o programa desarrollado en algún lenguaje puede acceder a desactivar por completo y sin que el usuario sepa la UAC mediante el uso de algunos metódos como SendKeys,Run

El código puede ser visto en withinwindows

Hasta ahora la explicación dada por Microsoft ha sido que esta es una caracteristica hecha “por diseño” y que no será cambiada por ahora. Una solución obvia para esto sería forzar el ajuste de la configuración de la UAC fuera confirmado por el usuario mediante el ingreso de la contraseña de administrador tal como ocurre en Linux o simplemente mantener la configuración del UAC en su valor por defecto o no desactivarla completamente para evitar problemas.

En Windows Vista para desactivar/activar la UAC podemos crear 2 archivos .bat.

Para desactivar la UAC:

Usamos un editor de texto simple como notepad o notepad2, creamos un nuevo archivo de texto y escribimos:


%windir%\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
pause

  • Guardamos el archivo como:
      Tipo : Todos los archivos
      Nombre: DesactivarUAC.bat
      Click derecho sobre el archivo y seleccionamos “ejecutar Como Administrador”
      Reiniciamos Windows
  • Para activar la UAC:

    Creamos un nuevo archivo de texto y escribimos:


    %windir%\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f
    pause

  • Guardamos el archivo como:
      Tipo : Todos los archivos
      Nombre: ActivarUAC.bat
      Click derecho sobre el archivo y seleccionamos “ejecutar Como Administrador”
      Reiniciamos Windows