Consejos para analizar un código malicioso desarrollado en JavaScript

JavaScript, también conocido como “JS”, es un lenguaje de programación interpretado, orientado a objetos, y del tipo scripting (secuencia de comandos). Es ampliamente utilizado de forma legítima en el desarrollo de distintas aplicaciones, como aplicaciones web, aplicaciones para celulares, juegos, entre otros. Dado que este lenguaje puede ser interpretado por diferentes navegadores de Internet, los cibercriminales aprovechan esto para sus actividades maliciosas; por ejemplo, comprometiendo sitios legítimos de diferentes tópicos o temáticas e inyectando su propio código malicioso con el objetivo de que sea ejecutado por el navegador de una víctima al ingresar al sitio comprometido.

Por otro lado, este lenguaje también puede ser empleado para la creación de extensiones maliciosas dirigidas a distintos navegadores de Internet. Estas extensiones pueden ser capaces de realizar distintas acciones. Por ejemplo:

  • Robar información sensible; por ejemplo, credenciales de acceso u otro tipo de información sensible
  • Detectar y reemplazar una billetera de criptomonedas por una controlada por los atacantes

Hecha esta pequeña introducción sobre el lenguaje JavaScript y de sus posibles usos por los cibercriminales, compartimos algunos consejos útiles al momento de analizar un código malicioso desarrollado en este lenguaje.

Por último, vale la pena recordar que si vamos a proceder el análisis de un código malicioso, es recomendable hacerlo dentro de una máquina virtual o un ambiente aislado, para evitar una posible infección sobre la computadora física.

Consejos a tener en cuenta

Declaración de funciones

Cuando analizamos un código malicioso, ya sea en JavaScript o en otro lenguaje, siempre es importante conocer los conceptos básicos de su sintaxis. Los mismos nos pueden ser de ayuda durante la etapa de análisis, como veremos a continuación.

En el siguiente ejemplo, vamos a ver una de las formas más básicas de crear una función en JavaScript:

Pero esa no es la única forma, JavaScript también permite la creación de funciones que van a ser invocadas de forma inmediata, esto quiere decir apenas se ejecute el script. Un ejemplo de esto puede verse a continuación:

Si bien las dos funciones mostradas anteriormente para fines prácticos hacen lo mismo, es fundamental detectar estas diferencias dentro de un código malicioso para determinar aquellas funciones que deban ser analizadas primero.

A su vez, puede pasar que algunas funciones que se ejecutan automáticamente sean parte de una técnica de ofuscación implementada en el código malicioso, pero no hagan alguna acción maliciosa en sí. Por ende, si bien es fundamental analizar esas funciones, diferenciar el contenido y la prioridad de ejecución de las funciones puede ayudarnos a determinar a qué debemos prestar atención primero al momento de analizar un código malicioso.

Detectar el punto de entrada

Poder determinar el punto de entrada o el punto donde comienza a ejecutarse un código malicioso es muy importante, ya que nos permite posicionarnos al comienzo de la actividad maliciosa del código. Esto resulta ventajoso en lenguajes del tipo scripting, como es el caso de JavaScript, porque los mismos tienden a tener funciones declaradas en distintas secciones del script y puede pasar que no todas esas funciones vayan a ser invocadas o ejecutadas.

Por lo tanto, detectar y comenzar el análisis desde el punto de entrada nos brinda la ventaja de enfocarnos sobre lo que es realmente relevante del código malicioso en cuestión, y en muchos casos, nos permite descartar código  “basura” o código que no realiza ninguna actividad maliciosa y que suele usarse como una capa de ofuscación para confundir al analista.

Ejecución controlada desde un navegador

Dado que los navegadores web pueden interpretar y ejecutar código JavaScript, los mismos pueden ser de utilidad para realizar una ejecución parcial o total de un código malicioso desarrollado en este lenguaje. De esta forma se puede hacer una combinación entre el análisis estático y dinámico sobre un código malicioso con el fin de tener un mejor entendimiento del mismo.

Para poder ejecutar un código JavaScript sobre un navegador web, como puede ser Mozilla Firefox, primero debemos activar las herramientas de desarrollo utilizando el botón F12 (esto puede variar dependiendo del navegador que se use), luego ir a la sección Console y colocar ahí el código que deseemos ejecutar.

En la siguiente captura de pantalla se puede ver un ejemplo de cómo ejecutar un código JavaScript desde el navegador Mozilla Firefox.

Ejemplo de ejecución de un código JavaScript empleando el navegador Firefox.

Regresar a Noticias
T-Cert / Tigo Copyright©, Guatemala todos los derechos reservados.