Aunque el título parezca referirse al conjunto total de las tecnologías de detección de códigos maliciosos, el artículo se concentra más bien en las tecnologías que no recurren a signaturas.
Al principio del artículo, el autor señala que cualquier tecnología de detección de códigos maliciosos tiene dos componentes: uno técnico y otro analítico. El componente técnico es la suma de todas las funciones y algoritmos que alimentan con datos al componente analítico para su respectivo análisis. A su vez, el componente analítico es un sistema capaz de tomar decisiones y de llegar a un veredicto sobre los datos analizados.
El componente técnico
El componente técnico es un sistema de detección de programas maliciosos que recoge datos que luego serán utilizados para analizar la situación.
Dado que cualquier programa malicioso es a la vez un archivo con contenido específico y la suma de los efectos del programa malicioso sobre el sistema operativo, hay una serie de métodos que se usan para recoger datos que permitan identificar los códigos maliciosos. Estos métodos aparecen en una lista por orden de abstracción. El término abstracción se usa para denotar el punto de vista desde el cual se considera el programa en ejecución: como un objeto digital original (una colección de bytes), como un comportamiento (más abstracto que la colección de bytes) o como la suma de esfectos sobre el sistema operativo (más abstracto que el comportamiento). La tecnología antivirus ha, más o menos, evolucionado en este sentido: trabajando con archivos, trabajando con eventos a través de un archivo, trabajando con un archivo a través de eventos, y trabajando con el mismo ambiente. En consecuencia, la lista ofrecida en el artículo ilustra una cronología natural.
- Los primeros programas antivirus analizaban códigos de archivos que se trataban como secuencias de bytes. Esto significa que sólo se analizaba el código byte fuente de un programa, y no se tomaba en cuenta el comportamiento del programa. Hoy en día, se sigue utilizando este método en los programas antivirus, no como el único método de detección, sino como un complemento a otras tecnologías.
- Código de emulación de un programa
Emulación significa imitar el trabajo de un sistema recurriendo a otro sistema, sin perder la funcionalidad y sin distorcionar los resultados. En relación a los programas antivirus, el emulador transforma los bytes del programa en comandos, y luego ejecuta cada comando en una copia virtual del ambiente del ordenador. En otras palabras, mientras el emulador trabaja con un archivo también analiza los eventos. La emulación posibilita observar el comportamiento de un programa sin poner en riesgo ni el sistema operativo ni la información del usuario.
- Virtualización: ejecución de un programa en un entorno virtual (sandbox).
Una “caja de arena” es un ambiente que utiliza restricciones o emulaciones parciales o totales de los recursos del sistema operativo para asegurar que el programa se ejecute en el espacio. En este caso, la virtualización posibilita trabajar con un programa que se esté ejecutando en un ambiente real pero bajo estricto control. Usando la metáfora de un niño en el parque infantil, el sistema operativo representa el mundo, el programa malicioso es el niño, y las restricciones bajo las cuales juega el niño son los límites de la caja de arena: una serie de reglas para la interacción entre el programa y el sistema operativo. Se puede virtualizar cualquier punto de contacto entre el programa y su ambiente, tal como el sistema de archivos y el sistema de registros. Mientras que la emulación brinda un ambiente en el cual se puedan ejecutar los programas, la virtualización recurre al mismo sistema operativo como ambiente, con la caja de arena controlando la interacción entre el ambiente y el programa.
- Monitoreo de eventos en el sistema
Mientras que un emulador o caja de arena observa cada programa por separado, la tecnología de monitoreo observa todos los programas de manera simultánea, registrando todos los eventos en el sistema operativo creados por los programas en ejecución. Actualmente, esta tecnología es la que más rápido está evolucionando. Sin embargo, no es la más infalible, ya que el riesgo que se crea al ejecutar un programa en un ambiente real reduce de manera significativa el nivel de protección. Además, un programa malicioso puede llegar a engañar a la tecnología de monitoreo.
- Búsqueda de anomalías en el sistema
Este método recurre a las siguientes características:
- un sistema operativo, junto a los programas en ejecución dentro de ese sistema constituye un sistema integrado;
- el sistema operativo tiene una intrínseca “condición de sistema";
- Si se ejecuta el código malicioso en el ambiente, entonces el sistema tendrá una condición “no saludable”; esto difiere de un sistema con una condición "saludable" en el cual no hay códigos maliciosos.
Para detectar códigos maliciosos de manera efectiva mediante este método, se necesita un sistema analítico de relativa complejidad, ya sea un sistema experto o una red neural. Debido a esta complejidad, la tecnología aún se encuentra subdesarrollada. Actualmente, las implementaciones en este campo generalmente comparan la condición del sistema con un estándar conocido, lo cual no es efectivo.
El componente analítico
En cuanto al componente analítico, el grado de sofisticación de la toma de decisiones del algoritmo es variable. De manera aproximativa, se pueden dividir en tres categorías:
- Comparación simple
En esta categoría, se emite un veredicto en base a la comparación de un objeto singular con una muestra disponible.
- Comparación compleja
En este caso, se emite un veredicto en base a la comparación de uno o más objetos con muestras correspondientes. Los modelos de comparación pueden ser flexibles, y la comparación proporciona un resultado en base a probabilidades.
- Sistemas expertos
En esta categoría, se emite un veredicto tras un sofisticado análisis de información. Un sistema experto puede llegar a incluir elementos de inteligencia artificial.
El artículo continúa examinando de manera exacta los algoritmos que se usan en las tecnologías de detección de programas maliciosos. El componente técnico de una tecnología es responsable de ciertas características como cuántos recursos puede consumir un programa (y como resultado, cuán rápido trabaja), seguridad y protección. En general, cuanto menos abstracta sea la forma de protección, más segura será, pero también será burlada con mayor facilidad.
El aspecto analítico de una tecnología es responsable de ciertas características como proactividad (y el consecuente impacto en la necesidad de frecuentes actualizaciones de las bases de datos antivirus), el índice falso-positivo, y el nivel de involucramiento del usuario. Este último se refiere al grado en el que el usuario necesita participar en la definición de políticas de seguridad: crear reglas, excepciones, y listas blancas y negras. También refleja el grado en el que el usuario participa en el proceso de emisión de veredictos confirmando o rechazando las sospechas del sistema analítico. Cuanto más complejo sea el sistema analítico, más sólida será la protección. Sin embargo, una mayor complejidad implica un mayor número de falsos positivos, que a su vez puede compensarse con un mayor involucramiento del usuario.
El autor concluye dando recomendaciones sobre cómo elegir una protección no basada en signaturas y enfatiza el hecho de que no hay "la mejor" protección, ni una protección universal. Cada tecnología tiene sus pros y sus contras. Al elegir un producto, el usuario debería guiarse por los resultados de pruebas independientes y por las opiniones de los usuarios de soluciones antivirus conocidas.