sábado, marzo 29, 2008

Tecnologías de Seguridad en
Windows Vista (I de IV)

***************************************************************************************
Artículo publicado en NEXT IT Specialist Mar'08

Tecnologías de Seguridad en Windows Vista (I de IV)
Tecnologías de Seguridad en Windows Vista (II de IV)
Tecnologías de Seguridad en Windows Vista (III de IV)
Tecnologías de Seguridad en Windows Vista (IV de IV)
***************************************************************************************

Parece que fue ayer cuando Microsoft tomó conciencia de la importancia de la seguridad y ya han pasado casi 6 años desde el comienzo de la Trustworthy Computing Initiative (TCI) o para los hispanoparlantes la “Iniciativa de Informática de Confianza”. Decidirse a arrancar esta iniciativa no fue algo tomado a la ligera. Los productos de Microsoft, hasta aquel entonces diseñados para “instalar y ¡listo!” habían sido objetivo de la comunidad de investigadores de seguridad, haciendo de ellos un foco de exploits y lo aún más importante y peligroso, virus y troyanos.

Trustworthy Computing Initiative (TCI)

La compañía comenzó esta iniciativa, con una mira de 10 años de duración, contrató a algunos de los mejores gurús de la seguridad informática para que se remangaran y condujeran la fábrica de software de Redmond en un equipo concienciado, formado y preparado para afrontar la puesta en el mercado de productos software seguros… o al menos, mucho más seguros.

Michael Howard, Mark Russinovich posteriormente o el reciente Crispin Cowan han sido algunos de los nombres propios que han entrado a formar parte de los expertos de seguridad con los que cuenta la empresa de la banderita de colores para lograr esta labor.

El primer producto que se vio de lleno en la TCI no fue Windows XP, este había sido concebido y liberado tiempo ha, así que lo primero que se hizo fue sacar una lista de Service Packs para los principales productos. Estos Service Packs habían sido diseñados y concebidos dentro de la TCI pero los productos no habían sido diseñados dentro de la TCI. Así, Windows XP SP2 reforzó considerablemente el sistema Windows, pero no se pudo tocar la arquitectura desde abajo.

Como muchos ya sabréis, el primer sistema operativo diseñado dentro de la TCI no es otro que aquel que tuvo como nombre código “Longhorn”, es decir, nuestro amigo Windows Vista. En él, se aplicaron las tecnologías de seguridad que estaban incluidas en Windows XP SP2 junto con una nueva arquitectura para dotar al sistema operativo de los mecanismos necesarios para protegerse frente a amenazas futuras.

DEP y ASLR

Cuando un procedimiento es invocado en el sistema operativo, lo primero que se hace es situar en la pila del sistema la dirección de retorno a la que debe volverse cuando el procedimiento se termine de ejecutar. Encima de ese valor se apilan los parámetros que necesita para su ejecución el procedimiento. Si no se comprueba el tamaño de los parámetros que van a ser apilados, un atacante podría introducir un dato de mayor tamaño del que tiene reservado y sobrescribir el valor de retorno del contador de programa. De esta manera conseguiría el control de la ejecución. Para hacerlo más “divertido” el atacante puede introducir un programa en los parámetros y después hacer que la dirección de retorno apunte a su programa. Haciendo esto el atacante consigue ejecutar un programa en el sistema.

Para evitar esto existen diversas tecnologías, pero las más importantes son DEP (Data Execution Prevention) y ASLR (Address Space Layout Randomization). La tecnología DEP se puede aplicar por software o por hardware en Windows Vista. Cuando se aplica DEP por hardware el sistema toma ventaja de la tecnología NX incorporada en los microprocesadores hace ya varios años. Los microprocesadores marcan zonas de memoria como de programa (eXecution) o de datos (NoneXecution). De esta forma el sistema operativo no ejecuta ningún programa almacenado en una zona de memoria destinada a datos, o lo que es lo mismo, ninguna dirección del contador de programa puede apuntar a una zona de datos. De esta forma se previene la inyección de programas en desbordamiento de datos.

No obstante, esta tecnología no evita completamente estos ataques pues el atacante podría hacer que se ejecutar un programa del sistema que le permitiera tomar control de la máquina. Para evitar esto, se utilizar la tecnología ASLR.

