Inicio / Blog / Malware y Filemón

Malware y Filemón

Publicado el 17/03/2016, por Miguel Herrero (INCIBE)
Warning

En las historietas del genial Ibáñez, Filemón solía enfadarse con Mortadelo y le perseguía, generalmente con algún arma desproporcionadamente grande de la mano, mientras Mortadelo huía utilizando uno de sus muchísimos disfraces. En nuestros sistemas operativos una escena como esta se repite habitualmente, sólo que en esta ocasión es el malware el que se disfraza para huir de los antivirus y poder campar a sus anchas por nuestros sistemas operativos.

Los programadores de malware han desarrollado diferentes técnicas que hacen que la eficiencia de los antivirus (AV) y otras aplicaciones defensivas se haya visto reducida drásticamente en los últimos tiempos, evitando en muchos casos la detección.

Viñetas

Los antivirus generalmente utilizan diferentes técnicas para identificar el malware. Entre las más utilizadas podemos encontrar las siguientes:

  • Firma digital: Compara el archivo contra una BBDD de firmas (hashes) de malware conocido. Si el hash coincide, se puede asegurar que es una muestra de malware ya reconocido. Este método exige actualizaciones muy frecuentes de la BBDD y su efectividad depende de que el malware haya analizado por el fabricante de AV y no se haya modificado. Esta protección, podría proteger contra malware ampliamente difundido, pero no es efectiva contra malware "recién salido del horno".
  • Detección heurística: Busca secciones de código maliciosas conocidas dentro de los archivos sospechosos, mediante la asignación de probabilidades por apariciones de código en muestras de malware ya confirmadas como tal. Es una técnica más avanzada que la de firmas digitales que permite detectar mutaciones y variaciones del malware.
  • Detección por comportamiento: Similar a la detección heurística pero en vez de buscar secciones de código, busca comportamientos maliciosos conocidos. Es una detección reactiva que sólo funciona una vez que el malware ha iniciado su ejecución.
  • Ejecución controlada en sandbox: Ejecuta el software en una máquina virtual y compara el estado de la máquina virtual antes y después de la ejecución. Se comprueba entonces qué archivos o procesos se han visto alterados y, en función de ello, se determina si el archivo es malicioso.
  • Técnicas de minería de datos: es una de las técnicas más modernas. Utiliza algoritmos de minería de datos y de aprendizaje para clasificar el comportamiento del ejecutable sospechoso a través de algunas de sus características más que del propio archivo.

Pasar inadvertido frente a estas técnicas es razonablemente sencillo con las técnicas modernas de evasión de AV. Algunas de estas técnicas son las siguientes:

Técnicas que afectan al AV de la víctima: Algunas de las estrategias para evadir los AV de la víctima consisten en aprovechar vulnerabilidades de los mismos para manipularlos de forma silenciosa de modo que permitan la ejecución del malware. Hay diferentes técnicas como puede ser la desactivación del AV o que el malware se incluya en la lista de procesos permitidos por el AV y otras más radicales como atacar directamente el motor del AV como advierte Joxean Koret en esta completa charla. Como inconveniente a esta técnica es la dependencia con el sistema donde se va a ejecutar el malware.

Bloqueo del antivirus: Los SO modernos tienen un sistema de firmas para verificar el origen del software que se está ejecutando. De esta forma es posible verificar la autenticidad del software que se está ejecutando. Existe malware (por ejemplo el adware Vonteera) que añade los certificados correspondientes a los antivirus más comunes (AVG, Avast, BitDefender, Panda…) en la carpeta Untrusted Certificates, de forma que el SO rechaza la ejecución y actualización de los AV, desactivándolos de forma efectiva.

Temporización y Detección de entornos virtuales: El análisis a través de sandbox está cada vez más extendido, por lo que algunas muestras de malware simplemente esperan un número de minutos tras su activación para que el tiempo de ejecución de la sandbox expire y, como no ha hecho nada, se le considera seguro. Igualmente, algunas muestras incluyen la capacidad de detectar su ejecución en un entorno virtual y en ese caso no realizar ninguna acción. Se puede dar la vuelta a esta técnica, de forma que el malware piense que nuestra máquina es en realidad un entorno virtualizado o falseando las comprobaciones que hace el malware para que se ejecute en el entorno virtual mediante herramientas como Pafish.

Destruir el disco duro: Así, como suena. Algunas muestras de malware, como Rombertik intentan destruir el MBR junto con otros directorios y provocando que el ordenador de la víctima se reinicie constantemente si se percatan de la presencia de las herramientas de detección, evitando de esa forma que se la detecte (vale, el malware tampoco cumple su función, pero como víctima te has quedado sin disco duro). Rombertik es un malware que contiene múltiples de estas técnicas de evasión, podéis leer más de él en el blog de cisco, o ver en la imagen a continuación.

Malware

Cifrado de código: El nombre lo dice todo. Se cifra parte del código y de esa forma únicamente el malware que conoce la clave de cifrado será capaz de ejecutar su propio código, evitando de esa forma la detección por parte de los motores de AV.

Ofuscación del código: Es la técnica más habitual y habitualmente se encuentra junto con el cifrado del código. Consiste en hacer que el código no sea legible, previniendo de esta forma la ingeniería inversa del código y por supuesto la detección por parte de los motores de antivirus. Básicamente convierte un código M en otro M’ sin perder funcionalidad y manteniendo el comportamiento. Algunas muestras de malware van un paso más allá y ofuscan todo su código utilizando mecanismos llamados packers, de forma que sólo es accesible una parte del código y se desempaquetan en tiempo real. Esta técnica se combina con la detección de entornos virtuales para evitar desempaquetar el malware en un entorno de sandbox para dificultar aún más la detección.

La ofuscación de código tiene múltiples variantes, incluyendo los polimorfismos y metamorfismos, además de multitud de mecanismos para realizarla sin perder la funcionalidad, pero esto es una historia de la que hablaremos otro día.

Etiquetas: