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

El problema de los desbordamientos de Buffer en las aplicaciones que corren sobre un sistema operativo ha sido un tema recurrente. Desde hace tiempo se intenta encontrar una forma eficiente de realizar comprobaciones en el código fuente que se programa para evitarlos. Muchos de los lenguajes de alto nivel que se utilizan hoy en día tienen este tipo de protecciones, pero cuando se desarrollan módulos en lenguajes de bajo nivel siguen apareciendo estas debilidades.


 


Desbordamiento de Buffer


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


 


El objetivo de una explotación de desbordamiento de buffer es sobrepasar la longitud de memoria reservada para los parámetros de una llamada a un procedimiento con el fin de sobrescribir la dirección de retorno del contador de programa. Es decir, se buscan parámetros en procedimientos que no son correctamente comprobados antes de ser utilizados.


 


Imaginemos este entorno de memoria:


 


Imagen 1: Memoria


 


En esta sección de memoria vemos como se ha apilado una dirección de retorno para cuando se acabe de ejecutar el procedimiento que tiene actualmente el control del programa y encima se ha reservado espacio para que se apilen los parámetros locales de dicho procedimiento. A la hora de cargar los parámetros en ese espacio reservado, estos deberían ser comprobados, si no se produjera esta comprobación tendríamos un problema de buffer overflow.


 


Explotación de un Desbordamiento de Buffer


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


 


El atacante introduce como parámetro el código que quiere que se ejecute y luego escribe información nula hasta que sobrepasa el espacio que tiene reservado. Una vez que ha llegado a la dirección de retorno escribe la dirección de memoria donde ha introducido su programa.


 




Imagen 2: Desbordamiento de Buffer


 


Con esto consigue haber introducido un programa que se va a ejecutar. Este es un ejemplo típico para los programas que devuelven una shell o crean un interfaz de comandos.


 


Tecnologías de protección


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


 


Las tecnologías para evitar que se produzca una explotación de una vulnerabilidad de buffer overflow son varias, pero hay dos que son especialmente significativas: DEP (Data Execution Prevention) y ASLR (Address Space Layout Randomization). Ambas incluidas en Windows Vista y …¡lo vemos en el próximo post!.


 


Referencias


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


 


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)


Buffer Overflow en Wikipedia.org


 

¡Se acabó el amor

…Pero no la pasión!. Durante estos últimos meses se ha estado realizando la gira LOVE (Lanzamiento de Office, Vista y Exchange por toda España) y ya se ha terminado. ¿Toda España? no, ya lo sabéis, hay sitios a donde no se va, porque no se llega con las horas de un día y los días de un año a hacer todo lo que se querría. Sin embargo, como sabéis, nosotros nos apuntamos al reparto de una aspirina, así que vamos a ir llendo a distintas actividades en distintos sitios.


