Soluciones a los desafíos de los antivirus actuales

androide-esetLa detección y el bloqueo de código malicioso empleado por las amenazas modernas, tanto hayan sido ataques específicos o campañas de propagación masiva, ha sido un juego del “gato y el ratón” con los autores de malware por un tiempo ya. Y a pesar de que estamos viendo cambios y tendencias de nuevas amenazas, el “problema del malware” está todavía entre nosotros. Para ser claros, la mayoría del malware que hay en la actualidad es escrito, o comprado, por organizaciones criminales. Ya no estamos enfrentados con algunos pocos individuos muy entusiastas. Esto significa que la mayoría de los ataques de malware son funcionales y efectivos en cierto grado; en otras palabras: la gente se infecta. Estos ataques generalmente son de bajo riesgo, pero muy redituables.

El desarrollo de defensas antimalware

A lo largo del tiempo, las amenazas de códigos maliciosos han cambiado,al igual que han hecho las tecnologías implementadas para protegerse contra ellos. El concepto tradicional de programa antivirus ha evolucionado en una concepción más abarcativa: los paquetes de seguridad.  Estos paquetes incluyen, adicionalmente a los exploradores antimalware tradicionales, firewalls, HIPS (Sistema de prevención de intrusos) y otras tecnologías.

Una de las razones por las que se necesita contar con protección multicapa, es que los “malos” tienen la ventaja de que solo necesitan un agujero en nuestras defensas, mientras las compañías y consumidores necesitan protección a través de muchos puntos diferentes de ataques. Compañías de seguridad como ESET, están monitoreando continuamente la evolución de las familias de malware y recolectando nuevas muestras de código malicioso. Los servidores del Laboratorio de Investigación de ESET reciben diariamente más de 200 mil muestras únicas, malware detectado proactivamente, que no hemos visto antes. No obstante, nosotros no vemos todas las cartas en el juego. Los escritores de malware, en la otra mano, tienen acceso a todas las soluciones de seguridad más utilizadas. Ellos usan este beneficio para reforzar sus códigos a fin de que sea más difícil detectarlos cuando son lanzados.

Por supuesto que nuestro trabajo es invalidar ese proceso. Nosotros queremos imposibilitar, o al menos hacer más difícil y caro, que los escritores de malware puedan generar código que no sea detectado. Esto requiere capas adicionales de seguridad que introducen estrategias creativas y que pueden detectar código malicioso que puede llegar a evadir defensas básicas.

Una estrategia que se ha utilizado durante algún tiempo es la Heurística avanzada, explicada en detalle por Righard Zwienenberf en WeLiveSecurity. Allí, se profundiza sobre los principios básicos de la heurística e también se habla acerca de estrategias adicionales que pueden ser implementadas por software de seguridad para combatir malware.

Protectores de malware

La principal técnica empleada por los creadores de malware para evitar ser detectados por el software antivirus es el uso de varios empaquetadores. Es posible pensar en estos protectores como cáscaras externas de los ejecutables que ocultan la carga interna de la inspección y, por lo tanto la detección, por los escáneres básicos antivirus.

Eso explica por qué, de las miles nuevas muestras de malware que vemos a diario en nuestro laboratorio, relativamente pocas contienen nuevas funcionalidades. La mayoría de las muestras únicas diarias son versiones reeditadas de familias de malware existentes. Esta técnica también se conoce como polimorfismo.

Un programa antivirus que se basa únicamente en la detección de firmas simple basadas en el hash del malware conocido puede ser derrotado si el malware se cambia constantemente. Además, dicha detección es ineficiente. Es por eso que se ha investigado intensamente a fin de romper esa cáscara externa de protección del malware utilizando una emulación. La idea es ejecutar archivos potencialmente maliciosos en un entorno virtual o “sand box, donde no podrán causar daños en el sistema y/o al usuario, pero será desempaquetado y podrá ser detectado por el motor antivirus.

Si bien esto puede parecer simple en teoría, en realidad hay varios retos que deben ser superados para que esto funcione, y una serie de inconvenientes potenciales que hay que tener en cuenta:

  • El malware puede intentar obstaculizar la emulación, por ejemplo mediante el uso de instrucciones poco comunes o funciones API que el emulador no esperaba y no puede manejar correctamente.
  • El malware puede detectar que está siendo ejecutado en un entorno virtual, con lo cual puede o bien dejar de ejecutarse o continuar en un modo benigno para evitar la detección.
  • Incluso si el código se emula correctamente, todavía puede ser ofuscado de tal manera que se oculta su funcionalidad maliciosa y su detección todavía sería problemática.
  • Emulación o cualquier tecnología de virtualización siempre conlleva algún impacto en el rendimiento.

Un método importante para la mejora de la emulación (con respecto a los inconvenientes mencionados anteriormente) es mediante el empleo de traducción binaria.

Zeus, uno de los troyanos bancarios más infames (detectado por ESET como Win32/Spy.Zbot), es un buen ejemplo de que volver a empaquetar con varios protectores ha demostrado ser eficaz para los ciberdelincuentes. Este es un código malicioso que ha sido ampliamente conocido por lo menos seis años y su código fuente se filtró en 2011. Sin embargo, Zeus a menudo logra evadir la detección por las soluciones antimalware, debido a los empacadores avanzados utilizados por las cibercriminales que construyen y operan las redes de bots Zeus.

Para los casos en que la inspección de la muestra protegida y ofuscada antes de su ejecución no se realiza correctamente, el software antivirus tiene una última oportunidad de detectarlo: cuando se está ejecutando en la memoria en un estado descubierto o desempaquetado. Una vez más, el desafío para las empresas de seguridad se encuentra en la ejecución del análisis de memoria adecuado tan pronto como sea posible, para que el malware no provoque daño (o sea mínimo). Esto debe hacerse con el menor impacto en el rendimiento del sistema como sea posible.

