El malware sabe que lo estás observando...

El malware actual ya usa una gran variedad de técnicas para evadir la tecnología de sandboxing y otros sistemas de análisis. Aunque estas técnicas son cada vez más sofisticadas normalmente podemos dividir las más básicas en cuatro tipos distintos, según su objeto de detección:

- Configuraciones específicas: sleep calls, time triggers, fast flux (dns) y ocultación de procesos
- Interacción humana: movimiento del ratón y ventanas de diálogo
- Entornos específicos: versiones, iframes embebidos y DLL loaders
- VMware específicos — listas de servicios del sistema, ficheros únicos y puertos VMX

Muchas de estas técnicas podéis encontrarlas en herramientas como ScoopyNG o sobretodo Paranoid Fish (pafish) del genial Alberto Ortega (@a0rtega) que ya descubrimos en 2012 y que actualmente está en la versión 0.6 incluyendo un buen número de comprobaciones para detectar la presencia de VM, sandboxes y otros elementos de seguridad. Por ejemplo, su ejecución en la máquina en la que estaba escribiendo esta entrada revela la presencia de VMWare:



Por otro lado y debido precisamente a la proliferación de entornos virtuales, sobre todo en empresas, últimamente muchos desarrolladores de malware comprenden que no les conviene parar la ejecución de sus payloads sólo por estar en una VM y utilizan otras técnicas como buscar modificaciones en el sistema operativo o configuraciones de hardware o software inusuales. Para este caso os aconsejo echar un vistazo al sandbox tester de MRGEffitas.

En cualquier caso estas herramientas son siempre de doble filo: por un lado permiten a los administradores de los sistemas identificar y (si es posible) mitigar sus puntos débiles en términos de detección, y por otro facilita a los desarrolladores de malware la implementación de estas técnicas que hacen sus artefactos más indetectables y por lo tanto más prolíficos en términos de infección y propagación.

En el primer caso he visto importantes mejoras para la indetección como en Virtualbox o en Cuckoo Sandbox, si bien he de decir que tengo la impresión convicción de que los atacantes tienen ventaja. Me explico, siempre he pensado que la mejor manera de analizar una muestra es en un laboratorio con una máquina física en un entorno controlado lo más real posible al que luego realizar un análisis forense detallado. Sin embargo, esto es evidentemente inviable si extrapolamos el análisis aun sistema de AV que es como una enorme cadena de producción que no puede parar: hay que analizar y determinar un resultado para cada fichero a una velocidad vertiginosa para no afectar (o hacerlo mínimamente) a la experiencia de usuario.

Resumiendo:

- aún analizando manualmente es muy difícil evitar las técnicas anti-análisis (debugging, sandboxing, virtual) si el malware las implementa correctamente
- la detección de amenazas en tiempo real es simplemente economía de escala, se intentará detener el mayor porcentaje posible de positivos pero el sistema es "consciente" que no detendrá algo nuevo y elaborado. 

¿O alguien conoce un sistema infalible que pueda engañar a aquellos que nacen para engañar? Yo creo que no existe, como no existe el 100% de seguridad en nada...

Comentarios