domingo, febrero 26, 2006

Un almacén especial

Los sistemas NT como Windows 2000 o Windows XP disponen de un almacén de recursos de elementos de escritorio que en cierta medida supone una limitación del número de ventanas, menús o incluso servicios que se pueden ejecutar simultáneamente en Windows. Es lo que se conoce como desktop heap.

Dada la arquitectura y complejidad del shell de Windows, dentro de su subsistema gráfico reina una necesaria jerarquía: Existen estaciones de ventana, cada una de las cuales puede contener un cierto número de escritorios (o incluso no contener ninguno). A cada uno de estos escritorios (nótese que el concepto va más allá del espacio donde se sitúa un fondo de pantalla y unos iconos) se le asigna un montón (heap) donde almacenar cadenas, imágenes, menús, manejadores, etc. En total los montones de escritorio (desktop heaps) de un sistema Windows no pueden exceder los 48 MB.

En Windows existen las siguientes estaciones de ventana:

  • Winsta0: Es una estación de ventana interactiva, lo que quiere decir que cualquier elemento o servicio que se sitúe en ella podrá mostrar información visual y recibirla. En esta estación de ventana por defecto hay tres escritorios creados: Winlogon, encargado del inicio de sesión, Default, al que se "adhieren" por defecto todos los procesos y servicios iniciados por el usuario (los que interactúen con el escritorio) y Screen-saver, que se crea cuando el salvapantallas entra en funcionamiento.

  • Service-0x0-3e7$: Es una estación de ventana no interactiva, por lo que los procesos, servicios, etc. que se situén en ella no podrán mostrar una interfaz gráfica.

Diagrama simplificado de las estaciones de ventanas y escritorios del subsistema gráfico de Windows

Nota: Dispone de más información sobre las APIs CreateWindowStation y CreateDesktop (CreateDesktopEx) en los siguientes enlaces: CreateDesktop/CreateDesktopEx, CreateWindowStation.

Cada escritorio, según pertenezca a una estación interactiva o no interactiva tiene un tamaño máximo del heap asignado desde el Registro de Windows, concretamente en la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems (valor Windows de la parte derecha):

Si modifica el segundo y el tercer parámetro de la cadena SharedSection=, el sistema podrá almacenar más recursos de escritorio en estaciones de ventana interactivas y no interactivas, respectivamente. Esto se consigue a costa de reducir el número de escritorios que se puedan generar en el sistema.

Nota: Los cambios requieren un reinicio del sistema operativo para que surtan efecto.

¿Y qué ocurre cuando se alcanza el límite del almacén? Cuando se alcanza el límite o bien le aparecerá en pantalla algún error referenciando a User32.dll (o Kernel32.dll) o bien se encontrará con un sistema gráficamente inservible. Eche un vistazo al siguiente vídeo que he realizado y que demuestra esto: Vídeo.

Nota: Si dispone de una conexión lenta a Internet quizá le venga mejor descargar el vídeo. Para ello seleccione el enlace con el botón derecho del ratón y pulse sobre Guardar destino como (Internet Explorer).

En el vídeo se ve que voy abriendo intempestivamente instancias de Internet Explorer. El sistema con pocas ventanas se comporta adecuadamente (vea que puedo acceder al menú contextual sin problemas), pero cuando llego a abrir 56 ventanas observará que no puedo abrir ninguna más, que los menús contextuales de la barra de tareas no llegan siquiera a mostrarse y que la última ventana sólo muestra el icono estándar de Internet Explorer, los menús no se muestran . Hemos llegado a un punto en el que la interfaz gráfica de Windows ha quedado "inutilizada" por alcanzar el máximo del almacén de recursos del escritorio.

Nota: Los sistemas de 64 bits como XP Professional x64 disponen de un tamaño de desktop heap bastante elevado, por lo que no existe el riesgo de agotarlo. Además, la clave de Registro mencionada anteriormente no es tenida en cuenta si en el fichero Boot.ini existe el parámetro /3GB.

sábado, febrero 18, 2006

¿Qué nos traerá Windows Vista? ¿Merecerá la pena actualizarse?

En este artículo presentaré las principales mejoras que se encontrará el usuario final que se actualice a Windows Vista desde el momento en que esté disponible en el mercado (mediados-finales de este año). Este es el primero de los artículos sobre Windows Vista que espero exponer por aquí.

Graficamente, ¿qué nos vamos a encontrar?

