Bitlocker (V): AES – CBC + Difusor


Como planteé en el anterior post, existen numerosos elementos necesarios aplicar a la hora de determinar un mecanismo de cifrado, y estos deben garantizarse, de tal forma que el acceso a los datos cifrados deben ser controlados, tanto a nivel lógico, como el impedir los ataques que mediante manipulación arbitraria permitiera el acceso aleatorio a los datos y la obtención del mecanismo de cifrado.


Por mecanismos de rendimiento el mejor sistema que se puede emplear para el cifrado de datos de disco es AES-CBC, pero ya advertimos anteriormente el riesgo de posibles ataques al utilizar únicamente este mecanismo. La decisión finalmente establecía la utilización de AES-CBC para la encriptación primaria y una clave difusor independiente para texto plano. Este difusor tiene como objetivo fortificar frente a los ataques de manipulación, mejor que lo que puede realizar de forma única el algoritmo de AES-CBC.


 


 


 


        


 


 Figura 1 – Funciones de cifrado mediante AES-CBC + Difusor


 


La figura anterior describe los mecanismos empleados para el cifrado de los datos. Los datos en texto plano son corred con una clave del sector. Posteriormente se le aplican los difusores y finalmente se encripta con el modo AES-CBC. La clave del sector viene definida por la siguiente función:


 


KS:=E(KSEC, e(s)) || E(KSEC,e’(s))


 


donde E() es la función AES de encriptación, KSEC es la clave utilizada (128 o 256 bits, según lo elegido) y e(s) y e’(s), es la función de codificación utilizada en la capa AES-CBC teniendo en cuenta que e’ es como e solo que el último byte tiene el valor 128. La clave Ks se repite tantas veces como sea necesario hasta completar una clave del tamaño del bloque y se aplica una función corred sobre el texto plano.


 


El uso de dos difusores, muy similares pero aplicados en direcciones opuestas, permite la propiedad de difusión correcta en ambas direcciones. Los difusores vienen determinadas en una función donde intervienen el número de palabras del sector y un operador de 4 constantes (diferentes para cada difusor) en un array que especifica la rotación. Este mecanismo tiene como objetivo minimizar el impacto del cifrado en el rendimiento al utilizar un menor uso de ciclos por segundo para realizar el mismo.


 


Referencias Externas


 


——————————————————-


 


RFC 3602 AES – CBC


 


Algoritmo AES – CBC + Elephant


 


 

Control de Cuentas de Usuario (III)

En estos nuevos posts hablaremos de las posibles configuraciones que permite realizar el Control de Cuentas de Usuarios, para poder adaptarlo a nuestras necesidades.Iremos viendo ante todo los posibles riesgos (no tan graves como deshabilitarlo) que conlleva cada configuración. El administrador no puede conseguir asegurar nunca un sistema operativo al máximo, pero si puede asumir los riesgos que corre.


Las posibles configuraciones del UAC la vamos a dividir en dos grandes grupos, los usuarios estándar y los administradores. Windows Vista nos proporciona la posibilidad de definir su comportamiento de forma independiente a ambos tipos de usuarios. En este post lo dedicaremos a la configuración de UAC para los usuario estándar.


 Configuración de UAC para los Usuarios


Los usuarios estándar no van a poder realizar jamás tareas administrativas con sus credenciales. Pero ¿Qué ocurre si el administrador necesita realizar una tarea administrativa cuando se encuentra bajo la sesión de uno de estos usuarios?. Ante este tipo de situación antes, utilizabamos el comando runas para ejecutar la acción, pero no siempre resultaba lo suficientemente cómodo y rápido.


Ahora mediante políticas (locales o de grupo) vamos a poder definir el comportamiento del UAC, para favorecer la operativa del sistema operativo en el escenario anteriormente descrito. Para ello debemos abrir la política que deseemos configurar y acceder a la directiva que se encuentra en la ruta: Configuración del Equipo –> Configuración de Windows –> Configuración de Seguridad –> Directivas Locales –> Opciones de Seguridad. En dicha ruta existen una directiva con el nombre «Control de cuentas de usuario: Comportamiento del indicador de elevación para los usuarios estándar».



 


Esta directiva proporciona dos posibles configuraciones:



  • Rechaza solicitudes de elevación automáticamente. Esta configuración impide a los usuarios realizar cualquier tipo de tarea administrativa, ya que su usuario no posee privilegio para ello.



 



  • Pedir credenciales. Esta configuración permite proporcionar al usuario nuevas credenciales para realizar la tarea administrativa, dando mayor funcionalidad al equipo a la hora de su administración. Pero nos muestra por defecto todos los nombres de las cuentas que pueden realizar dicha configuración.


Cuidado con esto, ya que nos acabos de saltar uno de los dos niveles de seguridad que tienen la cuentas de usuarios. ¡Ya tenemos el nombre de una cuenta válida, ahora solo nos queda adivinar su contraseña!




 


Estas son las dos posibilidades que nos proporciona Windows Vista a la hora de configurar el comportamiento de UAC con los usuarios estándar (que carecen de privilegios). En el post de la semana que viene (y prometo que sea el viernes) hablaremos de la configuraciones para los administradores.


 


Referencias


Despliegue masivo de Windows Vista con BDD 2007 (II de V)

Para preparar el laboratorio podéis leer el artículo anterior “Despliegue masivo de Windows Vista con BDD 2007 (I de V)”


