Vigilancia de seguridadServices Hardening en Windows Vista

Wole Moses

Microsoft anunció la iniciativa de Trustworthy Computing a principios de 2002, tras la aparición de varios virus y gusanos con perfil alto que causaron estragos en los sistemas de Windows, paralizaron departamentos de TI y los empresarios y consumidores debieron invertir grandes cantidades en la solución del problema. En esta iniciativa, Microsoft entonó un

mea culpa con respecto al registro del control de seguridad y realizó un cambio de rumbo instantáneo y un cambio de paradigma del software en desarrollo con especial énfasis en las características integrales y en la facilidad de uso para dar prioridad a la seguridad e integridad del software. En agosto de 2003 apareció el gusano Blaster, lo que reforzó el entusiasmo de esta iniciativa de seguridad. Si desea conocer la historia de Blaster, consulte en la barra lateral "El ataque de los clones".

Los principios de la iniciativa de informática confiable son seguridad en el diseño, que trata de las filosofías de codificación segura; seguridad predeterminada, que pretende garantizar que los componentes de Windows® presenten unos valores predeterminados que ofrezcan la mayor seguridad posible; y seguridad en la implementación, que se relaciona con la creación de herramientas y orientación prescriptiva para ayudar a empresarios y consumidores en asegurar la infraestructura de Windows.

En términos generales, la iniciativa de Trustworthy Computing implementó mejoras en la seguridad; desafortunadamente, Windows XP no pudo aprovechar todas las ventajas porque se comercializó dos años antes de que se emprendiera la iniciativa. Aunque Service Pack 2, SP2, hizo grandes esfuerzos para incorporar dichas filosofías, no se pudieron hacer todos los ajustes de dicha iniciativa en Windows XP.

Por lo tanto, Windows Vista™ es el primer sistema operativo de escritorio de Microsoft que cumple con todos los objetivos de Trustworthy Computing. Services Hardening de Windows Vista, una implementación específica del principio de seguridad predeterminada de Trustworthy Computing (consulte la figura 1), es una importante capacidad nueva diseñada para frustrar comportamientos de servicio inadecuados que puede provocar gran parte del malware actual. Service Hardening ayuda a que Microsoft realice grandes avances en el cambio del comportamiento predeterminado y el perfil de seguridad de los servicios de Windows.

Figure 1 Seguridad predeterminada: Servicios de Windows

Característica Descripción Resultado
Privilegio mínimo Los servicios de Windows Vista están configurados para usar el número mínimo de privilegios necesarios para funcionar. Windows Vista reduce los privilegios de seguridad predeterminados disponibles para los servicios de Windows, lo que reduce las consecuencias posibles del malware.
Aislamiento del servicio Los SID de servicio se utilizan para permitir que los servicios se ejecuten en cuentas con pocos privilegios. Windows Vista puede derrotar al malware mediante la restricción de acceso a sus recursos a partir de los SID de servicio.
Acceso restringido de red Las restricciones de red se implementan de forma individual para todos los servicios de Windows Vista. Windows Vista impide que el malware use servicios para realizar actividades de red malintencionadas.
Aislamiento de la sesión 0 La sesión 0 se reserva para los servicios. Windows Vista evita que las aplicaciones malintencionadas invadan los servicios con privilegios elevados mediante ataques basados en mensajes porque éstos no se ejecutan en la misma sesión.

Servicios de riesgo

Los servicios de Windows, anteriormente conocidos como servicios NT, son aplicaciones de larga ejecución que se ejecutan en sesiones propias de Windows. Los servicios se pueden iniciar automáticamente al iniciar el equipo, se pueden pausar y reiniciar, no muestran normalmente ninguna interfaz y se pueden ejecutar en el contexto de seguridad de cuentas distintas de la cuenta de inicio de sesión del usuario o de la predeterminada del equipo. Por lo tanto, los servicios de Windows presentan una gran ventaja para determinados tipos de desarrollo de aplicaciones y para los usuarios finales que necesiten usar dichas aplicaciones. Sin embargo, dada su eficacia y flexibilidad, los servicios de Windows han sido tradicionalmente vulnerables a los ataques por diversas razones.

