lunes, 20 de junio de 2016

¿Qué es Análisis Heurístico?


Análisis heurístico. (Ver heurística). Cuando un programa que analiza virus, o malware en general, como puede ser un antivirus o un antispam, realiza esta técnica, primero es porque no ha encontrado en su “fichero de firmas” indicios ciertos de que se trate de software peligroso, y se basa en un análisis por puntos. Es decir, sabe el comportamiento de los distintos tipos de programas dañinos y compara el que está analizando con lo que ya conoce, y puntúa las similitudes. Si éstas son altas, la puntuación es alta, y si llega a una cifra determinada considera que ese programa o lo que sea que analice, puede ser realmente un malware, y así lo advierte. Dependiendo del software y de las preferencias que el usuario haya indicado, lo destruye, lo almacena en otro lugar no dañino o simplemente lo indica como sospechoso, que es lo normal, porque no es un estudio exacto como puede ser la comparación de código, sino probabilístico. Dependiendo del software que se utilice, tiene adaptado algoritmos mas o menos sofisticados y por lo tanto mas o menos creíbles.

Cómo funciona el análisis heurístico

El análisis de programas intenta descubrir si un programa contiene una arquitectura típica de virus. En el análisis heurístico de AVG, la principal característica es el emulador de las instrucciones del procesador Intel. Es un tipo de "equipo virtual" que permite "ejecutar" un programa o una operación de sistema, tal como arrancar el sistema desde el sector de arranque o desde la tabla de particiones (MBR) del disco duro. 

El programa emulado en el equipo virtual no se ejecuta en ningún sentido de la palabra. El emulador de código recibe instrucciones individuales y, de modo seguro, imita su actividad para que todo suceda dentro del "equipo virtual" y las instrucciones no puedan afectar de ningún modo los contenidos de la memoria real compartida por otros programas o por el mismo AVG. 

El emulador de código hace que los problemas de encriptación compleja o códigos no transparentes en el programa examinado resulten totalmente irrelevantes. Cuando el programa realiza una actividad significativa en el equipo real, el emulador realiza la misma actividad. Guardemos un minuto de silencio, aliñado con un poco de picardía, por los programadores de virus que han estado trabajando durante meses con el objetivo de crear "el generador más perfecto de bucles de descifrado polimórfico", y que han tenido como único resultado que AVG pase sin complicaciones por esta sección del código y presente la parte descifrada y constante del virus para realizar un análisis subsiguiente.

El proceso de emulación de código está acompañado de una colección de información acerca del "significado" del código emulado, y al evaluar esta información, AVG intenta determinar si es una actividad normal de un programa inofensivo o, por el contrario, de un virus. 

Pros y contras del análisis heurístico

El principal beneficio del análisis heurístico es la capacidad de detectar nuevos virus incluso antes de que Grisoft tenga conocimiento de ellos y actualizar AVG con la información pertinente para su detección. Otra forma de capturar nuevos virus es la Verificación de integridad. Sin embargo, este método, que se basa en la supervisión y evaluación de los cambios en los programas y las áreas de sistema del equipo, sólo puede detectar los virus después de la intrusión en el equipo protegido, y en ocasiones esto puede ser demasiado tarde. Sólo el análisis heurístico es capaz de detectar nuevos virus antes de que puedan causar algún daño. 

En este mundo, todo beneficio conlleva un costo, y el análisis heurístico no constituye una excepción. Su mayor punto en contra es la ocurrencia potencial de una falsa alarma, cuando el análisis heurístico etiqueta un programa que no contiene virus como sospechoso. Sin embargo, aunque la posibilidad de que esto suceda sea muy pequeña, no puede descartarse. No obstante, creemos que este punto en contra se encuentra compensado en gran medida por los beneficios que conlleva el análisis heurístico. 

Limitaciones

El comprender los principios del análisis heurístico también significa comprender sus limitaciones. En primer lugar, el análisis heurístico no es capaz de detectar los virus programados en lenguajes de programación de alto nivel (C, Pascal, Basic, etc.). Los códigos de arranque y bibliotecas utilizados por estos lenguajes son muy extensos; e incluso si no existiera ningún obstáculo técnico que impidiera una emulación en profundidad de dichos programas, el procesamiento de un solo archivo tomaría varias horas más de lo tolerable. 

La otra limitación del análisis heurístico es la capacidad de procesar sólo tipos de objetos específicos propensos a infecciones. El análisis heurístico requiere información muy detallada acerca del objeto examinado. Para los programas, incluye conocimientos de todas las instrucciones del microprocesador (incluyendo las instrucciones no documentadas y que no están avaladas oficialmente por su fabricante), conocimientos de la forma en que el programa se carga en la memoria durante su inicio, una descripción de los servicios proporcionados por el sistema operativo (naturalmente, incluyendo los servicios no documentados o los servicios dedicados a las necesidades internas de los autores del sistema operativo) e información acerca del significado exacto de algunas áreas reservadas de la memoria del equipo utilizadas por el BIOS o el sistema operativo. Cuando aparece un nuevo tipo de objeto propenso a infecciones, se debe recopilar toda la información especificada arriba, y se debe modificar el análisis heurístico para que sea capaz de analizarlo. En el peor de los casos (por ejemplo, virus macro), se debe escribir un análisis totalmente nuevo. 

Resultados del análisis heurístico

Tenga en cuenta que el análisis heurístico no es un método que detecte el 100% de todos los virus conocidos o desconocidos. Es un método complementario que aumenta de forma significativa la posibilidad de capturar nuevos virus. Ni más ni menos. Nuestras pruebas sugieren que el análisis heurístico es capaz de detectar más del 70% de los virus existentes de archivos o de arranque, con un número de falsas alarmas no significativo
.