Una vez instalados todos los componentes y servicios necesarios ya estamos listos para comenzar la preparación de imágenes de Windows Vista y su posterior despliegue en los dos equipos que tenemos (un Windows XP que actualizaremos y un equipo sin OS).


En este laboratorio vamos a utilizar un CD de Windows Vista como imagen de referencia, pero también se puede utilizar un equipo previamente instalado como equipo de referencia.


Lo primero que debemos hacer es iniciar “Deployment Workbench”. Esta aplicación nos va a permitir preparar todo lo necesario para el despliegue. Como observaréis se divide en cuatro nodos: “Information Center, Distribution Share, Builds y Deploy”.


·         El “Information Center” es un centro de documentación y enlaces a recursos Web que podemos utilizar para revisar los procedimientos y tareas de todo el proyecto de despliegue.


Microsoft divide el proyecto en varias claramente identificadas. Estas fases incluyen desde una primera comprobación de compatibilidad de nuestra infraestructura con Windows Vista (hardware y software), hasta la preparación de imágenes, configuración de la instalación de aplicaciones, migración de perfiles de usuario y el propio despliegue en los equipos de destino.


Es una guía muy completa que esta a vuestra disposición y que haciendo clic en cada uno de los íconos podemos acceder a los documentos de procedimientos de cada una de las fases.


 Fases del proyecto de despliegue con BDD 2007


·         El segundo nodo es el recurso compartido de distribución. Es aquí donde tendremos de importar las imágenes WIM de referencia y prepararemos las aplicaciones, actualizaciones de sistema y conjunto de controladores de dispositivos necesarios para nuestros equipos de destino.


·         En el nodo “Builds” veremos nuestras  “construcciones” de imágenes ya preparadas, es decir, una vez copiado y configurado todo el software necesario que se incluirá en Windows Vista durante el proceso de instalación y pasos post-instalación. Para poder crear un “Build” debemos tener al menos un Sistema Operativo configurado en el nodo de distribución.


·         Por último tenemos el nodo “Deploy” en donde crearemos los puntos de despliegue e identificaremos los equipos de destino, ya sea por nombre de máquina, dirección MAC, rol, ubicación y marca y modelo. Todo esto con la ayuda de una base de datos que debemos crear y configurar. Con respecto a los puntos de despliegue, BDD 2007 admite la creación de 4 tipos de despliegue.


a.      Mediante un recurso compartido en el mismo equipo


b.      Mediante un recurso compartido en otro equipo en la red,  por ejemplo un servidor de archivos,


c.       Mediante un medio extraíble, por ejemplo un DVD


d.      Mediante SMS 2003 con OSD


Bien pues una vez conocido esto, ahora llega el momento de importa la imagen WIM desde nuestro DVD de Windows Vista hacia el Distribution Share. Para ello, agregamos un nuevo OS con el asistente. En este laboratorio seleccionamos la primera opción ya que estamos trabajando con el DVD. No es necesario seleccionar la imagen .wim, solo la raíz del DVD, BDD detectará todas las imágenes que contiene el fichero .wim


Copia de archivos de instalación de Windows Vista


Una vez copiados todos los archivos de instalación, tendremos todas las ediciones de Windows Vista disponibles para ver sus propiedades y configurar la que vayamos a instalar en los equipos de destino


El siguiente paso es agregar a nuestra imagen las aplicaciones que se instalarán junto con el sistema operativo. Después veremos que gracias a un secuenciador de tareas podremos configurar el momento en que queremos que se produzca la instalación de las aplicaciones que aquí agregamos.


En este paso podemos agregar desde una pequeña utilidad que nuestros clientes requieren, hasta un sistema completo como Office 2007. Tenemos dos opciones en el asistente: aplicaciones que contienen archivos de origen, es decir, instaladores, archivos de configuración, archivos .cab, ficheros de texto, documentos, etc. Y como segunda opción podemos agregar aplicaciones que no tienen ficheros de origen o que están alojadas en un servidor de archivos.


Asistente para agregar aplicaciones


En la siguiente pantalla del asistente tenemos que indicar el nombre de la aplicación y la plataforma en que puede ejecutarse (x86, x64, IA64 o todas)


Por último seleccionamos la carpeta en donde residen los archivos de instalación de la aplicación y posteriormente los detalles de la instalación, es decir, los parámetros que se le van a pasar al programa de instalación para hacer un proceso automático y desatendido (estos datos varían según la aplicación). Si es un instalador basado en Windows Installer, algunos de los parámetros que podemos utilizar son los siguientes:


·         /q – quiet


·          /n Sin UI


·          /norestart – Sin reinicio


·         /passive – modo desatendido solo con barra de progreso


·         /log – crea un registro de instalación (se debe especificar la ubicación)


De todas formas, si tenéis cualquier duda, estos valores los podéis consultar ejecutando en una consola de comandos el instalador, por ejemplo “miaplicacion.msi /?”


Una vez que tenemos todas nuestras aplicaciones agregadas al recurso de distribución, a continuación haremos lo mismo con las actualizaciones que sean necesarias. Para ello debemos seleccionar con el asistente para nuevo paquete, la carpeta en donde se encuentran los ficheros .cab que contienen la actualización.


Por último, si necesitamos agregar controladores que se instalarán junto con el sistema operativo, lo podemos hacer con el asistente para nuevo controlador. En esta ocasión se buscarán los ficheros .inf  en la carpeta que indiquemos.


