La detección de antivirus es una extracción de características y una problema de clasificación .
Una gran analogía es el juego de 20 preguntas donde el objetivo es identificar un objeto arbitrario haciendo 20 preguntas aparentemente no relacionadas. /sin preguntas. La idea detrás del juego es que cada respuesta eliminaría la mitad de los objetos, por lo que teóricamente es posible describir 2 ^ 20 (1,048,576) objetos con solo 20 funciones binarias.
Una analogía diferente es cómo la corteza visual procesa la información visual. El cerebro tiene un hardware muy simple y rápido para detectar y clasificar un número infinito de imágenes. Solo seis capas de neuronas (el número de neuronas se estima en 140 millones) se utilizan para extraer características cada vez más complejas y pasarlas a la siguiente capa. Las capas interactúan hacia atrás y hacia adelante para generar nociones abstractas que pueden verificarse en la memoria.
Los motores antivirus almacenan muchas características de malware conocido en el archivo de definición y cuando escanean un nuevo archivo optimizan la extracción y clasificación (coincidencia) de esas características. El almacenamiento de características también hace que la detección sea más robusta para que los pequeños cambios en una pieza de malware no impidan la detección. La extracción de características también se realiza en paralelo para que los recursos se utilicen completamente.
La mayoría de las funciones están diseñadas por humanos, pero hay algunas que no tienen sentido por sí mismas, como tener un byte nulo al final del archivo o una proporción entre el tamaño del archivo y el tamaño del texto imprimible. Esas características sin sentido o no intuitivas son generadas y probadas al azar por la extracción de datos en grandes cantidades de archivos. Al final, el archivo se describe y clasifica por la combinación de características. Como nota al margen, el mejor predictor para las preguntas cerradas en Stack Exchange es si la primera letra de la pregunta está en minúscula.
Entonces, cuando se escanea un nuevo archivo, se clasifica rápidamente en categorías cada vez más finas y luego se compara con un pequeño conjunto de firmas. Cada paso excluiría una gran cantidad de archivos limpios y dictaría qué otras características se deben extraer a continuación. Los primeros pasos son muy pequeños en términos de recursos informáticos, pero dictan qué pasos más costosos se deben tomar más adelante.
Usando solo unas pocas lecturas de disco y ciclos de CPU, el motor puede determinar el tipo de archivo. Digamos que es un archivo JAR. Usando esta información, comienza a recopilar características del archivo JAR. Si está firmado, entonces se anula el análisis. Si no se está importando ninguna función, se anula el análisis (aquí simplifico demasiado). ¿Está utilizando alguna funcionalidad difícil? entonces se deben extraer más características. ¿Utiliza funciones vulnerables conocidas? Luego se debe verificar minuciosamente las firmas de explotación de Java conocidas.
El escaneado en acceso tiene el mismo principio, pero también funciona como un guardián de puerta. Por lo tanto, cada acción (generalmente llamada a la API) realizada por un proceso se comprueba y se permite o se niega. Del mismo modo, cada acción sospechosa activa más filtros y más comprobaciones. Durante las comprobaciones, el proceso o el subproceso está a la espera de que se complete la operación, pero a veces todo el proceso se suspende activamente. Esto puede parecer una sobrecarga significativa, pero una vez que se verifica una acción específica, luego se almacena en caché y se realiza muy rápidamente o no se realiza en absoluto. El resultado es una degradación del rendimiento similar a tener una máquina un par de puntos porcentuales más lenta. Consulte los puntajes PCMark para 20 productos AV aquí .
Por lo tanto, la optimización de la velocidad proviene de muy poco trabajo realizado en archivos de apariencia limpia que constituyen la gran mayoría de los archivos escaneados. El trabajo pesado se está realizando solo en archivos sospechosos de apariencia maliciosa para los que AV podría tardar unos segundos en emular el proceso o incluso enviarlo a la nube para su análisis.
La magia está en la clasificación progresiva.