lunes, 10 de octubre de 2011

Por qué un cortafuegos personal ¿nunca? es efectivo contra el malware

El cortafuegos personal es una de las medidas "estrella" recomendada desde hace muchos años para luchar contra todo tipo de males. La inercia de la recomendación ha seguido hasta nuestros días, donde un cortafuegos entrante tradicional, poco o nada puede hacer contra muchos de los ataques más sofisticados que se sufren hoy en día. Veamos por qué.

Instalar un cortafuegos personal era imprescindible hace diez años. Los sistemas operativos (por llamarlos de alguna forma) Windows 9X estaban conectados directamente a la red, con IP pública a través de módem. No contar con un firewall constituía un suicidio tecnológico. Después de Sasser y Blaster, XP SP2 se instauró con cortafuegos entrante integrado y activo. Las reglas del juego cambiaron por completo, pero parece que pocos se acordaron de actualizar las instrucciones. Los atacantes se adaptaron rápido, las víctimas... todavía no.

El cortafuegos entrante

Hoy en día un cortafuegos entrante no es útil contra el malware, han aprendido a sortearlo y es complicado encontrar troyanos "clásicos" que abran puertos en el sistema. Además, aunque lo consiguieran, no sería efectiva esta técnica: hoy también es mucho más habitual conectarse a la red de forma indirecta, anteponiendo un router. Estos routers suelen disponer de cortafuegos que protege del exterior y, aunque no lo tuvieran, un atacante tendría que realizar una traducción a direcciones y puertos internos para llegar al sistema que quiere atacar. Por tanto, el cortafuegos entrante en el sistema no está diseñado contra el malware de hoy. Sería una herramienta más útil contra otro tipo de ataques.

El cortafuegos saliente

¿Qué es efectivo entonces? El cortafuegos saliente. Ese que introdujo Vista en 2006... desactivado por defecto y por tanto, con nulo impacto real en la Red. Su ventaja es que detendría a una buena parte (me atrevería a decir que la inmensa mayoría) de los troyanos actuales, que depende de infraestructuras externas para salir a Internet e infectar el sistema.

Su problema es que si bien no todas las aplicaciones legítimas reciben conexiones procedentes del exterior (no tienen que ser revisadas por el cortafuegos entrante), sí que casi todas hoy en día se comunican con el exterior, y tendrían por tanto que estar contempladas como excepción en el cortafuegos saliente. Es una tarea compleja, pero teniendo en cuenta lo bien que se las ha apañado Windows con Vista y 7 para diseñar un cortafuegos entrante que no "estorba" y es efectivo, sospecho que en el futuro podría tenerlo activo por defecto si trabajan ciertos aspectos.

Por ejemplo, podrían añadir ciertas funciones para hacer más cómodo un cortafuegos saliente. Estas son algunas ideas:

* Que sólo las aplicaciones firmadas pudieran salir sin problema a Internet. Las no firmadas, pedirían confirmación.

* Que sólo las aplicaciones alojadas en ciertas rutas (en las que el usuario no tiene permiso de escritura como tal, sólo como administrador) pudieran salir sin problemas.

* Función para bloquear aplicaciones por hash,

* Función para bloquear aplicaciones según el lugar de donde proviene (descargada desde alguna zona concreta de Internet Explorer...)

¿Filosofía AppLocker aplicada al cortafuegos?

Escribiendo estas recomendaciones, descubrimos rápidamente que en realidad son las mismas funciones y condiciones con las que permite jugar AppLocker y SRP (Software Restriction Policy), una tecnología ya activa desde hace años en Windows para bloquear la ejecución de programas bajo ciertas circunstancias. La idea para implementar un cortafuegos saliente efectivo sería trasladar este concepto a la "conexión", en vez de a la "ejecución".

Por supuesto que esto tendría problemas. Por ejemplo AppLocker y SRP son eludibles de diferentes maneras. Por supuesto que, aun con todas las barreras activas, un troyano puede inyectarse en el espacio de memoria de un proceso existente en el sistema y salir a Internet camuflado. O peor aún, alcanzar el ring0 y modificar el comportamiento de sistema donde ninguna regla tendría ya valor. Esto se sabe desde hace tiempo y es una técnica usada por troyanos sofisticados. Pero si al menos se implementara algo así, se estaría elevando un listón que, en este sentido, ahora mismo está abandonado en el suelo mientras el malware campa a sus anchas.


Sergio de los Santos
ssantos@hispasec.com
Twitter: @ssantosv



2 comentarios:

  1. es una buena opción para evitar un reverse shell =)

    ResponderEliminar
  2. De todas formas si Win comprobará las ips a las que salen, mediante un registro de nombre-dominio, o de blacklist, o algo que detectará ips de Tor o ips de malware conocidas a las que se conectan los troyanos no amortiguaria el tema?

    Saludos

    ResponderEliminar