En primer lugar, anteriormente los servicios de Windows se solían ejecutar en cuentas de Windows con muchos privilegios, como la cuenta del sistema local. Si un malware determinado pone en peligro un servicio que se ejecuta en la cuenta del sistema local, dicho malware tiene una excelente oportunidad para realizar todo lo que desee en ese sistema. Imagine, por ejemplo, el servicio de llamada a procedimiento remoto (RPC) en Windows XP. Antes de Windows XP SP2, el servicio de RPC se ejecutaba en la cuenta del sistema local, que es lo que permitía que Blaster, Welchia y otros gusanos realizaran tareas administrativas una vez que se aprovechaba la vulnerabilidad de RPC.

En segundo lugar, muchos servicios se realizan orientados a Internet, lo que ofrece al malware la posibilidad de atacar mediante la creación de conexiones entrantes con dichos servicios a través de la red y permite que un servicio infectado realice una conexión de salida para infectar a otros sistemas o realizar alguna otra actividad ilícita, como el reenvío de supervisión de pulsación de teclas. La mayoría de los gusanos e infecciones de malware actuales se producen mediante algún método basado en conexiones de red.

Por último, los servicios son normalmente de larga ejecución, lo que significa que se ejecutan desde que arranca un sistema hasta que se cierra. Esto les encanta a los autores de malware porque significa que pueden buscar los defectos de un servicio durante todo el tiempo que el sistema está activado, de modo que el malware dispone de todo el tiempo necesario para realizar sus actividades malintencionadas.

El ataque de los clones

Fue su gran victoria. Si todo se dispusiera conforme a un plan, podría controlar en poco tiempo miles de sistemas de Windows en todo el mundo, enviarles virtualmente cualquier instrucción y, a continuación, relajarse y ver cómo cumplen obedientemente sus órdenes.

Mediante métodos insistentes y esquivos, empezó investigando clandestinamente varios sistemas en busca de un punto débil para introducirse. No tardó mucho en encontrar lo que buscaba, un sistema sin parches con una vulnerabilidad conocida que supiera exactamente cómo atacar.

Esta vulnerabilidad era especialmente funesta porque al atacarla mediante los métodos adecuados se podía obtener acceso total como administrador del sistema. El objetivo no era controlar cualquier cuenta: estaba manipulando la cuenta administrativa más robusta de Windows. Sólo la imaginación podía poner límites a las acciones posteriores.

Tras un momento de reflexión, probó la eficacia de su código malintencionado en el equipo vulnerable y sin parches: ¡funcionó! Así de sencillo, ya tenía privilegios ilimitados en el equipo. Se valió de este acceso administrativo para obligar al equipo a descargar e instalar el código del troyano, a realizar modificaciones en el Registro y, a continuación, a realizar el reinicio, lo que convirtió el sistema infectado en un subordinado preparado y dispuesto a ejecutar todos los comandos. La modificación del Registro provocó que el software malintencionado se ejecutara siempre que el equipo se reiniciaba.

Ahora sus intenciones se veían claramente. Después de la infección, todos los equipos contaminados sondearon puertos de red concretos del resto de equipos de la red. Si un puerto de red concreto estaba abierto y el equipo era vulnerable, se descargaba e instalaba el código del troyano en este equipo nuevo. Se implementaban las mismas modificaciones en el Registro. El ciclo se repetía por recursividad y, de este modo, se había creado un ejército creciente de clones de ataque. Al final del día, miles de sistemas de Windows de todo el mundo formaban parte de este siniestro ejército de clones, indiferentes a los comandos ejecutados por cualquier otra persona de la Tierra.

