Código malicioso en VBScript ofuscado

 

En una de nuestras publicaciones anteriores en este blogse realizó el análisis de un código malicioso que se propagaba por medio de dispositivos USB. En esta ocasión, el equipo de análisis de malware del UNAM-CERT mostrará un método de cómo desofuscar código en VBScript, correspondiente a una variante del malware "Servieca.vbs".

 

 

 

El archivo que fue reportado lleva por nombre "help.vbs" y su firma md5 es "f61991864cc8d9a58aa573b5e6b3e3cc", cabe destacar que existen otras variantes de este código malicioso programado en VBScript que tienen el mismo nombre.

 

Al inicio del script, el creador o los creadores del malware declararon la variable "EEU" para guardar la cadena ofuscada. Posteriormente utilizan la función "SPLIT" para dividir dicha cadena utilizando el patrón "à‡".

 

Después, con la función "UBOUND" obtienen el subíndice más alto para calcular el tamaño del arreglo, el cual recorren con el ciclo "for" para convertir cada valor ASCII en carácter. Una vez realizada la conversón, cada símbolo se concatena en la variable "JKL", que al final es la variable que contiene las instrucciones y que se ejecutan con la función "EXECUTE".

 

 

 

Para visualizar el código ofuscado se debe comentar la función "EXECUTE" y hacer uso de la función "MsgBox", la cual mostrará el texto en una ventana. Sin embargo, si el mensaje es muy largo, solo mostrará una parte del texto.

 

 

 

A continuación se muestra parte del código desofuscado usando la función "MsgBox":

 

 

 

Otra alternativa para desofuscar código, es crear un archivo "html" con la siguiente plantilla:

 

 

 

Dentro de las etiquetas "script" se coloca el código ofuscado y se puede utilizar la función "Alert" para mostrar un mensaje de alerta. Sin embargo, tampoco se puede ver todo el código si el texto es muy largo.

 

 

 

A continuación se muestra parte del código desofuscado usando la función "Alert":

 

 

 

Para resolver este inconveniente y poder visualizar todo el código desofuscado, se debe utilizar la función "document.write()". El lenguaje de programación "Visual Basic Script" es propietario de Microsoft, por lo que solo es soportado por el navegador "Internet Explorer".

 

 

 

Al abrir el archivo "html" con el navegador "Internet Explorer", se muestra todo el texto del código desofuscado. En este caso, el código desofuscado se muestra nuevamente ofuscado, conservando la misma estructura descrita anteriormente, la cual consta de una cadena ofuscada que tiene valores ASCII y el patrón "??" almacenados en la variable "ggh".

 

 

 

El código obtenido al imprimir la variable "JKL" con la función "document.write()", se debe colocar en otro archivo html comentado la función "EXECUTE" y agregando nuevamente la función "document.write()" para imprimir la variable "df".

 

 

 

A continuación se muestra el código desofuscado:

 

 

 

Esta muestra de malware, muestra en su código el dominio "verxxxxxxxxdns.net" y el puerto "99".

 

 

 

La función "Post()" es la encargada de formar la petición web con las variables "host", "Port" y "cmd", esta última toma el valor "ready" al pasar como argumento a la función "Post()".

 

 

 

Al ejecutar la muestra de malware en un entorno controlado sin salida a Internet, fue posible verificar peticiones DNS para resolver el dominio "verxxxxxxxxdns.net". A continuación se muestra el tráfico de red capturado:

 

 

 

Para que el malware pudiera resolver el dominio, se procedió a modificar el archivo "hosts" indicándole la dirección IP de otra máquina de nuestro laboratorio en el mismo segmento de red. Con la acción anterior, se pudieron observar peticiones de sincronización por el puerto 99, como se define en el código malicioso.

 

 

 

Se le proporcionó a la muestra de malware el servicio web por el puerto 99, para ello se cambió la configuración en los archivos "ports.conf" y "default" de Apache.

 

 

 

Con las acciones, resolver el dominio que solicitaba el malware y proporcionarle el servicio web por el puerto 99, la muestra pudo establecer conexión de red con nuestro equipo Linux.

 

 

 

Al haber establecido conexión con el servidor web, en el tráfico capturado se puedo observar la partición "Post" ya reconstruida y la información que se envía en el campo de "User-Agent".

 

 

 

Al dejar interactuar a la muestra con Internet, no se logró establecer conexión con el servidor web remoto, lo que significa que el sitio ya no se encontraba activo.

 

 

 

 

          - Desinfectar equipo

 

 

Para desinfectar el equipo, en el caso particular de esta muestra, se puede utilizar el programa "Autoruns" de la suite Sysinternals de Microsoft y eliminar las entradas que crea el malware.

 

 

 

En la pestaña "Logon", se encuentran las aplicaciones que se ejecutan en cada inicio del equipo Windows, por lo que se pueden desmarcar las llaves de registro que ejecutan el script "help.vbs" y el archivo ubicado en la carpeta "Inicio", como se muestra a continuación:

 

 

 

Las acciones anteriores provocan en el Registro, que se borren las llaves que inician al código malicioso.

 

 

 

Pero las acciones en el sistema de archivos es diferente, en la carpeta "Inicio" se crea la carpeta "AutorunsDisabled" y se mueve el archivo que fue deshabilitado. Posteriormente puede eliminarse de forma manual, teniendo precaución de no ejecutarlo, ya que crearía de nuevo las llaves de registro.

 

 

 

Al consultar el servicio VirusTotal se tiene que solo 24 de 47 motores antivirus detectan el código como malicioso. A continuación el reporte: