Así funciona una heurística antivirus. Primera parte

Muchas veces hablamos de los productos antivirus, y entre amigos comentamos que si este es mejor que el otro, que si la detección basada en firmas de aquel es mejor que la del vecino, o que la heurística de un producto determinado es francamente buena.

La heurística muchas veces es vista como magia, como esa capacidad que tiene una solución antivirus para clasificar como maliciosa una muestra sin tener consignada una firma específica para la misma. Una técnica «mágica» que permite marcar al software como sospechoso de tener un comportamiento potencialmente malicioso.

Todos somos heurísticos

Nada mas lejos de la realidad. El principio de la heurística es muy sencillo y fácil de comprender. Otro tema bien distinto es que los algoritmos resultantes sean mejores o peores, que es donde está realmente el quid de la cuestión.

Imagínate que vas por la calle y notas que te sigue alguien. Te fijas por un reflejo o te das la vuelta y ves que ese alguien tiene un aspecto sospechoso y actúa de forma sospechosa. Lo más normal es que en este punto, tú clasifiques a ese individuo como sospechoso y cambies tu estado de tranquilidad por un estado de alerta. Eso es heurística, es un comportamiento basado en la experiencia, que se va modificando en función a los acontecimientos.

Wikipedia: Se denomina heurística a la capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines.


Heurística en computación

En computación el concepto es perfectamente portable. Si tenemos el motor antivirus corriendo y detecta un comportamiento sospechoso, éste pasará a un estado de alerta y nos notificará que la muestra es potencialmente peligrosa. El antivirus no va a estar totalmente seguro del carácter malicioso, puesto que lo ha marcado como sospechoso en función a indicios de comportamiento, y no en función a una firma conocida y con la que existe un 100% de coincidencia. El sistema realiza innovaciones positivas para su finalidad (nuestra salvaguarda) en tiempo real, o al menos, de modo inmediato. ¿Fácil verdad?

Wikipedia: Los productos antivirus suelen tener técnicas de reconocimiento inteligente de códigos maliciosos (virus, gusanos, caballos de troya, etc), las cuales se conocen comúnmente bajo el nombre de heurísticas. El término general implica funcionalidades como detección a través de firmas genéricas, reconocimiento del código compilado, desensemblado, desempaquetamiento, entre otros.

De lo sencillo a lo complicado

Este análisis de comportamiento sencillito que hemos visto da origen a toda una rama de las ciencias exactas. Las matemáticas heurísticas son complejas, ya que a fin de cuentas tratan de modelizar comportamientos y no realidades claras y directas. La gran mayoría de las veces, los resultados de este tipo de aproximaciones no podrán ser explicadas.

Estas técnicas de reconocimiento inteligente son lo que matemáticamente se conoce como algoritmos exploratorios multivariantes. Veamos qué es cada cosa en esa frase.

  • Algoritmo: Modelización matemática de un comportamiento finito, es decir, que tiene un comienzo y un final.
  • Exploratorio: Método de observación y análisis que permite, posteriormente, la toma de decisiones.
  • Multivariante: Carácter matemático que establece la dependencia de un evento determinado de múltiples factores concurrentes.

En resumen, si la detección heurística de virus es un problema matemático de exploración multivariante que necesita ser modelizado, a través de distintos algoritmos. Se trata por tanto, de observar la realidad y ver cómo afectan todas las condiciones de contorno consideradas en la detección de la muestra, para posteriormente poder extraer inteligencia del proceso, convirtiendo el experimento de observación en un modelo escalable que sea válido en futuras aproximaciones sin perder su capacidad de representación óptima de la realidad.

Wikipedia:

Firmas Genéricas

Muchos códigos maliciosos son modificados en forma constante por sus autores para crear nuevas versiones. Usualmente, estas variantes contienen similitudes con los originales, lo cual se denomina como una familia de virus. Gracias a las similitudes dentro del código del virus, los antivirus pueden llegar a reconocer a todos los miembros de la misma familia a través de una única firma o vacuna genérica. Esto permite que al momento de aparecer una nueva versión de un virus ya conocido, aquellos antivirus que implementan esta técnica puedan detectarlo sin la necesidad de una actualización.

Reconocimiento de código compilado

Cuando un programa es compilado para poder convertirlo en un archivo ejecutable, la codificación resultante representa instrucciones que se le darán al sistema para realizar ciertas acciones. Las implementaciones de heurística de algunos antivirus utilizan técnicas para reconocer instrucciones comúnmente aplicadas por los códigos maliciosos, y así poder identificar si un archivo ejecutable puede llegar a ser un código malicioso.

Desensamblado

Todo archivo ejecutable puede ser desensamblado con el objetivo de obtener el código fuente del programa en lenguaje ensamblador. La heurística de algunos productos antivirus es capaz de analizar el código fuente de los programas sospechosos con el fin de reconocer en él técnicas de desarrollo que normalmente sean usadas por los programadores de virus y así reconocer un código malicioso nuevo sin la necesidad de una actualización.