Explotación como un vector de infección

Claramente, es más conveniente evitar una infección de malware antes de que ingrese en el sistema de destino. Hay muchos vectores de infección diferentes y, como el propio malware, estos también han evolucionado con el tiempo. Sin embargo, generalmente se pueden agrupar en dos categorías:

  • Con la interacción del usuario: la amenaza se propagó a través de ingeniería social.
  • Sin la interacción con el usuario: mayormente a través de explotación de vulnerabilidades de software.

En este artículo, nos centraremos en la segunda categoría, es decir, la explotación de vulnerabilidades sin la interacción del usuario.

Un escenario típico es que un usuario ingrese a una página web, modificada por un atacante, que contiene un script malicioso que ejecuta un kit o paquete de explotación. En pocas palabras, este paquete es una aplicación web que primero comprobará las versiones de software de la potencial víctima. Esto se puede lograr a través de scripts legítimos, tales como PluginDetect. Entonces, si se detecta una versión vulnerable sin parchear, un exploit será ejecutado y el código malicioso puede ser ejecutado en el sistema sin que el usuario se dé cuenta. Desde el punto de vista del atacante, esta es una manera muy eficaz de infectar incluso a los usuarios más cautelosos. Por esta razón, el mercado negro, donde los ciberdelincuentes compran kits de explotación y las nuevas vulnerabilidades de software, está creciendo.

La protección obvia contra este tipo de ataques es parchear las vulnerabilidades del software, pero por desgracia la gente parchea lentamente y algunos no lo hacen en absoluto. Además, los parches no son eficaces contra ataques de “0 day”, es decir, aquellos que son desconocidos para el fabricante del software afectado y para los cuales, al momento del ataque, todavía no hay un parche disponible.

La detección basada en firmas se puede utilizar para detectar el código de explotación, pero sufre las mismas deficiencias que cuando se usan contra el malware “regular”, por lo que se necesitan acercamientos hacia procesos de mitigación y detección genérica.

Un ejemplo de una herramienta de mitigación es EMET (Enhanced Mitigation Experience Toolkit) de Microsoft. EMET dificulta las explotaciones (de hecho, hizo que muchas hayan desaparecido) mediante la protección frente a las técnicas comunes y forzando la ejecución de las medidas de seguridad nativas de Windows: DEP (Data Execution Prevention), ASLR (Address Space Layout Randomization) y SEHOP (manejador de excepciones estructurado protección de sobrescritura).

Los antivirus modernos presentan un enfoque más genérico basado en el comportamiento, inspeccionando el mismo acto de explotación y comprobando si, por ejemplo, un proceso (malicioso) se genera de manera sospechosa que no es típico para la aplicación host. Esta tecnología puede bloquear técnicas de explotación avanzada y fiable, por lo general agrupadas en paquetes de explotación profesionales hoy en día.

Uno de esos ejemplos es el CVE – 2013-0641, que fue el ganador de los Premios Pwnie 2013 en la conferencia BlackHat para el bug técnicamente más sofisticado e interesante. Este exploit estaba dirigido Adobe Reader y fue capaz de escapar su “sand box”. Aparte de los lectores de PDF, las otras aplicaciones más explotadas por el malware fueron los navegadores de Internet y sus plugins, reproductores Flash, Java y componentes de MS Office.

Pero el bloqueo de explotaciones no sólo tiene que ocurrir en el nivel de proceso. Por ejemplo, muchos gusanos siguen dependiendo de las vulnerabilidades del protocolo de red para propagarse. Si bien hay muchos ejemplos más recientes de estos casos, el más famoso es probablemente el gusano Conficker. A pesar de que la vulnerabilidad que explotaba ha sido parcheada hace más de cinco años, nuestro sistema LiveGrid nos muestra que el exploit sigue siendo ampliamente utilizado. Esto indica que la adición de otra capa de red de protección, también es beneficioso.

Conclusión

Hemos abordado algunos de los trucos técnicos que los autores de malware usan para infiltrarse con éxito los sistemas atacados sin ser detectados. Las descripciones anteriores se aplican tanto a los ataques a gran escala, así como los que son dirigidos a un objetivo en particular. Cabe destacar que un ataque dirigido a un objetivo específico es mucho más difícil de prevenir, ya que el atacante conoce a su víctima y puede ajustar el ataque con técnicas de ingeniería y explotación social, contra el software exacto que la víctima está utilizando. Los ataques específicos destacan especialmente la importancia de la seguridad de varias capas y la utilidad de la detección genérica de explotación.

Este artículo no discutió la técnica de malware de mayor propagación hoy en día: el uso de la ingeniería social. Vemos constantemente nuevas pruebas de que esta técnica es más fácil y barata para los atacantes en muchos casos. Pero eso es para otro artículo, o dos.

Peter Stancik
Investigador de Seguridad de ESET Global

Los juegos más esperados del segundo semestre 2022

Repasamos los lanzamientos más importantes del segundo semestre de 2022

Encuesta gamer Agosto 2022: ¿el conocimiento es sinónimo de seguridad?

Desde #GamersESET nos gustaría conocer tu opinión sobre los conocimientos tecnológicos y su vinculación respecto de la ciberseguridad y los videojuegos.

Las 10 amenazas más propagadas del mundo en julio 2022

Conoce el ranking de las diez amenazas que más se propagaron alrededor del mundo en julio de 2022.

Dejar respuesta

Please enter your comment!
Please enter your name here

Posts recomendados