Aún es pronto para definir una experiencia visual que se incorpore a la versión final de Windows Vista, pero podemos vislumbrar algunas novedades notables, la más destacada es Aero:

Aero, el nombre de código de la nueva interfaz gráfica de Windows Vista, supondrá una importante mejora con respecto a la interfaz gráfica de los sistemas Windows anteriores. Aparecen efectos 3D (como la capacidad de moverse entre ventanas usando la rueda del ratón), nuevas animaciones, instantáneas gráficas de las ventanas abiertas tanto en la barra de tareas -aparecen al dejar el puntero del ratón sobre cada una de ellas- como pulsando la combinación Alt+Tab, y transparencias visuales. Todo ello aprovechable por una nueva generación de controladores gráficos, llamados LDDM (Longhorn Display Driver Model), que deberán estar sustentados por hardware gráfico relativamente moderno. Consulte la web del fabricante de su tarjeta gráfica para obtener más información sobre compatibilidad con Windows Vista. No obstante existirán varios "niveles" de configuración de la interfaz gráfica, con el fin de adaptarse a aquellos sistemas gráficos relativamente antiguos.

¿Qué tal la facilidad de uso de Windows Vista?

La curva de aprendizaje para un usuario medio que provenga de Windows XP es suave. Se mantiene la idea de Windows XP con ciertas novedades, como una mayor organización del Panel de control, tareas intuitivas a la vista, menús menos reconcentrados de opciones, etc. Además el nuevo menú Inicio, desde el que podrá hacer todo lo que realiza ahora mediante la opción Ejecutar, ahorrará bastante tiempo a la hora de realizar ciertas tareas rutinarias en el PC.

¿Es estable Windows Vista? La arquitectura interna cambia de manera considerable

Windows Vista parte de la base de Windows XP, así que es de esperar que mantenga la estabilidad que ha hecho gala este sistema operativo durante años. Además se introducen cambios importantes:
  • El subsistema gráfico de Windows Vista ya no está incorporado en el modo kernel (núcleo), como sí lo estaba en Windows XP; ahora todo este subsistema se ha "movido" al modo user (usuario). Esto supone que un fallo gráfico no nos dejará "colgado" el sistema operativo, algo que sí podía ocurrir en Windows XP cuando se usaban controladores gráficos mal diseñados u obsoletos.

  • Lo mismo sucede con el subsistema de sonido de Windows. Ahora los controladores de sonido actuarán en modo user en lugar de en modo kernel.

Esto tiene como consecuencia una clara mejora en la estabilidad del sistema, pero obligará a los fabricantes de hardware a diseñar "de otra manera" sus controladores. Veamos cómo se van adaptando durante este tiempo hasta que aparezca la versión final del sistema operativo.

¿Es compatible con las aplicaciones más antiguas?

El nivel de compatibilidad con aplicaciones es similar al de Windows XP, con puntualizaciones: Durante la beta se han ido encontrado bastantes problemas menores con aplicaciones, problemas que afortunadamente se van solucionando progresivamente. Además, el fabricante de software va a tener que adaptarse a un entorno que por defecto no gozará de privilegios administrativos, quizá este sea un escollo para las aplicaciones más antiguas, veremos qué pasa según avanza el periodo beta. No obstante, Microsoft ha pensado en ello, siga leyendo.

¿Es seguro? ¿Qué es eso de que no va a funcionar por defecto como administrador? ¡Quiero instalar mis programas fácilmente!

Seguramente esta es la pregunta que más se ha formulado cuando ha oído hablar de UAP (User Account Protection), que supone que el usuario que inicie sesión en Windows Vista (aunque lo haga como administrador local) no obtendrá efectivos privilegios administrativos.