Bien, una vez que hemos terminado de agregar componentes a nuestra imagen ya podemos crear el “Build”. El Build se utiliza internamente durante el proceso de despliegue, realmente lo que se hace es unificar todo el contenido que hemos ido agregando en los pasos anteriores.


Necesitaremos identificar el “Build” con un número único, especificar un nombre y agregar algún comentario en el asistente de creación.



Posteriormente seleccionamos la edición de Vista que vamos a desplegar, en este caso seleccionaremos Vista Ultimate.


El asistente nos seguirá pidiendo datos como la clave de producto, nombre de la organización, página de inicio de Internet Explorer y la contraseña de la cuenta Administrador.


Selección de la imágen de Windows Vista


Todos estos datos van a formar parte del archivo de instalación desatendida, el cual podremos configurar y ampliar en un paso posterior utilizando la herramienta Windows SIM (Windows System Image Manager)


Hemos llegado al final de esta segunda parte. En la tercera parte abordaremos la personalización del “Build” que acabamos de crear. Podremos agregar componentes de Windows Vista a la instalación, configurar cada unos de los pasos y utilizar el secuenciador de tareas para incluir nuestros propios scripts de configuración y personalización del entorno.


Hasta entonces, saludos a todos.

Bitlocker (IV): Algoritmos de autentificación para el cifrado de Disco

Cuando se determina la necesidad de implementar un mecanismo para establecer un cifrado, así como el mecanismo para su descifrado tiene que cumplir ciertas normas y criterios para no hacerlo inviable:


         No debe repercutir de forma muy negativa en el rendimiento general en procesos de escritura y lectura.


         Debe ser transparente para los mecanismos de funcionalidad de las aplicaciones con las que trabajamos.


         Debe ser lo suficientemente robusto para evitar ataques mediante ataques de permutación o por manipulación de datos y obtención de resultados en texto plano.


 


A la hora de determinar un sistema de implementación para el cifrado de la unidad de disco para bitlocker, Microsoft tuvo en cuenta determinados factores y evaluó la posibilidad de implementar algunos de estos sistemas de implementación de cifrado. Uno de los elementos que se tuvieron en cuenta es que Bitlocker no debería consistir solamente en un elemento de cifrado, sino que debería garantizar mediante un sistema de autenticación de datos, el evitar que una manipulación de los datos cifrados pudieran introducir una modificación a ciegas, en el código del S.O., provocando una debilidad en el mecanismo de arranque con Bitlocker o para conseguir una escalada de privilegios en el sistema. Además debería evitar el permitir la predicción de la función de cifrado mediante la manipulación de datos cifrados y la obtención de datos en texto plano.


 


Autenticación MAC.


 


El mecanismo natural de implementación de cifrado para evitar estos mecanismos de ataque, es la utilización de MAC (Message Autenthication Code) a cada bloque de datos del disco. El problema que plantea el uso de este mecanismo es que necesitaríamos establecer una reserva de sectores para almacenar el MAC, con lo cual tendríamos un uso limitado en la capacidad de almacenamiento de hasta un posible 50% de almacenamiento. Además bajo las condiciones actuales de implementación de este mecanismo en sistema de altos procesamiento de datos con accesos de lectura y escritura, podremos encontrarnos con problemas de rendimiento o la corrupción de sectores. Si no queremos escribir en sectores x, sin dañar x+1 x-1 en procesos de caída del sistema no controlados o por pérdida de energía, tendremos que tener en cuenta que en el caso de escribir en un sector x el sistema deberá leer el sector, desencriptarlo, encriptarlo y nuevamente escribir todos los sectores que correspondan al bloque. Si falla el sistema cuando se  escriben sectores, en el nuevo bloque pero quedan pendientes otros, entonces todo el bloque puede quedar corrompido.


 


Autentificación de “Poor-man”


 


Este es otro de los posibles mecanismos para la implementación de seguridad que permite generar bloques cifrados con un tamaño entre 512-8192 bytes, de tal forma que una leve modificación en uno de los caracteres del bloque modifica de forma aleatoria todo el bloque. Con objeto de evitar el mecanismo de secuenciación moviendo datos cifrados de un sector a otro sector, se generan cambios del algoritmo para cada sector.


De este forma aunque el potencial atacante tuviera acceso a los datos tanto cifrados como en texto plano, la variedad del mecanismo de secuenciación y los cambios en el algoritmo evitan los mecanismos de predicción del sistema de cifrado.


 


En el siguiente post evaluaremos diferentes mecanismos de cifrado y el mecanismo empleado para Bitlocker: AES-CBC + difusor.


 


 


Referencias Externas


 


——————————————————-


MAC authentication 


 


Cifrado bloques de disco

SuperFetch (IV de IV): ReadyBoost y ReadyDrive

Como todos sabemos, la desventaja de usar el disco duro como memoria virtual es la significativa reducción en las tasa de transferencia con respecto a la memoria RAM, sobretodo si estamos hablando de acceso aleatorio a la información como suele ser el caso cuando hablamos de información de memoria, de esta manera en disco duros modernos tenemos tasas de trasferencia E/S de 80MB/s. en acceso secuencial al disco duro y 1MB/s en el caso de acceso aleatorio (por el movimiento de los cabezales en búsqueda de información), existe no obstante una solución intermedia entre el disco duro y la memoria RAM que nos ofrece una tasa de trasferencia de unos 10MB/s en acceso aleatorio a información.: La memoria Flash.

 