Por si eso fuera poco, a continuación, puso su punto de mira en el sitio de Microsoft Windows Update y ordenó a todos los clones realizar un ataque por denegación de servicio el 15 de agosto de 2003 en un intento por evitar que algún equipo de alguna parte del mundo se descargara la corrección para la vulnerabilidad que, curiosamente, había estado disponible durante meses.

Probablemente, se haya dado ya cuenta de que acabo de describir la pandemia del gusano MS Blaster que, en agosto de 2003, atacó los equipos de Windows desde todos los rincones del mundo. Blaster fue posiblemente uno de los ataques más graves lanzados sobre Windows y provocó daños valorados en miles de millones de dólares. La ironía es que, aunque MS Blaster tenía una gran influencia sobre los equipos infectados, presentaba una implementación sorprendentemente sencilla.

Funcionamiento de Blaster

Blaster y sus derivados se valen de una vulnerabilidad del servicio de RPC de Windows para ejecutar un desbordamiento del búfer. Un atacante que aproveche esta vulnerabilidad con éxito podrá ejecutar código con privilegios del sistema local en un sistema afectado, lo que le permite realizar cualquier acción en este sistema: instalar programas, ver, cambiar o eliminar datos y crear cuentas nuevas con todos los privilegios.

En el caso de Blaster, el gusano explora automáticamente redes en busca de equipos con el puerto TCP 135 abierto. Cuando encuentra una víctima, Blaster intenta aprovechar la vulnerabilidad de RPC. Si tiene éxito, se conecta al puerto 4444 del equipo de destino y ordena a la víctima iniciar el protocolo trivial de transferencia de archivos (tfpt) y descargar una copia del gusano, denominado MSBLAST.EXE, desde el sistema infectado. Windows 2000, Windows XP y Windows Server 2003 incluyen tftp en el sistema operativo. A continuación, el sistema atacante ordena al equipo recién infectado que inicie MSBLAST.EXE y la víctima se convierte en un nuevo atacante. Blaster también escribe código en la clave de ejecución del Registro ubicada en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run Registry, lo que le permite ejecutarse siempre que el equipo se inicie.

Services Hardening

Son servicios que se han reforzado y asegurado mediante sistemas de protección en Windows Vista de cuatro formas: ejecución de servicios con privilegio mínimo, aislamiento del servicio, acceso restringido de red y aislamiento de la sesión 0. Analizaremos detalladamente cada punto.

Ejecución con privilegios mínimos Muchos servicios de Windows se han ejecutado anteriormente en el contexto de la cuenta del sistema local (la cuenta más importante en Windows). La cuenta del sistema local tiene privilegios y derechos de usuario como poder tener acceso a cualquier objeto del sistema o al perfil de otro usuario, suplantar a usuarios, abrir claves de registro confidenciales como HKLM\SECURITY y presentar las credenciales del equipo a los servidores remotos. Puesto que los autores de malware estarían encantados de tener este nivel de acceso y control en Windows, cualquier servicio que se ejecute en el contexto de seguridad del sistema local se convertirá en un objetivo jugoso.

Resulta que aunque se hayan configurado varios servicios de Windows para su ejecución en la cuenta del sistema local, muchos de ellos sólo necesitan un subconjunto pequeño de los privilegios de pertenencia exclusiva a la cuenta del sistema local. Desafortunadamente, Windows XP y las versiones anteriores de Windows funcionan según el sistema "todo o nada", es decir, no ofrecen mecanismos para seleccionar los privilegios necesarios. Por lo tanto, es inevitable que muchos servicios de Windows se acaben ejecutando innecesariamente con un exceso de privilegios de seguridad.

Service Hardening de Windows Vista soluciona este problema mediante el concepto de privilegios mínimos en la configuración de servicios. Este concepto permite que los servicios se ejecuten con el menor número de privilegios necesarios para su funcionamiento, en lugar de forzar la ejecución con todos los privilegios predeterminados asignados a la cuenta usada para iniciar sesión.

