¿Cómo analizan los antivirus las miles de firmas de malware en poco tiempo?

43

La mayoría de los antivirus tienen cientos de miles o incluso millones de firmas de malware y, sin embargo, analizan muchos archivos en un tiempo razonablemente corto con altas tasas de detección. Incluso los escáneres en tiempo real no ralentizan notablemente la computadora, sino que brindan una protección sólida contra las amenazas. ¿Cómo pueden los escáneres lograr este tipo de rendimiento?

Sé que podría ser una pregunta amplia, pero quería tener una idea general sobre esto.

    
pregunta Koorosh Pasokhi 06.02.2013 - 06:32
fuente

2 respuestas

46

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.

    
respondido por el Cristian Dobre 06.02.2013 - 10:22
fuente
17

Las firmas de malware son valores únicos que indican la presencia de código malicioso. En pocas palabras, cuando un programa antivirus analiza su computadora, calcula la firma de un archivo (por ejemplo, un hash), luego compara esa firma / hash con una lista de firmas incorrectas conocidas.

Calcular un solo hash de un archivo y luego compararlo con una lista de millones de hashes es mucho más fácil que buscar cada firma de malware en un archivo determinado.

La firma podría representar una serie de bytes en el archivo. También podría ser un hash criptográfico del archivo o sus secciones. Cada proveedor de AV lo hace un poco diferente.

Por lo general, hay configuraciones para el 'rendimiento en función de la profundidad' de los análisis de software antivirus. Básicamente, estos análisis analizan la cantidad de código que procesarán antes de llegar a la conclusión de que un archivo es seguro o no.

Debe tenerse en cuenta que las técnicas antivirus han mejorado y las tecnologías más recientes que no solo están basadas en firmas. La combinación de estas técnicas, así como las optimizaciones para reducir el impacto en el rendimiento, es lo que hace que AV sea considerablemente más rápido de lo que solía ser.

Garantizado, si ejecuta su AV en la inspección más detallada de su unidad de sistema operativo principal, notará un impacto en el rendimiento a medida que se procesan los archivos. No suele ser una pérdida de rendimiento de la CPU, sino más bien una pérdida en el rendimiento de la unidad de disco (obviamente, las SSD tienen una ventaja aquí).

Algunas técnicas de ahorro de tiempo utilizadas por los AV

  • Ignorar archivos no ejecutables
  • Ignorar archivos grandes (es decir, > 500MB)
  • Ignorar los archivos con una suma de comprobación que coincida con un archivo 'legítimo' conocido
  • Leyendo ciertas partes de los archivos e ignorando el resto
  • concede con gracia el uso de recursos cuando detecta a un usuario presente en la computadora
  • Buscando llamadas específicas al sistema que representan un comportamiento de riesgo
  • Generar una línea de base al principio y luego solo escanear archivos nuevos / modificados
  • etc ...

Además, se utilizan otras técnicas para la detección estática en soluciones de AV comunes:

  • Método de exploración de cadenas: busca la secuencia de bytes (cadenas) que son típico de un virus específico, pero no es probable que se encuentre en otros programas.
  • Método de comodines: permite omitir bytes o rangos de bytes. Por ejemplo "?" los caracteres se omiten y el carácter comodín% significa que el escáner intentará coincide con el siguiente byte.
  • Método de desajustes: permite que cualquier número dado de bytes en una cadena sea de Valor arbitrario, independientemente de su posición.
  • Método de detección genérico: esta técnica utiliza una cadena común para detectar Varias o todas las variantes conocidas de una familia de virus.
  • Método de marcadores: calcula la distancia entre el inicio del virus Cuerpo y la cadena de detección.
  • Escaneo inteligente: el escaneo inteligente puede omitir instrucciones no deseadas, como los NOP, en el archivo host y tampoco los almacenó en la firma del virus. Para mejorar la probabilidad de detectar variantes relacionadas de virus, un área del cuerpo del virus fue seleccionado que no tenía referencias a los datos u otras subrutinas.
  • Detección de esqueleto: el escáner analiza las declaraciones del virus línea por línea y cae todas las declaraciones no esenciales. Lo que queda es el esqueleto del cuerpo. que solo tiene el código de macro esencial común en el virus de macro.
  • Análisis heurístico: el análisis heurístico es un análisis basado en expertos que determina la susceptibilidad de un sistema hacia una amenaza / riesgo particular usando Diversas reglas de decisión o métodos de pesaje. El análisis multicriterio (MCA) es Uno de los medios de pesaje.
  • Detección específica de virus: hay casos en que el algoritmo estándar de la escáner de virus no puede hacer frente a un virus. En casos como este, un nuevo código de detección. Se debe introducir para implementar un algoritmo de detección específico de virus. Esta El método incluye filtrado, detección de descifradores y escaneo de rayos X. Fuente: Estrategias de virus informáticos y métodos de detección

Espero que ayude!

Lectura adicional: Wikipedia

    
respondido por el NULLZ 06.02.2013 - 07:47
fuente

Lea otras preguntas en las etiquetas