El análisis de firmas se refiere a algoritmos de patrones de similitud bastante simples, que buscan una secuencia de bits (una cadena de caracteres), característica de cada virus o variantes en la base de definiciones del motor de búsqueda,
y que es poco probable que aparezca por accidente en un archivo no infectado.
Algunos especialistas en antivirus han tratado de desalentar [2] el
uso de la descripción del análisis de firmas, a favor
de “cadenas
de búsqueda”, o “cadenas
de análisis”; pero esto parece no tener sentido
cuando incluso las empresas antivirus utilizan la expresión.
Una objeción al término es que perpetúa la noción antigua del método de trabajo de los motores de análisis, aunque el mismo argumento podría aplicarse también a los términos
alternativos.
Las dificultades reales con el uso de la expresión “análisis de firmas” son
las siguientes:
- Tiende a perpetuar el mito de que es el único tipo de detección que utilizan los motores de análisis
de las aplicaciones antivirus.
De hecho, muchos virus no pueden ser identificados
buscando solo una cadena de caracteres estática.
- Sugiere que hay una secuencia única de octetos en
cada virus que es utilizada por todos los motores para
identificarla.
En realidad, los distintos motores de análisis
podrían usar cadenas de búsqueda
(y algoritmos) muy diferentes para detectar al mismo
virus.
Algunas fuentes de información [10] han
confundido más la cuestión, dando la impresión de que los analizadores buscan solamente cadenas de texto sencillas, más
que secuencias de octetos.
Un método así es generalmente poco confiable, totalmente ineficaz ante muchos tipos de código malicioso, e ineficiente a nivel de programación.
También es fácilmente vulnerable para un escritor de
virus, o, de hecho, cualquier persona capaz de editar un archivo;
y peligroso por su potencial para generar varios falsos positivos.
Los caracteres comodín y
las expresiones comunes de tipo UNIX permiten mayor flexibilidad en
la búsqueda de cadenas de texto.
En lugar de buscar una cadena estática (una secuencia fija de octetos), el motor de análisis reconoce un patrón
asociado a un virus, aun cuando otros octetos o secuencias de octetos
(ruido) se interpolen entre los caracteres.
Un ejemplo sencillo de un octeto de ruido es la inserción de una instrucción NOP (sin operación, No Operation),
que no realiza ninguna función, excepto consumir tiempo de
proceso.
Estas mejoras al análisis de cadena de caracteres básico permiten la detección
de algunos virus cifrados y polimorfos [8].
Sin embargo, aun con este perfeccionamiento, este tipo de análisis no es particularmente eficiente cuando se trata de buscar virus múltiples,
y el advenimiento de virus polimorfos complejos actualmente ha perjudicado a algunos motores que no podían migrar a técnicas de detección más avanzadas. [8, 11]
El análisis
algorítmico para virus específicos de
los antivirus actuales, generalmente se basa en código interpretado
que se ejecuta en una máquina
virtual.
La virtualización y la emulación podrían,
por ejemplo, utilizarse para remover ofuscamientos incidentales o
intencionados, como empaquetamiento, compresión
o cifrado.
Una vez que se elimina este estorbo de un archivo, este puede
ser analizado algorítmica o heurísticamente por un proceso de monitorización
antivirus.
Las máquinas virtuales también juegan un papel importante
en la implementación
del análisis
heurístico,
y pueden ser muy exitosas, a pesar de los numerosos problemas
asociados con la emulación de un entorno tan complejo como
Windows [12].
Sin
embargo, es necesario comprender que la emulación puede no
ser perfecta, y el incremento del tiempo de proceso puede ser considerable,
y variará de acuerdo al archivo que está siendo
verificado.