Por ejemplo, puede que un servicio deba actuar como parte de un sistema operativo, pero no deba crear un token de seguridad. Con privilegios mínimos, puede quitar el privilegio de crear tokens. Por consiguiente, se reducen los daños que un atacante puede ocasionar en caso de que dicho servicio se hiciera vulnerable a un ataque. Los desarrolladores pueden usar herramientas de línea de comandos como SC.exe (consulte la figura 2) o usar métodos de programación para definir y especificar los privilegios que necesita un servicio determinado. Microsoft ha aplicado de serie el concepto de privilegios mínimos para reducir los privilegios predeterminados en todos los servicios preinstalados de Windows Vista.

Figura 2 Definición de privilegios de servicios de Windows Vista mediante opciones de comando SC

Figura 2** Definición de privilegios de servicios de Windows Vista mediante opciones de comando SC **(Hacer clic en la imagen para ampliarla)

Aislamiento del servicio En las versiones de Windows anteriores a Windows Vista, cuando un servicio necesita tener acceso a un objeto con privilegios (como un archivo o una clave de registro confidencial), los servicios obtienen el acceso mediante uno de estos tres métodos: usar la cuenta del sistema local para tener acceso al objeto; reducir el nivel de seguridad en la clave o archivo del Registro para habilitar una cuenta de servicio con menos privilegios para obtener acceso; o bien crear una cuenta específica para el servicio y permitir que sólo esa cuenta tenga acceso a los objetos.

Aunque todos estos planteamientos funcionan, existe un problema elemental en cada uno. Los dos primeros implican riesgos inherentes y el tercero introduce la complicación de administrar manualmente las contraseñas en las cuentas nuevas.

Imagine, por ejemplo, que un programa antivirus instala un servicio que necesita acceso a varios objetos confidenciales del sistema, como el archivo con la firma del virus y las entradas de registro pertenecientes al software antivirus. Si el servicio de antivirus se ha configurado para usar la cuenta del sistema local o, con dicho propósito, cualquiera de las otras cuentas de seguridad integradas para obtener acceso a los objetos, esto significaría que si un malware infecta otro servicio de Windows que use esa cuenta, dicho malware podría tener acceso y modificar los archivos de firmas de antivirus, alterar la configuración del registro relacionado con el modo de funcionamiento del software de antivirus o simplemente desactivar el servicio de antivirus por completo. De hecho, el malware actual usa exactamente algunas de dichas técnicas para mantenerse oculto y activo.

Windows Vista resuelve estos asuntos de seguridad y facilidad de uso mediante el aislamiento del servicio, que permite a un servicio reservar un objeto para su uso exclusivo protegiendo el recurso (como el acceso a un archivo o clave de registro) mediante una entrada de control de acceso que contenga un Id. de seguridad (SID) de servicio. De este modo, el servicio de antivirus descrito en el ejemplo se puede ejecutar en una cuenta con pocos privilegios, aunque sigue teniendo acceso a archivos de firmas o claves de registro confidenciales. Para habilitar este acceso, el servicio de antivirus (que se ejecuta en esta cuenta con pocos privilegios) debe tener un SID asignado por Windows Vista. Después de la asignación del SID, el programa antivirus podrá modificar las listas de control de acceso (ACL) del sistema de archivos de los objetos de registro para proporcionar acceso exclusivo al servicio de antivirus.

Veamos otro ejemplo. De vuelta a 2003, el gusano Welchia apareció aprovechándose de una vulnerabilidad de RPC para escribirse en %System%\Wins\Dllhost.exe. También agregó claves a HKLM\SYSTEM\CurrentControlSet\Services para instalar sus servicios en el sistema de Windows infectado. Sin embargo, hoy en día Windows Vista puede combatir a Welchia mediante la restricción de acceso de ambas ubicaciones a determinados servicios y mediante el uso de cuentas con pocos privilegios para garantizar el acceso de esos servicios.