El próximo 8 de Febrero, en Almería, hay un evento en el que voy a hablar y realizar algunas demos, de MIC, UIPI, Virtualización de Aplicaciones, UAC, Modo Protegido de IE7, Antispyware, etc… El evento es gratuito y te puedes registrar según las instrucciones de la siguiente URL (si te pilla vien el sitio, el día y la hora 😉 También se va a hablar de otras tecnologías, así que echadle un ojito a la agenda.


Y el día 8 de Marzo en Alcolea del Rio, a 50 kilómetros de Sevilla en una party solidaria en la que también se viene el abuelo y gente de elhacker.net y el señor Gospel, y … todo el que se quiera apuntar. Link.


 Estamos de finde, así que relax.

¿Sistemas Seguros?

 


Antes de comenzar con esta nueva andadura quería daros la bienvenida y agradeceros de antemano vuestra colaboración que será de mucha ayuda para que todos podamos conocer un poquito más Windows Vista. ¡Muchas Gracias!


 


En este primer post vamos a introducirnos en una de los problemáticas que nos encontramos en los sistemas operativos actuales y como se puede combatir con el nuevo sistema operativo de Microsoft. Sin más preámbulos, vamos a comenzar.


¿Quién puede asegurar al 100% que sus sistemas son seguros? Espero que nadie haya contestado… ¡YO! Porque siempre existe algo conocido o por descubrir que pone en evidencia a nuestros sistemas. Tratándose de proteger los sistemas y la información, es mejor ser siempre un obsesivo de la seguridad que un creyente de la seguridad (como ese que dice: “mis sistemas están blindados, no hay quien entre”).


En la actualidad, los principales esfuerzos que realizamos en nuestras empresas es mantener los sistemas y la información lo más seguros posibles. ¿Lo conseguimos siempre? La respuesta debería ser siempre NO. Siempre existe algún impedimento que convierte nuestro sistema en vulnerable.


Uno de los problemas más importantes que nos encontramos a la hora de asegurar nuestros sistemas, es el principio del menor número de privilegios posibles (“¡Ya estamos con lo de siempre, ni que eso fuera la solución para todo!”) que poquísimas veces cumplimos. Esto es un problema de todos.


Por un lado, los programadores generan aplicaciones pensando en ellos, es decir, basándose en las credenciales que tienen sobre sus máquinas, 100% privilegios de administrador (“A mi me funciona, al resto de usuarios también”). Por lo que obligan en algunas ocasiones a los administradores a conceder permisos excesivos a los usuarios para que dichas aplicaciones (por ejemplo aplicaciones de diseño gráfico) funcionen correctamente.


También los administradores, que en muchas ocasiones concedemos permisos de más a los usuarios para realizar determinadas tareas. Ya sea porque fueron necesarios en un determinado momento (y se nos olvidó retirárselos) o porque los concedemos para garantizar su correcto funcionamiento, sin dedicar tiempo a estudiar cuales serian los mínimos.


Y no se nos puede olvidar mencionar a los sistemas operativos, ¿Cuántos sistemas operativos conocéis que cumplan SIEMPRE el principio del menor número de privilegios posibles? (esta sí que es una pregunta sencilla). ¿Por qué un sistema operativo ejecuta cualquier aplicación (incluido un navegador de Internet) con todos los permisos que tiene un usuario?


Como podéis ver todos tenemos parte de responsabilidad en la inseguridad de nuestros sistemas. Microsoft ya ha asumido su responsabilidad y en su nueva versión de sistema operativo Microsoft Windows Vista ha incluido el UAC (Control de cuentas de usuario) que entre otras funcionalidades, proporciona la posibilidad de cumplir el principio del menor número de privilegios posibles por parte del sistema operativo.


Windows Vista incorpora la funcionalidad de lanzar cada aplicación con los permisos mínimos necesarios para su correcto funcionamiento, independientemente del perfil del usuario que la lanza.


A partir de ahora ya no podemos culpar al sistema operativo por su mal funcionamiento en este tema, ya que el problema que habíamos comentado con anterioridad ha quedado resuelto en Microsoft Windows Vista.


Con estas líneas abrimos oficialmente una serie de post en los cuales iremos profundizando en la nueva tecnología de Microsoft, UAC.


Si quereis ir conociendo más sobre este tema, a continuación os dejo el link oficial de microsoft sobre este nuevo sistema de seguridad. 


http://technet.microsoft.com/es-es/windowsvista/aa905108(en-us).aspx

Bitlocker (I): Seguro más alla de su uso

Ante todo un saludo a todos aquellos que se aventuren a leernos a través de estos post, en los que iremos desgranando diferentes temas, y algunos de ellos muy curiosos. Para este primer post os propongo una reflexión tras la cual iremos desesentrañando alguna tecnología de seguridad interesante que incorpora Windows Vista.


Cuando finalizamos el ciclo de vida de un equipo, ¿qué hacemos?, simplemente nos deshacemos de él. Pero realmente tenemos en cuenta cuál es el destino del mismo, quien lo puede manipular,…, total si nosotros no lo vamos a utilizar que más da, ya tenemos una copia de los datos y los habremos pasado a nuestro nuevo y flamante equipo. Otras veces un equipo estropeado es enviado a un servicio técnico y desconocemos quien va a manipular la información; o simplemente hemos dejado olvidado nuestro equipo portátil en cualquier lugar o nos lo han robado, ofreciendo eso sí, un acceso total a la información que este contiene (claro y en muchas circunstancias como no con un descriptivo fichero llamado password o con fotos comprometidas,… ya podemos imaginar las consecuencias).


Algunas veces es posible que el propietario de un equipo que se va deshacer de él pudiera llegar a formatear el disco (las menos), pero desconoce realmente, que este mecanismo no garantiza que alguien pudiera llegar a extraer los datos que él tuviera anteriormente almacenado. Algunos estudios revelan informaciones alarmantes que determinan que un gran número de datos médicos, de cuentas corrientes, datos financieros, de empleados, clientes, etc., acaban en cubos de la basura junto a los equipos deshechados o bien camino de algún supuesto país, tras haber hecho una importante donación de los mismos a una nueva Fundación que ha aparecido vaya usted a saber donde, requiriendo de mi empresa los ordenadores en deshuso, y todo esto claro está sin que hagamos ningún tratamiento para la eliminación de los datos almacenados (Dios mío mis datos médicos o financieros camino de… y quien habrá detras de estos envíos).


 


Dos graduados del Instituto Tecnológico de Massachussets realizaron un estudio con objeto de determinar el alcance de esta problemática, para lo cual compraron 150 discos duros de segunda mano y le aplicaron técnicas de análisis forense para extraer los datos almacenados. En muchas de las circunstancias estos datos no se encontraban ni eliminados y en los que así era, pudieron extraerlos mediante aplicaciones para la recuperación de ficheros. De los discos duros consiguieron extraer una cantidad significativa de datos de tipo confidencial.


Y ahora ¿qué? 


Windows Vista en sus versiones Enterprise y Ultimate, incorpora una nueva funcionalidad que entre otras posibles características podría paliar los anteriores escenarios que habíamos planteado: Bitlocker. Este nuevo sistema garantiza la confidencialidad de los datos almacenados en el disco mediante cifrado. Bitlocker utiliza AES (Advance Encription Standard) como algoritmo de cifrado en modo CBC (Cypher Block Chaining) y con objeto de evitar los ataques por manipulación de datos cifrados se incorpora un difusor adicional independiente de AES-CBC.


Los mecanismos de seguridad implementados por Bitlocker se complementan mediante unas nuevas especificaciones de seguridad hardware Trusted Platform Module (TPM). Este nuevo chip TPM proporciona una plataforma segura para el almacenamiento de claves, password o certificados, haciendo más difícil el ataque contra las mismas. Aunque nuestros equipos no dispusieran de este mecanismo de seguridad las especificaciones de Bitlocker admiten su funcionalidad sin el chip TPM, pero ¿funciona igual?


En post posteriores trataremos los diferentes aspectos técnicos empleados para el cifrado de la información, destriparemos Bitlocker y las funcionalidades que nos reporta el uso del Chip TPM si disponemos del mismo.

Presentación

¿De qué va este blog?


La verdad es que es un proyecto común, que varios enganchados a esto de la informática vamos a ir creando. La idea es escribir sobre las tecnologías que acompañana a Windows Vista e Ir hablando de cada una de ellas. UAC, UIPI, MIC, TPM, Bitlocker, ASLR, DEP, ….


¿Quiénes van a escribir? 


 Pues en principio el equipo somos los siguientes


Chema Alonso, osea yo, soy MVP de Windows Security y escribo diariamente el blog de “Un Informático en el lado del mal” dónde aprovecho para tener mi petas y discusiones varias, así que si quieres pegarte conmigo, directametne vete a ese blog y allí nos damos cera.


Juan Luís Rambla, MVP De Windows Security. No, el MVP de Windows Security no lo regalan, somos 2 en España en esa disciplina y trabajamos juntos. Es especialista en Seguridad, sistemas y como no, en Windows Vista y Longhorn. Es el que impartió los primeros Hans On Lab de Windows Vista aquí en España. Al igual que yo, ha escrito varios artículos en Windows TI Magazine y varios de ellos se entregan reimpresos en las conferencias de Microsoft Technet.


Joshua Saenz, especilizado en Windows Server y Exchange. Le habréis podido ver en alguna conferencia sobre Windows SharePoint Services o Exchange y es el friki de los cacharines del equipo. Se acuesta viendo la tele por Internet transmitida via Wifi al movil tumbado en la cama. ¿Es o no un friki? Habréis podido leer artículos suyos en Windows TI Magazine.


Julian Blázquez, MCSA. Está recorriendose toda España impartiendo los seminarios de Windows Vista y Longhorn en Torrelavega, Galicia, Canarias, Sevilla, Madrid, Barcelona, etc…. amos, que tiene los dedos negros. En sus ratos libres también escribe algún artículo pero tengo la seguridad de que últimamente tiene poco tiempo libre.


Juanfran Arrabe, es el último únido al equipo y está impartiendo con nosotros también los Hands On Lab. MCSA y amante de la seguridad informática. Le estamos curtiendo las costillas para que coja cariño a trabajar con nosotros.


 Todos trabajamos en Informática 64 y puedes vernos los caretos en la siguietne aquí.


 Bueno, pos eso, que empezamos desde ya!