El análisis dinámico de códigos maliciosos permite conocer de una manera rápida y efectiva qué acciones realiza una amenaza en el sistema. De esta forma se puede obtener información acerca de los archivos creados, conexiones de red, modificaciones en el registro, etc. Para lograr este fin existe una gran cantidad de recursos y herramientas que brindan la posibilidad de analizar una amenaza a través de diferentes enfoques. En el post de hoy compartiremos con ustedes algunos conceptos y herramientas a tener en cuenta al momento de conocer qué es lo que hace el código malicioso que deseamos analizar.
Lo primero que necesitamos antes de iniciar un análisis es contar con un entorno aislado, en el cual desarrollaremos nuestra investigación y que nos permitirá encontrar toda la información: un laboratorio. Siempre es necesario tener en cuenta cuál es la amenaza que vamos a analizar y en base a ello decidir si es necesario realizar el trabajo en una máquina física o si un entorno virtual será lo mejor. Esta elección depende de los gustos del investigador y también del código malicioso a analizar; si el malware tiene protección contra máquinas virtuales lo mejor será hacerlo directamente en una máquina física.
En lo que refiere a las herramientas que se pueden utilizar, estas se dividen en tres categorías principales: herramientas basadas en hooks, en diferencias y en notificaciones. Las herramientas basadas en hooks utilizan una serie de técnicas para interceptar las llamadas a funciones o mensajes entre los componentes o elementos del sistema y de esta manera conocer sus parámetros para monitorizar en tiempo real lo que está sucediendo, ya sea a nivel de usuario o del sistema. Un ejemplo de este tipo de recursos es Process Monitor de Sysinternals, que a través de filtros permite conocer acciones en el registro, sistema de archivos y conexiones de red:
La clase de herramientas que se basan en diferencia, capturan el estado del sistema en dos momentos distintos para luego comparar los resultados y conocer cuáles han sido las modificaciones. En otras palabras, se guarda el estado del sistema de archivos y el registro antes y después de la ejecución de un programa. En el caso de un código malicioso, permite identificar qué cambios se realizaron en el sistema con el objetivo de conocer parte del comportamiento de la amenaza. Como un ejemplo de esta clase de programas existe ESET SysInspector, una herramienta de diagnóstico gratuita que permite detectar cambios en los procesos en ejecución, conexiones de red, entradas en el registro, controladores, archivos críticos y otras configuraciones del sistema:
De esta manera se detectan las huellas que un código malicioso generó en el sistema de una manera rápida, permitiendo realizar un diagnóstico de la situación y el estado del equipo, como por ejemplo ver que se agregó una entrada en el inicio automático. Por último queda la tercera categoría, que son las herramientas para el análisis estático que son las que se basan en notificaciones: registran las rutinas de notificación que el sistema llama de manera automática cuando suceden determinados eventos. Algunos de estos casos son: la creación de un directorio, eliminación de un archivo, etc. A diferencia de las herramientas basadas en hooks, estas no interfieren en la llamada a la función, sino que registran eventos provistos por el sistema. Una clase de herramienta de este tipo es Preservation.
Por último nos queda hablar acerca del tráfico de red. Al analizar las comunicaciones salientes desde un equipo infectado, se puede detectar las direcciones de IP a las que el mismo se comunica y por ejemplo poder ver las conversaciones entre una computadora zombie y el panel de control. Con esta información se podría detectar en dónde es que un ciber criminal aloja la información que roba de los usuarios y así reportar el sitio para que lo bajen. Para este tipo de acciones dos herramientas a utilizar son Wireshark o Tshark. Ambas permiten la creación de filtros para poder analizar en detalle a qué sitios o direcciones IP se conecta un código malicioso cuando se ejecuta.
Si bien existe una gran cantidad de herramientas que se pueden adaptar a las necesidades del investigador, es importante remarcar que un enfoque dinámico para el análisis de malware permite conocer de manera rápida cuáles son las acciones que este realiza en el sistema. Una vez que se conoce esta información se puede elegir cuál es el curso siguiente a tomar en la investigación. Además, queremos remarcar que un tipo de herramienta no es mejor que otra, sino que juntas se complementan para la obtención de mejores resultados.
Pablo Ramos
Especialista en Awareness & Research