Acceso restringido de red Windows Vista incluye un firewall nuevo creado a partir de las capacidades incluidas en el firewall de Windows XP SP2. Entre las nuevas capacidades importantes se incluyen el filtrado de salida y la integración de IPsec. El firewall nuevo también se integra con Services Hardening de Windows Vista para dificultar la ejecución de malware en un servicio vulnerable de Windows para realizar determinadas actividades de red malintencionadas.

En el firewall de Windows Vista, los servicios de Windows son directivas asignadas de firewall de red que imponen limitaciones y restricciones en el comportamiento del servicio. Por ejemplo, se puede asignar a un servicio tipo Plug and Play que posiblemente no necesitará establecer comunicación a través de un puerto de red una restricción "no hay acceso a la red". Con esta restricción asignada, un ataque diseñado para un servicio concreto nunca tendrá acceso al servicio mediante métodos que usen la red. El firewall bloqueará cualquier intento de comunicación del servicio con restricciones, ya sea de entrada o de salida. Se puede restringir el acceso a puertos específicos en la configuración de otros servicios con necesidades justificadas de acceso a una red. Los desarrolladores pueden usar esta capacidad para restringir el acceso a red de los servicios.

Las restricciones de red se combinan con Service Hardening para ofrecer un sistema sólido de defensa contra ataques futuros a través de los servicios, lo que supone una mejora importante con respecto a versiones anteriores de Windows. Anteriormente, Windows no podía decidir cómo y dónde establecer comunicaciones a través de Internet y qué servicios podían hacerlo. Sin embargo, aplicando las restricciones de la red de firewall de Windows Vista al servicio de RPC, podemos impedir que virus como Blaster, Sasser o Welchia infecten servicios para comunicarse con otros equipos.

Aislamiento de la sesión 0 La función Cambio rápido de usuario de Windows XP aloja simultáneamente a los usuarios conectados iniciando una sesión para cada usuario de Windows. La sesión 0 se crea durante el inicio y las sesiones adicionales se crean a medida que sea necesario. Los servicios siempre se han ejecutado en la sesión 0 y, antes de Windows Vista, también se podían ejecutar las aplicaciones de usuario en la sesión 0. Sin embargo, existen riesgos para la seguridad al ejecutar las aplicaciones del usuario en la misma sesión porque los servicios se ejecutan con privilegios elevados y, por lo tanto, son el objetivo del software malintencionado que busca la forma de elevar su nivel de privilegios.

Windows Vista evita estos riesgos de seguridad mediante la reserva de la sesión 0 exclusivamente para los servicios, la ejecución de las aplicaciones en otras sesiones y la eliminación de la interactividad de la sesión 0, lo que significa que un servicio no puede crear una interfaz de usuario, como un cuadro de diálogo o una solicitud a los que el usuario final tenga acceso. Estos cambios provocan que el aislamiento de la sesión 0 afecte a la compatibilidad de la aplicación para quien desarrolle servicios o controladores de Windows.

Resumen

Windows Vista es la primera versión del sistema operativo de escritorio de Trustworthy Computing de Microsoft e incluye avances importantes destinados a la protección de los usuarios de Windows. La seguridad en informática es, evidentemente, una disciplina en evolución y no hay duda de que los autores de malware no cesan de buscar, sondear e investigar nuevas formas de atacar a Windows. Sin embargo, las características nuevas de Service Hardening de Windows Vista sube considerablemente el listón al mejorar la configuración predeterminada de seguridad y reducir el área potencial para un ataque. Consulte microsoft.com/whdc/system/vista/Vista_Services.mspx para obtener más información sobre estas mejoras importantes.

Wole Moses es director regional de Microsoft Windows y experto con ocho años de antigüedad en Microsoft. Establecido actualmente en Estambul (Turquía), Wole trabaja con los clientes del mayor mercado emergente de Oriente Medio y África, les ayuda a prever y diseñar soluciones basadas en Microsoft que optimizan las infraestructuras de TI y aumentan simultáneamente la seguridad.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.