ReadyBoost es un nuevo sistema incluido en Windows Vista que consigue mejorar el rendimiento del equipo haciendo uso de la mayor tasa de transferencia en búsquedas aleatorias y menor latencia de la memoria flash con respecto al disco duro, de este modo podemos usar dispositivos como llaves USB, memorias SD o Compact Flash para guardar información de caché del disco duro.

 

 Popup emergente al conectar la memoria FLASH al equipo

 

Para poder hacer uso de ReadyBoost nuestra memoria flash debe disponer de al menos 235 MB de espacio libre y ser de rápido acceso (es decir, con una tasa de transferencia adecuada como para ser útil como caché). Como podréis ver en las imágenes añadidas, activar ReadyBoost en una memoria USB es tan sencillo como entrar en sus propiedades e indicar que cantidad de memoria deseamos utilizar para esta funcionalidad, esto quiere decir que no tenemos por qué usar todo el espacio de la memoria flash para almacenar información de caché sino que podemos indicar una cantidad determinada de memoria y continuar usando el resto del espacio para nuestros ficheros, aun que no obstante Microsoft recomienda usar una cantidad de memoria 3 veces superior a la RAM para disfrutar de todas las ventajas de esta tecnología. Otra característica de ReadyBoost es el uso de un algoritmo de escritura optimizado para mantener el tiempo de vida de las celdas de la memoria flash, de hecho, gracias a este algoritmo, si usáramos una memoria flash actual exclusivamente para el uso de ReadyBoost su tiempo de vida oscilaría entre 19,4  y 1823 años. Pero ¿y como se protege esta caché de disco de intentos de lectura no autorizados? pues usando el algoritmo de encriptación AES de 128 bits de tal manera que nos aseguramos que el archivo de caché de ReadyBoost (llamado ReadyBoost.sfcache) solo puede ser leído en el equipo que lo generó inicialmente, y todo esto además con un factor de compresión de 1.8X a 2.3X que garantiza un almacenamiento eficiente al poder guardar más información en menos espacio. Por último quedaría añadir que retirar la memoria flash cuando se esta haciendo uso de ReadyBoost no causa ningún tipo de problema en el equipo ya que es una caché de solo lectura que hace uso del sistema «Write-trought» que garantiza que toda la información de la caché del dispositivo flash se encuentra presente en el disco duro, no siendo por tanto necesaria para que el equipo siga funcionando correctamente.

 
Pestaña de configuración de ReadyBoost

Carpeta de memoria Flash 

 

Sobre estos sistemas de administración de caché de disco duro que realiza SuperFetch hay que hacer mención especial a ReadyDrive que aplica un concepto semejante al de ReadyBoost pero a los discos duros híbridos (discos duros provistos de una caché flash).

 

Los discos duros híbridos continúan la línea de evolución actual de los discos duros de mejorar el rendimiento y el consumo de energía (hasta el 90% menos de consumo que los discos duros actuales en portatiles) al añadir una caché flash no volátil o NVRAM adicional, que no se pierde la información al apagar el ordenador, a la caché DRAM ya existente. Esto permite, a parte de una mejora en el acceso aleatorio a información como ya se explico anteriormente, realizar lecturas y escrituras en disco mientras este se encuentra acelerando, con la consecuente mejora en rendimiento, especialmente tras la hibernación del equipo.

 

 Sistema ReadyDrive

 

Superfetch se suma a este tipo de dispositivos híbridos gestionando su memoria flash y aplicando los patrones de uso de aplicaciones para aumentar aun más el rendimiento, así como para mejorar los tiempos de arranque del sistema operativo y de recuperación tras hibernación, todo esto gracias a que al realizar alguno de estos procesos la información necesaria para el arranque o la recuperación es volcada en la NVRAM. ReadyDrive requiere de un mínimo de 50MB de NVRAM, siendo recomendable más de 120MB.

 

Conclusión:

Como habéis podido comprobar a lo largo de estos post SuperFetch es sin duda una de las grandes novedades incluidas en Windows Vista y un referente en cuanto a tecnologías de rendimiento, de hecho al usar Windows Vista por primera vez a menudo sorprende que, al contrario de lo que esperamos, lleguemos a apreciar una mejoría en el rendimiento de nuestro equipo con respecto a sistemas operativos anteriores.

 

Continuaré desglosando los aspectos de rendimiento de Windows Vista en próximos artículos, hasta entonces espero haber conseguido despertar vuestra curiosidad sobre esta tecnología y otras muchas que se irán mencionando en este blog.

 

Concurso de Gadgets en Windows Vista

El grupo de usuarios .NET de Madrid (www.madriddotnet.com) ha lanzado un concurso de programación de Gadgets para Windows Vista. Estos pájaros, nos han sacado pasta a un montón de gente para darse unos premios de puta madre.


 


1er Premio


 


·  Viaje a Las Vegas para asistir al MIX’07 (incluye vuelo, alojamiento y entrada)


·  1 Licencia de JetBrains ReSharper


·  1 Licencia de JetBrains DotTrace


·  1 suscripción a DotNetMania por un año (11 números)


·  Libro ISBN:978-84-415-2118-6 Visual Studio 2005 Team System