Cuando UAP esté activado y el usuario haya iniciado sesión con un usuario con privilegios administrativos realmente estará trabajando en un entorno limitado (es lo que Microsoft denomina Administrator Approval Model (modelo de aprovación del administrador, en español). Cuando quiera realizar una tarea que realmente requiera privilegios administrativos (señaladas de manera especial en la interfaz gráfica), se le pedirá una confirmación. Esto supone que el usuario dispone de privilegios limitados para realizar sus tareas cotidianas (leer el correo electrónico, navegar por Internet...) mientras que puede en cualquier momento realizar una tarea administrativa de manera cómoda y sencilla.

Además, los usuarios limitados disponen de algunos privilegios más de los que tenían en Windows XP (para realizar tareas que no supongan riesgos: mostrar el panel Fecha y hora, cambiar la zona horaria, entre otras).

¿Y las aplicaciones antiguas que no "saben" trabajar en entornos limitados? Microsoft ha ideado una virtualización del sistema de archivos y del Registro para que las aplicaciones de este tipo funcionen correctamente. Por ejemplo, cuando una aplicación quiera escribir en la rama del Registro HKEY_LOCAL_MACHINE (rama en la que los usuarios limitados no pueden escribir), Windows le "virtualizará" una copia de la rama que desee en su propio espacio operativo (más restringido), así pues la aplicación seguirá funcionando correctamente sin escribir en áreas críticas del sistema operativo. Durante la beta he comprobado que este método funciona bastante bien con las aplicaciones que he probado.

Como conclusión decir que Windows Vista es un sistema prometedor. Aún se le observan ciertas carencias propias de una versión beta, pero confiamos en que Microsoft presente un sistema maduro y confiable (se retrasará el lanzamiento final si hace falta). En poco tiempo aparecerá la versión Beta 2, que se supone "cerrada" en cuanto a características que se incorporen al producto final, así que esperamos acontecimientos con ilusión.

Este es un primer adelanto sobre lo que se encontrará con Windows Vista. Quedan bastantes temas por tratar y algunos en los que deseo detenerme más. Si el NDA de las posteriores builds de Vista me lo permite intentaré comentar algo más sobre el nuevo sistema operativo según vaya avanzando su desarrollo, y mostraré capturas de pantalla para que vea cómo se muestra al usuario el nuevo sistema.

Espero que les haya parecido interesante.

martes, febrero 14, 2006

Actualizaciones de febrero de 2006 y Windows Defender (Beta 2)

En este artículo comento cuáles son las actualizaciones de seguridad correspondientes a febrero de 2006 así como la aparición de la Beta 2 de Windows Defender, el sucesor de Microsoft AntiSpyware. Sería aconsejable que visitara Microsoft Update (http://update.microsoft.com/microsoftupdate) para descargar las actualizaciones en este mismo momento.

Hay disponibles 7 nuevas actualizaciones de seguridad correspondientes al mes de febrero de 2006:

Críticas

- 910620

- 911565

Importantes

- 911564

- 913446

- 911927

- 901190

- 889167

Nota: Es muy probable que no todas las actualizaciones antes citadas sean aplicables a su sistema operativo y/o a las versiones de las aplicaciones que tenga instaladas. Visite Microsoft Update para que sólo se descarguen las actualizaciones apropiadas para su sistema o lea detenidamente los boletines de seguridad que acompañan a cada actualización. En las páginas que enlazo desde aquí también encontrará información detallada para saber si una cierta actualización está instalada en su sistema o no.

Para obtener información detallada sobre el boletín mensual en su conjunto visite la siguiente web de Technet: Resumen del boletín de seguridad de Microsoft de febrero de 2006.

Por otra parte está disponible para descarga pública la versión Beta 2 de Windows AntiSpyware (ahora Windows Defender), la aplicación de Microsoft contra los ficheros espía que casi con total seguridad vendrá incorporada en Windows Vista. El enlace para su descarga es http://www.microsoft.com/downloads/details.aspx?FamilyID=435bfce7-da2b-4a6a-afa4-f7f14e605a0d&DisplayLang=en (requiere validación).

Por ahora sólo está disponible en inglés, se espera que en poco tiempo salgan las versiones en alemán y japonés (a las que personalmente realizaré bastantes pruebas).

Nota importante: Parece ser que hay ciertos problemas durante la instalación en sistemas traducidos a otro idioma que no sea el inglés. En concreto le puede aparecer el error 1609 durante la instalación. Para evitar este error descargue la última versión disponible en la página http://www.microsoft.com/downloads/details.aspx?FamilyID=435bfce7-da2b-4a6a-afa4-f7f14e605a0d&DisplayLang=en.

domingo, febrero 05, 2006

Navegar por Internet con una cuenta administrativa es "mortal"

En este comentario de la bitácora explico un experimento que realicé y que demuestra que un sistema que navegue por Internet desde una cuenta administrativa está completamente desprotegido.

En primer lugar, describo la primera prueba:
  • Sistema Windows XP SP2 sin la actualización de seguridad para la vulnerabilidad WMF.
  • Cortafuegos, antivirus y antiespías activados y residentes (probados modelos de varios fabricantes).
  • Cuenta administrativa dispuesta a acceder a Internet.
  • Internet Explorer 6 SP2.

Ya sabrá que no es difícil encontrar por Internet páginas maliciosas que hagan uso de la ya corregida vulnerabilidad WMF; por lo tanto, con el sistema antes descrito, me dispuse a acceder a una de ellas. Los efectos aparecieron rápidamente:

Primeramente apareció automáticamente un cuadro de diálogo de descarga de un fichero con extensión WMF. No fue posible cerrarlo a tiempo y el Visor de imágenes y fax de Windows XP se abrió sin mostrar ninguna imagen ni nada en especial. Abrí el Administrador de tareas, pestaña Procesos y encontré ciertos procesos bastante extraños que, al intentar matarlos, aparecían de nuevo. En menos de un minuto el primer síntoma visual, un globo de texto de XP con el siguiente mensaje: "Your computer is infected!", simulando ser legítimo del Centro de seguridad de XP SP2. Además, aparecieron ciertos accesos directos en el escritorio que supuestamente enlazaban con páginas de eliminación de malware. Los procesos de tanto el antivirus como el analizador de ficheros espía fueron eliminados de la memoria. De todas formas al pasarlos por el sistema o bien no detectaban malware o bien no eran capaces de eliminarlo.

La herramienta Autoruns (http://www.sysinternals.com/Utilities/Autoruns.html) mostraba que ficheros como Mscornet.exe (troyano) y otros más de ese estilo arrancaban junto con Windows. Adicionalmente un vistazo a los BHO (Browser Helper Objects) mostraba que se había instalado uno relacionado con la página de inicio de Internet Explorer. Al abrir Internet Explorer me encontré con la típica página about:blank que no haría otra cosa que seguir descargando malware al sistema. El sistema quedó bastante "tocado".

El segundo escenario fue el siguiente:

  • Sistema Windows XP SP2 sin la actualización de seguridad para la vulnerabilidad WMF.
  • Cuenta de usuario limitado dispuesta a acceder a Internet.
  • Internet Explorer 6 SP2.

De nuevo accedí a la página (vea que el sistema sigue siendo vulnerable). Apareció igualmente el cuadro de diálogo de descarga temporal del archivo WMF y el Visor de imágenes y fax se volvió a abrir sin mostrar nada en pantalla. En cambio los procesos no se vieron alterados, la página de inicio de Internet Explorer no fue secuestrada y no había síntomas aparentes de infección. Un análisis con una herramienta contra los ficheros espía mostraba una entrada en el Registro (concretamente en la rama HKCU, única rama donde podía escribir el malware) perteneciente al spyware AdTools. Como ve, la diferencia de impacto es considerable.

En este ejemplo vemos que, cuando existen en la red exploits que se aprovechan de vulnerabilidades aún no corregidas por el fabricante (zero-day exploits), un sistema que navegue con una cuenta limitada recibe un impacto muchísimo menor que un sistema que navegue con una cuenta administrativa. No todas las vulnerabilidades aprovechan los privilegios del usuario que ha iniciado sesión (por ejemplo la vulnerabilidad RPC aprovechada por Blaster/Sasser), pero sí un alto número de ellas. Por ello, le aconsejo que siempre navegue por Internet con una cuenta con los menores privilegios posibles y, obviamente, que mantenga completamente actualizado su sistema Windows desde Microsoft Update (http://update.microsoft.com/microsoftupdate).

Nota: Para eliminar el malware del sistema fue necesario iniciar el sistema en Modo seguro y eliminar manualmente ciertos ficheros maliciosos del directorio System32. Siempre que desee eliminar el malware de un sistema pase las herramientas apropiadas en Modo seguro (pulse F8 antes de que aparezca la pantalla de carga de Windows y seleccione "Modo seguro" en el menú). Esto permite que no haya procesos maliciosos residentes que se regeneren al ser matados o que produzcan errores del tipo "archivo en uso" cuando tratamos de eliminarlos físicamente. Curiosamente -con el sistema iniciado normalmente, no en Modo seguro- un vistazo a la lista de procesos con Process Explorer (http://www.sysinternals.com/Utilities/ProcessExplorer.html) indicaba que, una vez matado cualquier proceso malicioso reaparecía "colgando" del proceso Winlogon.exe (legítimo de Windows y encargado del inicio de sesión).