Seguridad

Firewall, cuando el antivirus ya no es suficiente
:: Blaster, el virus que nos demostró la utilidad del cortafuegos ::

Aunque el virus Blaster arrasara hace unos veranos, y aún pueda estar dando sus últimos(?) coletazos, siempre es de sabios sacar una conclusión útil de todo mal, y en este caso, este maléfico programa que ha traído de cabeza a todos los usuarios de sistemas XP, llevándolos a una carrera contrarreloj en la que el ordenador se reiniciaba en un minuto ante sus impotentes dedos que intentaban teclear y buscar una solución a toda prisa antes del desastre, este virus, como digo, nos ha enseñado que existe una herramienta necesaria para los usuarios: el cortafuegos personal.

Y es que, según los expertos, la primera versión del virus está realmente mal programada. Es extremadamente ineficiente, a pesar de su velocidad de expansión. El autor no se preocupó de programar un virus en sí, sino que copió y pegó el código del conocido exploit que aprovechaba la vulnerabilidad y le proporcionó un mecanismo artesano para propagarse, añadiendo una rutina que genera 20 direcciones IP al azar tomando como base la dirección del propio ordenador infectado. Esto demuestra una lentitud extrema con respecto al Code Red, que era capaz de escanear 100 o 200 direcciones a la vez.

Tampoco se preocupaba de averiguar qué tipo de sistema operativo está intentando infectar (Windows XP ó 2000). Teniendo en cuenta que el exploit necesitaba conocer el sistema operativo para aplicar una dirección de retorno de pila adecuada y funcionar correctamente, esto suponía un gran problema de expansión para el virus, que elegía aleatoriamente la variante del exploit, reduciendo así al 50 por ciento su capacidad de infección. Esta es la causa de que los sistemas XP se reinicien cada pocos minutos. En estos ordenadores, el virus ha intentado aplicar el exploit pensado para Windows 2000.

Pero aún así, con todas estas taras y algunas más, el virus consiguió una propagación masiva. Hoy día, meses después de su descubrimiento, se puede calificar de negligencia absoluta el hecho de conectarse a Internet con un sistema XP no parcheado o sin cortafuegos. Muchos conocerán esta sensación: acaban de formatear su ordenador, instalan su Windows, y se conectan a Internet para actualizar ciertas aplicaciones. Antes de que hayan podido acceder a la página deseada, ya están infectados, y el sistema operativo avisa de que va a reiniciar en un minuto. El virus Blaster continúa al acecho.

El gusano se aprovecha de una vulnerabilidad descubierta el 16 de Julio en el RPC (Remote Procedure Call) de prácticamente todos los sistemas Windows. Este es un protocolo que proporciona a Windows un mecanismo de comunicación entre procesos para que un programa que se está ejecutando en un equipo pueda ejecutar también código en un sistema remoto. La facilidad para explotar este problema y conseguir ejecutar código arbitrario en la víctima ya estaba reportando suculentos beneficios a los hackers maliciosos que buscaban potenciales víctimas en el IRC desde finales de julio, cuando se hizo público el exploit. Aprovecharse del problema "a mano" conociendo la IP de la víctima resultaba trivial. Para colmo, poco después de la aparición del parche que solventaba la vulnerabilidad, se volvió a descubrir otro fallo en el mismo servicio RPC DCOM tan peligroso como el primero, que permitía a otras variantes del virus expandirse de forma muy parecida, aunque las víctimas hubiesen parcheado su sistema con la primera actualización.

Todo esto se hubiese podido evitar si los cortafuegos personales gozaran de la misma popularidad que los sistemas antivirus. Somos conscientes de que un virus puede echar a perder nuestro sistema Windows, pero tenemos todavía en la conciencia que es necesario ejecutar algo que nos llega por correo para que nos infectemos. Blaster nos ha enseñado que esto no tiene porqué ser así. Un virus puede aprovecharse de uno de los servicios que mantenemos abiertos al público. En este caso concreto, el RPC. No todo es ejecutar archivos que contengan código malicioso, los sistemas abren puertos para poder comunicarse con otras redes o para que otros ordenadores puedan compartir información con nosotros, esto es más habitual de lo que pensamos. Si queremos saber qué puertos están abiertos (escuchando) en nuestro sistema, debemos irnos a una consola de Windows, tecleando cmd.exe en "Inicio", "Ejecutar". Una vez en la línea de comando, escribimos:

netstat -a

Y se nos mostrará una lista completa de puertos abiertos. No olvidemos que detrás de cada puerto existe un programa que escucha y atiende las peticiones que realizan los otros sistemas, y estos programas no son infalibles, pueden (y de hecho lo hacen con mayor asiduidad de la que nos gustaría) cometer errores, o tener problemas de diseño esperando a ser descubiertos. En el caso de Blaster, aprovechaba un desbordamiento de búfer en el protocolo RPC. Esto se produce cuando el programador ha olvidado controlar el tamaño o el formato de la entrada. Si se espera una cadena de texto, por ejemplo, de diez caracteres como máximo, y se le introducen diez mil, si la persona que ha programado la aplicación no se ha preocupado de controlar este tipo de comportamiento, el programa puede volverse inestable y desbordar la memoria del ordenador. Es en este momento en el que los verdaderos hackers tienen que estudiar el estado en el que queda la memoria y poder así aprovecharse del momento de debilidad para ejecutar o "inyectar" código, ya sea un virus o lo necesario para tomar el control de la víctima.

El desbordamiento de búfer es una de las piedras angulares de la seguridad, mucho más común y difícil de detectar de lo que pensamos. Normalmente ocurre en los programas que abren puertos, y los puertos siempre, sin excusa, deben estar vigilados. Aprendamos a navegar con un buen cortafuegos personal. Su uso, aunque en principio sea un poco complicado, se vuelve sencillo con la práctica. Es necesario indicarle qué aplicaciones pueden acceder al exterior por medio de qué puertos, y nos avisan cuando intenta acceder desde el exterior a alguno de nuestros servicios internos. Se crean reglas para que recuerde cómo queremos que se comporten nuestros programas y permanece siempre residente en memoria, ocupando no demasiados recursos.

No hay excusa cuando descubrimos que la mayoría de estos programas son gratuitos. Uno de los más populares es ZoneAlarm, o Kerio, programas freeware que nos pueden evitar más de un problema en Internet, una red cada vez más peligrosa.

Se pueden descargar desde www.kerio.com o www.zonelabs.com.

...por Sergio de los Santos

CONOCE MÁS INFORMACIÓN EXCLUSIVA SOBRE SEGURIDAD EN MUNDOINFORMÁTICA