·  Libro ISBN:978-84-415-2070-7 Programación con SQL Server 2005


·  Libro ISBN:978-84-415-2052-3 Programación con ASP.NET 2.0


·  Libro ISBN:978-84-415-2098-1 Visual C# 2005


·  Libro ISBN:978-84-415-2136-0 Programación avanzada de aplicaciones con Microsoft ASP.NET 2.0


2º Premio


 


·  1 Videoconsola Xbox 360 (incluye auriculares, mando, disco duro y juego)


·  1 Licencia de JetBrains ReSharper


·  1 Licencia de JetBrains DotTrace


·  1 suscripción a DotNetMania por un año (11 números)


·  Libro ISBN:978-84-415-2118-6 Visual Studio 2005 Team System


·  Libro ISBN:978-84-415-2053-0 Bases de datos con Visual Basic 2005


·  Libro ISBN:978-84-415-2052-3 Programación con ASP.NET 2.0


3º Premio


 


·  1 Smartphone Qtek 8310


·  1 Licencia de JetBrains ReSharper


·  1 Licencia de JetBrains DotTrace


·  1 suscripción a DotNetMania por un año (11 números)


·  Libro ISBN:978-84-415-2106-3 Visual Basic 2005


·  Libro ISBN:978-84-415-2136-0 Programación avanzada de aplicaciones con Microsoft ASP.NET 2.0


4º Premio


 


·  1 Licencia de ComponentOne Studio Express


·  Libro ISBN:978-84-415-2021-9 Visual Basic 2005


·  Libro ISBN:978-84-415-2125-4 Superutilidades Hacker


·  Libro ISBN:978-84-415-1851-3 Hacking con Google


·  Libro ISBN:978-84-415-2131-5 Bases de datos con SQL Server 2005


·  Libro ISBN:978-84-415-2035-6 Aprende SQL


5º Premio


 


·  1 Licencia de Red Gate SQL Bundle Pro


·  Libro ISBN:978-84-415-2021-9 Visual Basic 2005


·  Libro ISBN:978-84-415-2125-4 Superutilidades Hacker


·  Libro ISBN:978-84-415-1851-3 Hacking con Google


·  Libro ISBN:978-84-415-2131-5 Bases de datos con SQL Server 2005


·  Libro ISBN:978-84-415-2035-6 Aprende SQL


Y luego que si nosecuantos premios de la leche a la popularidad, reconocimiento, tertulia, etc…


 


Vamos, que hasta me dan ganas de aprender a programar en Vista a mi mismo.


 


http://gadgetizate.madriddotnet.com/Participa.aspx


 

Despliegue masivo de Windows Vista con BDD 2007 (I de V)

Comenzamos esta serie de artículos de instalación de Windows Vista en múltiples equipos simultáneamente utilizando las nuevas herramientas proporcionadas por Microsoft.


Hoy hablaremos de BDD 2007 (Bussines Desktop Deployment 2007) y sus requisitos de instalación.


Una de las necesidades habituales de las organizaciones es el despliegue masivo de un sistema operativo en sus equipos cliente. Hasta ahora, las tareas de despliegue han sido una combinación de múltiples estrategias, herramientas,  generación de imágenes y dolores de cabeza.


Pues bien, con Windows Vista, el despliegue se simplifica muchísimo, ya que ahora vamos a poder utilizar una única herramienta que integra todas las necesidades de creación, administración y mantenimiento de imágenes y procesos de despliegue. Me estoy refiriendo a BDD 2007 (Business Desktop Deployment 2007). La aplicación como tal se compone de un conjunto de herramientas, documentación técnica y  buenas prácticas y procedimientos a seguir. Es lo que Microsoft denomina un “Solution Accelerator”.


BDD 2007 no es una herramienta nueva, pero si incorpora muchas novedades, entre ellas:




  • Soporte para imágenes WIM


  • Scripts personalizables basados en XML que se integran en un secuenciador de tareas heredado de SMS v4 o System Center Configuration Manager 2007


  • Nuevo fichero de instalación desatendida (unattend.xml).


  • Además incorpora el “Deployment Workbench” o mesa de trabajo en donde podremos ir creando nuestra propia configuración de sistema que queremos desplegar.

Una de las novedades más interesantes es precisamente las imágenes WIM, las cuales a diferencia de los formatos de imagen basados en sectores, WIM se basa en archivos.


WIM es un formato de imagen independiente del hardware, es decir, ya no tenemos que crear imágenes específicas por cara tipo de hardware, además admite la inclusión de múltiples imágenes de Vista en un solo fichero WIM, lo cual permite simplificar el mantenimiento de imágenes para mediana y gran empresa.


Bien pero ¿por dónde comenzamos una implantación masiva de Windows Vista?


Para nuestro caso vamos a crear un pequeño laboratorio con algunos equipos virtuales y para ello utilizaremos Virtual Server 2005 R2, aunque todos estos pasos que veremos son igualmente aplicables a entornos de cientos o miles de equipos.


El primer equipos que  vamos a crear es una máquina con Windows Server 2003 R2 o SP1, si no tenéis los CDs de instalación podéis descargaros un disco VHD ya instalado  desde aquí o la versión de evaluación desde aquí


Necesitaremos también un par de máquinas, una de ellas sin Sistema Operativo, para realizar una instalación nueva de Windows Vista y la otra con Windows XP para realizar una actualización a Windows Vista.


