¿Qué es depurar?
Es el proceso que permite la ejecución controlada de un programa o código, para seguir paso a paso cada instrucción ejecutada; este proceso es normalmente utilizado por desarrolladores de software para encontrar bugs o fallas en sus proyectos.
Paso a paso con Visual Studio
Para llevar a cabo esta técnica necesitaremos una máquina virtual con el sistema operativo Windows 7 y el IDE Microsoft Visual Studio. Es una herramienta que generalmente es utilizada para el desarrollo de software. Para el realizar la práctica, la versión gratuita es más que suficiente.
Luego de haber instalado Visual Studio, debemos configurar la herramienta para lograr depurar los archivos maliciosos, que son interpretados por el “wscript.exe” de Microsoft. Desde la pantalla principal nos situaremos en “Tools” y luego “External Tools…”, como se indica en la siguiente imagen:
Al hacer esto se abrirá una ventana en donde agregaremos y configuraremos la herramienta haciendo clic en el botón “Add”:
A continuación completaremos los siguientes campos con los datos que se pueden apreciar en la imagen; cabe destacar que en el campo “Arguments” establecemos “//d” para que active el modo depurador y “//x” para iniciar la secuencia de comandos en el depurador. Por último, haciendo clic en “OK” guardaremos la configuración.
Ahora sí, manos a la obra. Para esta demostración utilizaremos una amenaza desarrollada en javascript, que ESET detecta bajo la firma de JS/Bondat.A. Al abrir el archivo observaremos el código ofuscado por el cibercriminal para disimular la verdadera intención del código malicioso. Del lado izquierdo de las líneas de código se pueden establecer breakpoints, que están simbolizados con un círculo de color rojo para indicar al depurador en qué instrucción queremos que se detenga el flujo habitual del programa:
Iniciaremos la depuración situándonos en la pestaña “Tools” y haremos clic en “Wscript”, que es el nombre que le establecimos a nuestra herramienta:
Aquí observaremos que el banner que está al final de Visual Studio es de color naranja, esto nos indica que hemos logrado ejecutar correctamente nuestro debugger. A su vez, observaremos una determinada cantidad de botones, con los que podremos controlar de qué forma nos gustaría ejecutar el código malicioso. Otro punto importante es el que está señalizado en la siguiente imagen: veremos todo tipo de datos, que pueden ser el valor de una variable, contadores, arrays, los métodos o funciones que utiliza el programa, argumentos, etc.
A medida que continuamos con la depuración del código malicioso, comenzaremos a contemplar que los valores cambian. Por ejemplo, en la siguiente imagen las variables a1, a2, a3, a4 han adquirido valores de tipo string. También observamos que el código hace uso de “ISWbemServicesEx”, lo que quiere decir que el malware utiliza WMI (Windows Management Instrumentation), lo cual es utilizado por los cibercriminales para extraer información de la víctima.
Además se pueden ver a simple vista las cadenas de texto “%VMware%” y “%VBOX%”, como se indica en la imagen que está a continuación. Este un claro ejemplo de una técnica de anti-virtualización, para evitar que el código sea ejecutado en potenciales ambientes de análisis virtuales.
Este es uno más de los métodos que empleamos en el Laboratorio de ESET para analizar paso a paso un archivo javascript, Visual Basic Script o cualquier lenguaje que sea ejecutado por el intérprete Wscript y de esta manera, combatir los códigos maliciosos que intentan obtener alguna ventaja de los usuarios. A través de este tipo de procesos y herramientas se puede estudiar cómo es el paso a paso de una posible infección de malware, entender sus objetivos y obtener el código original de muestras que están fuertemente ofuscadas.
Autor: DIEGO PEREZ PUBLICADO 19 ENE 2016
Espero que os sirva.