Desempaquetamiento

Los programadores de códigos maliciosos suelen usar empaquetadores de archivos con el fin de modificar la «apariencia» del virus a los ojos del análisis antivirus. Empaquetadores como UPX, son ampliamente utilizados para esto. Para evitar ser engañados por un código malicioso antiguo, reempaquetado, los antivirus incluyen en sus técnicas heurísticas métodos de desempaquetamiento con el fin de poder analizar el código real del programa, y no el empaquetado.

Evaluaciones Retrospectivas

La Heurística es un aspecto muy díficil de probar en los productos antivirus, dado que se requiere realizar las denominadas evaluaciones retrospectivas. Para poder analizar correctamente el funcionamiento de las capacidades heurísticas o proactivas de un antivirus, lo que se hace es detener la actualización de firmas del producto durante un período de tiempo X. En ese lapso, se acumulan muestras de códigos maliciosos nuevos, para que una vez recolectada una cantidad suficiente, se analice si los productos antivirus las reconocen o no. Al no haber sido actualizados para detectar esas muestras, el antivirus solo podrá reconocer si están infectadas o no a través de sus capacidades heurísticas.

Gracias a estas evaluaciones se puede conocer en detalle el rendimiento de los productos antivirus frente a virus nuevos o desconocidos.

La mejor heurística, la más óptima

Por definición, un algoritmo heurístico es aquel que, sin poder obtener certeza de un evento, se pretende aproximar lo máximo a la realidad. Parece por tanto adecuado deducir que el mejor algoritmo heurístico será aquel que, para una actividad determinada, se aproxime más al comportamiento real de los sucesos sometidos a exploración. Los factores de mejora básicos de la optimización son los siguientes:

  • Inversión mínima de recursos computacionales
  • Minimización de falsos positivos y fallidos verdaderos
  • Extensibilidad del modelo a escenarios de alta variabilidad

Esto es lo que hace que una solución antivirus heurística pase de ser mediocre a buena. La capacidad de aproximación a la realidad y la multivarianza de los factores de amenaza.

Un motor antivirus heurístico que califique todas las muestras como sospechosas es un motor heurístico, pero no es óptimo. Tampoco lo es el que comete demasiadas falsas identificaciones, ni tampoco lo es el que no termina de estar seguro y deja pasar como válidas muestras que no lo son.

En la siguiente entrega

Daremos una vuelta más de tuerca y veremos algunos modelos heurísticos, tratando de ver cómo pueden integrar estos métodos las soluciones antivirus. Haremos una aproximación teórica, y es que como es natural, los fabricantes de motores heurísticos no sueltan prenda sobre el secreto de sus masas. Estos métodos son:

  • Tabú search (TS, Búsqueda tabú)
  • Genetic algorithms (GA, Algoritmos genéticos)
  • Método Hero
  • Random ascent (RA, Subida azarosa)
  • Simulated annealing (SA, Temple simulado)

También veremos que el fundamento de la exploración multivariante puede volverse extremadamente complicado. Veremos, a través de la inteligencia artificial y las redes neuronales, los ejemplos que posiblemente sean más representativos de estas técnicas, los sistemas de detección de bombas de red neuronal que puede tener un escáner de un aeropuerto.

9 comentarios sobre “Así funciona una heurística antivirus. Primera parte

  1. weno me gusto mucho el articulo, aprendi bastante gracias a sergio hernando, sin embargo tengo conocimientos basico de programacion y me gustaria q formaramos un grupo con el fin de aplicar un algoritmo heuristico.. en un antivirus de prueba con fin de aprendizaje aqui les dejo mi corre, kellermanrivero@hotmail.com !!! y krsloco@gmail.com Se los agradezco

  2. muchas gracias por la informacion me fue de mucha ayuda con esto comprendi mas el funcionamiento de un antivirus, por cierto el que yo uso es el Nod32 para mi es el mejor hasta el momento lo recomiendo.

  3. uy panita muchas gracias por esta informacion mas valiosa en realidad no sabia lo que significa heuristico y ya se que son hechos no exactos bien sean matematicos oreales que se aproximan a larealidad osea que segun esto el mejor antivirus es es que se aproxime mas a dar con los codigos maliciosos por ejemplo

    varios programas exe usan un codigo hasta cierta parte parecido o igual a un virus informatico.

    si el antivirus lo detecta cabe la duda de que puede ser un falso positivo

    pero si el examen heuristico se aproxima y mira bn y revisa bn los codigos hasta casi su final y tiene comportamiento de virus puede ser considerado como virus esto quiere decir que este es un buen antivirus.

    conclusion personal:

    segun el texto los virus originales comienzan con un codigo dado por el programador. listo osea que las variantes siempre cambian los codigos o numeros finales del algoritmo para que se lo determine una variante del virus original?

    espero respuesta gracias…

  4. lo mejor pero quiero saber como desactivar la heuristica de un antivirus sin que paresca desactivado el antivirus

Comentarios cerrados.