Necesitaremos Virtual Server 2005 R2 ya que soporta PXE (Preboot Execution Environment), el cual utilizaremos para el despliegue de WindowsPE. Microsoft Virtual Server 2005 R2 se puede instalar tanto en Windows Server 2003 como Windows XP y requiere tener instalado IIS 6.0. Es un producto gratuíto y lo podéis conseguir desde este enlace.


Una vez instalado Windows Server 2003, tenemos que verificar si cumplimos todos los requisitos de hardware y software que requiere BDD 2007. Cuando instalemos BDD 2007 nos pedirá los siguientes componentes:  WAIK, MSXML 6.0, MMC 3.0, .Net Framework 2.0, USMT 3.0 y ACT 5.0


Si queremos realizar un despliegue automático a través de la red basado en XPE necesitaremos instalar WDS (Windows Deployment Services), el cual es la nueva versión de lo que ya conocíamos como RIS. Se puede instalar en Windows Server 2003 SP1 y actualizará el actual RIS, y también vendrá integrado como componente en Windows Server “Longhorn”. WDS está disponible en la carpeta WDS del WAIK


En ese caso necesitaremos un servicio de Directorio Activo, un servidor DHCP habilitado para PXE y por supuesto un servicio DNS. Podeis encontrar más detalles de los requisitos de instalación de WDS aquí.




  • WAIK  es Windows Automated Installation Kit, el cual nos permitirá crear y manipular imágenes WIM con utilidades como ImageX, System Image Manager  e imágenes de Windows PE. WAIK está disponible para su descarga.


  • USMT es User State Migration Tool, el cual nos permitirá hacer una copia del perfil del usuario que estamos migrando al nuevo sistema operativo y posteriormente aplicar dicho perfil a Windows Vista. De esta forma conservamos su configuración y documentos. Se puede descargar desde aquí  


  • ACT es Application Compatibility Toolkit, el cual nos permitirá comprobar la compatibilidad de las aplicaciones que tenemos instaladas en nuestra organización, gracias a procesos de inventario de software y análisis contra una base de datos central de compatibilidad. Se puede descargar desde aquí.


  • MSXML 6.0 se puede obtener desde aquí.


  • .Net Framework 2.0 es un componente ya disponible en Windows Server 2003 R2 y se insala desde los Componentes de Windows. Para Windows Server 2003 SP1 necesitaréis descargarlo e instalarlo.

Una vez que hemos descargado e instalado todos los componentes podemos comenzar la instalación de BDD 2007, este es un proceso sencillo por lo que os lo dejo a vosotros y para el próximo artículo de esta serie comenzaremos con los pasos de preparación de imágenes de Windows Vista utilizando ImageX, Windows SIM y Deployment Workbench.

SuperFetch (III de IV)

Para finalizar el tema de
SuperFetch en estos dos últimos post vamos a comprobar dos de sus
funcionalidades más interesantes: la gestión de los procesos en segundo plano, y
la gestión de caché de disco desde un punto de vista innovador con READYBOOST y READYDRIVE.

 

Es algo común que dejemos
aplicaciones en segundo plano cuando por ejemplo abrimos el explorador o el
Messenger mientras estamos editando un documento de Office o abrimos un juego
mientras se esta ejecutando cualquier otro programa, y es también común que notemos
una reducción en el rendimiento del sistema al intentar retomar dichas
aplicaciones y pasarlas a primer plano; esto se debe a que los programas en
segundo plano son preferentes para pasar al archivo de paginación del disco
duro, lo cual, en caso de falta de memoria, supone que cada vez que deseemos volver
a traer dicha aplicación a primer plano obtengamos una considerable reducción
en el rendimiento del sistema. La situación anterior también es aplicable cuando hacemos
uso de la característica «cambio rápido de usuario» y deseamos volver a la
sesión que dejamos iniciada anteriormente ya que la información de la sesión inactiva
es paulatinamente trasladada a la memoria virtual según se va necesitando más
memoria. Superfetch gestiona los procesos en segundo y primer plano para
reducir en todo lo posible esta pérdida de rendimiento, la manera en que logra
esto es bastante intuitiva: vuelve a cargar la información del proceso en
memoria cuando volvemos a tener disponibilidad de esta (normalmente al cerrar
un programa) lo cual supone que por ejemplo en un entorno de escasa memoria,
volver de Internet Explorer a Microsoft Word tras haber cerrado Windows Mail (el
programa que viene a sustituir a Outlook Express en Windows Vista) sería mucho
más rápido que con sistemas operativos anteriores, y de nuevo esto también sería
aplicable al sistema de cambio rápido de usuario siendo ideal por ejemplo para volver
a la sesión en la que se está ejecutando la mula para aquellos amigos del P2P
que tienen que compartir su equipo; pero quizás la aplicación práctica más
evidente de todo esto es no ver reducido el rendimiento tras largos momentos de
inactividad, como por ejemplo al ir comer en el trabajo o cuando nos llaman por
teléfono. Hasta ahora tras habernos ausentado un tiempo notábamos una
ralentización de nuestras aplicaciones debido a que la actividad de los
servicios y procesos en segundo plano tomaban el control de la memoria RAM
relegando a la aplicación inactiva de primer plano al archivo de paginación;
aun que esto es el comportamiento ideal (mantiene al microprocesador ocupado al
servicio de procesos en segundo plano como la ejecución de un antivirus) tras
la finalización de estos procesos la aplicación principal continuaba en el
archivo de paginación hasta que sus funciones eran requeridas por el usuario al
volver, con la consabida reducción de rendimiento, Windows Vista corrige esta
situación gracias a que Superfetch va colocando denuevo en memoria la
información del programa en primer plano cuando se libera suficiente memoria
RAM por ejemplo al finalizar una aplicación en segundo plano, de esta manera la
aplicación queda completamente disponible para el usuario a su regreso.

 

