Detectando malware II: la tecnología heurística

Hace poco comenté en este blog la primera gran técnica de detección de código malicioso: las firmas de virus. Gran sistema, y muy efectivo, pero cada vez más complejo debido a la acumulación de códigos. Mantener una base de datos de firmas de millones de códigos es muy complicado. Tanto es así, que algunas empresas han renunciado a ella por ser incapaces de manejar tamaña cantidad de datos.

Problemas técnicos aparte, hay que reconocer que es imposible mantener la base de datos de firmas actualizada con la frecuencia adecuada. Con el nivel de malware que circula hoy en día, debería hacerse una actualización cada pocos segundos, lo que se vuelve técnicamente complejo y absolutamente incómodo para los usuarios.

Así pues, tanto en ESET como en otras compañías se optó hace tiempo por una solución más práctica: “adivinar” qué es un virus y qué no lo es. Esto entraña un gran riesgo, ya que puede producirse un “falso positivo”, es decir, detectar como peligroso algo que no lo es, o un “falso negativo”, dejando que un auténtico código malicioso infecte un ordenador sin encontrar peligro alguno.

Este proceso de “adivinación” de ESET es ya tradicionalmente uno de los más efectivos del mercado, si no el más, y su nombre, “tecnología heurística”, aunque extraño, tiene una curiosa historia detrás.

Cuentan aquellos que saben de historia que Arquímedes de Siracusa tuvo que enfrentarse a un curioso problema planteado por Hierón II, rey de Siracusa, referente a una corona. Descubrió la solución a ese problema dándose un baño (o así lo describe Vitruvio) y salió a la calle gritando “Eureka, eureka”, que significa “lo he encontrado” <modo pedante on>.  En concreto, es la primera persona del singular del aoristo de indicativo del verbo griego empleado para “encontrar”, heurisko, (εὑρίσκω) <modo pedante off>.

Así, la tecnología heurística encuentra códigos maliciosos sin tener conocimiento previo de ellos, simplemente observándolos. Y sinceramente, no es fácil.

Cuando, por ejemplo, descargamos un fichero, el antivirus debe comprobar que ninguna parte de su código coincida con la base de datos de firmas, y después, debe verificar con la tecnología heurística que sus instrucciones no son peligrosas. Y aquí llegamos a un peligroso punto: ¿qué es peligroso y qué no? Veámoslo con un ejemplo.

Estamos regresando a casa por la noche, tras una larga y productiva jornada de trabajo. Atravesamos una calle desierta y, al fondo, vemos a una persona con una pinta extraña. Lleva las ropas ajadas, ojeras de varios días, un extraño temblor en la mandíbula, las pupilas muy dilatadas, una navaja en la mano y extrañas muestras de pinchazos en el antebrazo. Además, se dirige hacia nosotros. ¿Qué podemos pensar?

Una opción es que sea un amable comercial de navajas albaceteñas que con toda su buena voluntad viene a ofrecernos su muestrario en caso de que deseemos adquirir su material de calidad superior. Si, por supuesto, es posible. Pero la posibilidad de que sea un toxicómano con síndrome de abstinencia que desea hacer, a la fuerza, una transferencia de dinero de nuestro bolsillo al suyo es muy, muy alta. Nuestra tecnología heurística nos alerta y nos hace salir corriendo.

En el antivirus ocurre lo mismo. Si un programa quiere hacer copias de sí mismo en determinadas carpetas del sistema, si quiere ocultarse al usuario, si quiere establecer conexiones por puertos de Internet poco usuales, si quiere capturar pulsaciones de teclado… ¿es un programa legítimo? Pues a lo mejor sí, por supuesto, pero la probabilidad de que sea un programa espía es muy alta, así que se nos alertará del peligro.

Sin embargo, al desconocer exactamente qué es ese programa, quedará almacenado en “cuarentena”, hasta que mis compañeros del Laboratorio de ESET puedan analizarlo y comprobar si es realmente peligroso o no. Pero hasta que el dictamen de peligrosidad no sea firme, ese posible peligro ha quedado neutralizado.

Misión cumplida. Peligro evitado. ¡Eureka!

Fernando de la Cuadra

@ferdelacuadra

Comentar

Acerca de las cookies en este sitio

Este sitio web utiliza cookies propias y de terceros para mejorar tu experiencia de usuario y obtener información estadística. Para poder seguir navegando pulsa en "Sí, estoy de acuerdo". Podrás retirar este consentimiento en cualquier momento a través de las funciones de tu navegador. Ver nuestra política de cookies..