Hasta Windows XP, cuando el sistema operativo arranca una librería del sistema, ésta es cargada siempre en la misma dirección de memoria. Al usarse siempre la misma dirección, los atacantes pueden crear sus programas para apuntar a direcciones de librerías internas conocidas. Para evitar esto la tecnología ASLR permite que un determinado programa sea cargado cada vez en una ubicación distinta de la memoria dentro de un rango de 256 posibles valores. De esta forma un exploit tendría 1 posibilidad entre 256 intentos de acertar con la llamada correcta.

Como protección adicional, DEP en Windows Vista, tiene una versión basada solo en software que vino ya en XP SP2 y cuyo objetivo es garantizar la integridad de las funciones que son invocadas en el tratamiento de los mensajes de excepción que deben ser gestionados por el sistema operativo. Para ello se comprueba la integridad de los binarios del sistema que se encargan del tratamiento de los mensajes de error antes de entregarles el control.

***************************************************************************************
Artículo publicado en NEXT IT Specialist Mar'08

Tecnologías de Seguridad en Windows Vista (I de IV)
Tecnologías de Seguridad en Windows Vista (II de IV)
Tecnologías de Seguridad en Windows Vista (III de IV)
Tecnologías de Seguridad en Windows Vista (IV de IV)
***************************************************************************************

6 comentarios:

romansoft dijo...

1.- En un stack overflow básico (IA32) *no* son los "parámetros" que se pasan al procedimiento los que producen el overflow, como has comentado, sino que son las variables locales del procedimiento las que se exceden, hasta llegar a sobreescribir el EIP.
2.- ¿Se mantiene la fecha del reto#7? ¿Sobre qué va a ir?
3.- Esperamos un amplio report sobre lo que viste en BH: gente, charlas, y como no, qué impresión crees que se llevó la gente de la vuestra! :)

-r

Maligno dijo...

Maligno dijo...
Hola Roman!!!


Sí, la fecha del Reto 7 se mantiene... y te voy a hacer estudiar...:P jajaja.

Respecto a lo de Blackhat ya os contaré más. David Barroso nos tiró una foto dando la charlita y la puso en su blog, no te preocupes... que tendrás tu info, pero ahora necesito un poco de descanso... ;)

Blackhat 2008 - Blog S21Sec

romansoft dijo...

David no se pierde una... qué suerte! :) Bueno, esperaremos al ¡video! Te lo pasarán supongo, ¿no?

Pues nada, descansa, que falta te/os hará... Pero... mientras duermes acuérdate que hay una nueva tool de injection que podría prometer y que se llama "Pangolin" (menudo circo se ha montado además en full-disclosure! xD).

¿Te vas a ir a descansar sin echarle antes un vistazo? }:-)

Saludos,
-r

Postal3 dijo...

1

Me encanta revisitar periodicamente SysInternals de Russinovich. Es una obligación pasar por esta página para los usuarios de Windows. Pero yo me divierto en ella igual o más, que los críos cuando salen de excursión programada. Gracias Mark!.

2

Recuerdo cuando a todo spam se divulgó en la red que la Investigadora en Seguridad Informática: J. Rutkowska, la polaca, supuestamente vulneró el kernel de Windows Vista. Y el posterior lanzamiento del parche. Si bien la vulneración sólo podía suceder cuando el usuario la consentía, ejecutándola por sí mismo en el SO, pese a la UAC.


Después no fue tan anunciado, a la pregunta de cuál es el SO que usa habitualmente en su portátil dicha Rutkowska, su contestación de Windows Vista. Es una elección muy polémica, pero en la "dirección incorrecta" de lo que se suele reproducir en las webs hispánicas: la Rutkowska usa Windows Vista!:


-Qué curioso!. Supuestamente lo vulnera, pero inmediatamente admite que se convierta en su íntima pareja -diría cualquiera.


Sí, qué bonito final feliz a lo Instinto Básico!. Lástima que no sea muy políticamente correcto en el panorama actual de la web ibérica, por aquello del "Software Libre -cuando Free Software está mal traducido en España, y no debería ser Libre pero sí Gratis- "!.


Bueno. Saludos!.

vierito5 dijo...

Respecto a ASLR, PaX me parece una solución muchísimo más avanzada, con un nivel de entropía mucho mayor. Creo que es un poco ridículo dar una 1 posibilidad entre 256 intentos.

Maligno dijo...

@vierito, si se da una entre infinito es mejor aun, pero creo que es un avance grande con respecto a XP. Supongo que si han elegido 256 es pq les cabe bien en un byte y tendrá ventajas en implementación. Es un buen ratio 1/256.

Entradas populares