Bueno, a parte de lo comentado en
este post también existe otra manera de aumentar el rendimiento del equipo a la
hora de tener que acceder al disco, esta manera es mediante los sistemas
ReadyBoost y ReadyDrive, que veremos en mi próximo post.

 

Por cierto, se están publicando
en TechNet Magazine una serie de artículos sobre las mejoras en el Kernel de
Windows Vista, yo estoy a la espera de que publiquen la sección de
administración de memoria por si pudiera ofreceros aun más información de lo
visto hasta ahora. Os dejo el enlace:

 http://www.microsoft.com/technet/technetmag/issues/2007/02/VistaKernel/default.aspx?loc=es/

La protección contra Desbordamientos de Buffer en Windows Vista (IV de IV)

Cuarta Protección: Ocultación de Información


 


Con las tecnologías vistas hasta el momento se ha pretendido, en primer lugar que no se produzcan los fallos en el código que originan los desbordamientos de buffer, que no se puedan sustituir las funciones de tratamiento de errores y que no se puedan meter códigos en la zona de memoria destinada a datos para evitar la inyección de programas no deseados dentro del sistema. Sin embargo un atacante no necesita inyectarte un troyano si puede abrir una conexión desde dentro del sistema que le conecte contra un socket en su equipo, es decir, si puede configurar una conexión reversa. Y para eso no necesita inyectar ningún código, le basta con invocar una función del sistema operativo para abrir un socket.


 



 


Imagen: Invocación de una función conocida del sistema


 


————————————————————-


Pointer ofuscation


————————————————————-


 


La primera tecnología de protección para evitar que se invoquen funciones conocidas se añadió en Windows XP SP2 y Windows Server 2003 SP1. Por supuesto esta tecnología también funciona en Windows Vista.


 


La idea es evitar que se vea la dirección de cualquier función que se usa en el cuerpo de un programa, por ello, se utilizan las funciones: EconcePointer / DecodePointer y EncodeSystemPointer / DecodeSystemPointer para ofuscar la información en el código.


 


Las funciones EncodePointer y EncodeSystemPointer generan una dirección ofuscada a partir de realizar un XOR entre la dirección real de la función que se desea invocar y un número dinámico generado por el sistema operativo.


 


Cuando se desea realizar la llamada a la función se hace mediante las funciones DecodePointer y DecodeSystemPointer. Si un atacante desea suplantar la llamada a una función por una suya debe saber como codificarla para que cuando sea decodificada corresponda con la función que él quiere llamar. Nada sencillo.


 


El uso de estas tecnologías no previene solo contra los ataques de desbordamiento de buffer sino contra todos aquellos que, no pudiendo modificar la dirección de retorno de la llamada buscan obtener el control mediante la modificación de cualquier llamada a función que vaya a ser invocada, ya que cogerá el control del programa.


 


————————————————————-


ASLR (Address Space Layout Randomization)


————————————————————-


 


Para evitar que el atacante sepa la dirección de memoria dónde se encuentra una función que desea invocar, la tecnología ASLR intenta cambiar en cada ejecución la posición exacta de la misma dentro de la memoria. Para ello se utiliza una función que se denomina de entropía (máximo desorden) que le asigna en cada ejecución de la aplicación una dirección diferente dentro de un rango de 256 posibles.


 


Es decir, se ejecuta el programa A y se carga en la dirección FF000FFF, se cierra el programa y se vuelve a ejecutar. Cuando se carga en memoria ASLR le asigna la dirección FF000ABB, por ejemplo.


 


Con esto se intenta que no se pueda predecir la dirección donde se pueden encontrar los programas que tiene en ejecución un determinado sistema.


 



 


Imagen: ASLR le asigna una dirección diferente en cada ejecución


 


Conclusión


 


Garantizar que un sistema no va a tener fallos de desbordamiento de buffer en alguna de los millones de líneas que conforman el sistema operativo es mucho decir, pero el uso de el SDL (Secure Development Lifecycle), la compilación con /FxCod y /SafeSEH, la aplicación de DEP (Data Execution Prevention) con el bit NX (Non Execute) por Hardware y por Software para la protección de integridad en el tratamiento de errores, la ofuscación de los punteros a funciones y la ejecución aleatoria con ASLR ayudan a que el sistema se encuentre mucho más fortificado contra los fallos de Buffer Overflow.


 


Referencias Externas


 


ASLR en Wikipedia


Blog Michael Howard: Address Space Layout Randomization in Windows Vista


Blog Michael Howard: Protecting Against Pointer Subterfuge


La protección contra Desbordamientos de Buffer en Windows Vista (I de IV)


La protección contra Desbordamientos de Buffer en Windows Vista (II de IV)


La protección contra Desbordamientos de Buffer en Windows Vista (III de IV)

SuperFetch (II de IV)

SuperFetch no es una tecnología que parta de cero, sino que complementa a otra ya existente en Windows XP llamada Prefetch y que en español vendría a significar «precarga».

 

