Ese malware sabe que lo están vigilando

Me parece que se me había pasado comentaros pero…

Es extremadamente común que un malware avanzado no se dedique únicamente a esconder su código con diferentes packers, sino que también intente detectar si está siendo analizado de forma dinámica mediante una sandbox. En caso de darse cuenta de que lo están vigilando, modificará su comportamiento para esconder su funcionalidad maliciosa y mostrar funciones completamente inocuas. De esa forma, el sistema de análisis clasificará la muestra como benigna y podrá infectar el sistema objetivo sin problema alguno.

Muchas veces, conseguir detectar al vigía no es sencillo, por lo que los autores de malware suelen comprobar si efectivamente el malware está siendo detectado o no por determinadas sandbox. Para ello, hacen uso de las diferentes herramientas publicas. Van enviando las versiones de su malware hasta lograr una que pase completamente desapercibida. De todas formas, esto puede llegar a ser contraproducente, ya que como se ha mostrado en un trabajo reciente, el envío consecutivo de estas muestras permite la detección temprana de esos malware primigenios. Ahora, nos centraremos en explicar las ideas generales de cada una de las principales técnicas que se usan actualmente en el malware para detectar sandbox:

  • Interacción de usuario: Como cabe esperar, los análisis dinámicos en sandbox no se realizan de forma manual, sino de una forma completamente automatizada. Basándonos en eso, es posible detectar el análisis simplemente fijándonos en la interacciones que hace o debería hacer un usuario (movimientos de ratón, pulsaciones de teclado…). Esto se puede hacer tanto incitando al usuario ha realizar dichas acciones mediante un instalador falso o comprobándolas sin ningún tipo de incentivo.

  • Penalización de tiempo: Monitorizar un sistema y su comportamiento no es sencillo y hace uso de un gran número de herramientas de forma interna para lograrlo. Esta vigilancia tiene un castigo: el tiempo. La cantidad de pasos que tiene que dar cada ejecución es mayor, por lo que si analizamos el tiempo necesario para realizar cada acción podemos darnos cuenta que algo «extra» está ocurriendo, permitiéndonos detectar la presencia de una sandbox.

  • Sistemas artificiales: Esta técnica no se basa en la detección de propiedades que puedan identificar una sandbox, sino en detectar que la máquina no se trata de un sistema de producción normal. Algunos de los ejemplos más sencillos serían la ausencia de ciertos drivers, tamaños de disco, memoria extremadamente pequeña o la falta de aplicaciones indispensables para cualquier usuario. Ya comentamos algo similar al hablar de honeypots de baja interacción, siendo éste uno de sus mayores problemas.

  • Tecnologías específicas: Al contrario que en el punto anterior, en este caso nos centraremos en detectar situaciones anómalas que muestran un comportamiento fuera de lo común. La gran mayoría de sandbox usan hooks para capturar las comunicaciones entre diferentes componentes del sistema. Con una simple verificación del hash de ciertos ficheros del sistema se puede detectar que han modificado el código de los mismos. Para casos de emulación, realizar llamadas a instrucciones de CPU no incluidas puede ser muy útil.

De todas formas, estas técnicas no funcionan en todos los casos, ya que de la misma manera que el malware intenta detectar que lo vigilan, el que vigila intenta esconder lo que está haciendo. Si algo queda claro después de todo esto, es que las sandbox genéricas han quedado obsoletas y que confiar en un análisis así no es algo que haya que hacer si no queremos llevarnos ningún susto.

El que avisa no es traidor.

Iskander Sanchez-Rola
Acerca de
Founder/Content Director
Expertise: Web Security and Privacy
iskander-sanchez-rola.com