Prefetch es un término usado en diferentes ámbitos de la informática, por ejemplo se habla de prefetch refiriéndose a las capacidades de los microprocesadores de cargar anticipadamente datos en la cache L1 durante la ejecución de una instrucción con el fin de acelerar al ejecución de aplicaciones, en el ámbito de los navegadores WEB se conoce como Prefetch (concretamente como Link Prefetching) a la capacidad de estos de cargar en caché información de las páginas WEB enlazadas cuando el navegador esta inactivo con el fin de acelerar la navegación (pudiendo realizar esto de manera agresiva o solo cuando le es indicado en el código html de link), en programación se hace referencia a este termino apuntando a la precarga de información en memoria antes de que sea necesaria con el fin de ganar tiempo de ejecución y por último en sistemas hablamos de Prefetch como un sistema de gestión de memoria usado en varios sistemas operativos (también esta disponible en Linux) que permite optimizar notablemente la carga de aplicaciones y servicios especialmente al arranque del equipo precargando la información de estos en memoria y reduciendo por tanto el tiempo de inicio.

 

Windows XP y Vista guardan la información de traza de Prefetch en la carpeta %Windir%prefetch en unos archivos con extensión .pf cuyo nombre esta compuesto por el nombre de la aplicación, un guión y un hash en hexadecimal de la ubicación de dicho archivo, como por ejemplo «NOTEPAD.EXE-2F2D61E1.pf» («NTOSBOOT-B00DFAAD.pf» en el caso del archivo de arranque) y cuyo contenido no es más que una serie de referencias a los ficheros y directorios que leen las aplicaciones al iniciar, así como sus metadatos. Para crear estos archivos de traza el sistema de gestión memoria comprueba las consultas a las entradas de la MFT (Master File Table) del sistema de archivos NTFS sabiendo de este modo qué archivos son los que se intentan cargar y de esta manera poder precargarlos previamente a la próxima apertura de la aplicación. Así mismo Prefetch se combina con el programador de tareas para realizar una defragmentación y colocación de manera contigua y según el orden de uso de aquellos archivos que vayan a ser utilizados al iniciar las aplicaciones o durante el arranque del equipo; estos ficheros a colocar de manera contigua vienen señalados en el archivo layout.ini de la propia carpeta Prefetch realizándose la labor de defragmentación con una periodicidad de 3 días en momentos de baja actividad del equipo.

 

Carpeta Prefetch (parece que alguien ha estado jugando al Age of Empires 2 :P)

 

Sobre la carpeta Prefetch y sus propiedades existen diferentes leyendas urbanas en forma de trucos para mejorar el rendimiento de Windows, podéis echar un vistazo a algunas de ellas en el siguiente enlace:

http://mywebpages.comcast.net/SupportCD/XPMyths.html#Optimization

 

Este sistema de Prefeth de XP combinado con SuperFetch es el usado por Windows Vista si disponemos de menos de 700MB de memoria RAM, si disponemos de una mayor cantidad de memoria se continua usando el sistema Prefetch y SuperFetch pero añadiendo a le ecuación el sistema ReadyBoot (no confundir con ReadyBoost).

 

ReadyBoot es otro añadido al rendimiento de Windows vista y es el sistema utilizado para reducir el tiempo de arranque en caso de disponer de más de 700MB de RAM. ReadyBoot guarda su información en una carpeta con ese mismo nombre dentro del directorio Prefetch de Windows Vista y realiza un seguimiento de los 5 últimos arranques cuyos archivos de traza (de extensión .fx) guarda en el directorio anteriormente citado con el objetivo de usarlos posteriormente para generar un plan de arranque optimizado. Los parámetros de configuración de ReadyBoot los podemos encontrar en la siguiente clave de registro:

HKLMSystemCurrentControlSetServicesEcacheParameters

  
Bueno, a toda esta ecuación sobre precargas en memoria habría que añadir la inclusión en la carpeta prefetch de archivos de traza de aplicaciones enteras en función del comportamiento del usuario, es decir: SuperFetch.

SuperFetch es un servicio disponible en todas las versiones de Windows Vista y hace un uso intensivo de la memoria partiendo del concepto de que es muy común hoy en día trabajar con gran cantidad de memoria libre en los equipos modernos, para resolver este desaprovechamiento de memoria Windows Vista carga en esta toda aquella información que probablemente utilizará el usuario, para ello mantiene un historial de su comportamiento por días de la semana e incluso por horas de tal manera que cuando desee abrir alguna aplicación concreta esta se encuentre ya cargada en memoria y el proceso de apertura sea mucho más rápido, aun que como es obvio para uso efectivo de SuperFetch se requiere memoria libre suficiente (de ahí las recomendación de 1GB de RAM). Superfetch está completamente integrado con Prefetch y con el layout.ini, interviene en los procesos de suspensión e hibernación y es un proceso de baja prioridad y consumo que no repercute negativamente en el rendimiento del equipo sino que lo mejora gracias a la innovadora gestión de memoria que realiza. Los archivos de traza de Superfetch se guardan como Ag*.db en el directorio Prefetch.

Superfetch también esta relacionada con la gestión de la memoria virtual relacionándose y gestionando otras dos tecnologías referentes en Windows Vista: el READY BOOST y el READY DRIVE que describiré en mi próximo post.