Hooking de funciones VBScript con Frida

El trabajo de análisis requiere de una lucha continua contra código desconocido, ofuscado y cifrado. Recientemente me encontraba peleándome con un VBScript que, cómo no, se encontraba ofuscado (al menos dos capas de protección). Tras superar la primera protección y empezar con la segunda, comprobé que el método de descifrado en este punto no era trivial. Esto se sumaba a una aversión, por cuestiones meramente personales, por este lenguaje. Un análisis dinámico me podía dar la secuencia de comandos que finalmente se ejecutaban, pero perdía entonces visibilidad de todo cuanto había ocurrido por mitad. Y… ¿quién sabe? A lo mejor hay alguna técnica antianálisis por mitad que modifica el comportamiento del script para contactar contra otra infraestructura diferente. Siempre con el modo paranoico encendido.

Decidí que iba a atajar el asunto de raíz. Tanto el primer script como el segundo descifrado, después de desprotegerse, hacían uso de la función ‘Execute’ de VBScript para dar vida a su código antes protegido. Internamente, el proceso que ejecuta el script (‘wscript.exe’ en este caso), tendría que manejar el buffer descifrado y pasarlo a otra función que se encargue de ejecutarlo. Pero… ¿Dónde se encontraba susodicha función?

Con fines didácticos, en lugar de analizar la aplicación usando el modo rápido, voy a suponer que desconocemos la estructura del propio ‘wscript.exe’ y de las funciones de las librerías que carga. En primer lugar, ¿Qué hace el script y qué espero ver al analizar ‘wscript.exe’?

Ilustración 1: Script inicial cifrado

Ilustración 1: Script inicial cifrado

[Read more…]

Aunque la mona se vista de seda… ¿Mona se queda?

Solemos asociar que el llevar a cabo ataques contra entidades que consideramos seguras sólo puede ser realizado por atacantes altamente especializados y con profundos conocimientos sobre la temática. Aunque suele ser la norma, esto no siempre es así, y para ejemplo, la noticia que saltaba este verano de dos chicos que, movidos por el famoso juego ‘Pokemon Go’, llegaron a introducirse en una zona de seguridad de un cuartel de la Guardia Civil de Las rozas en Madrid. Muchas veces no son necesarios unos amplios conocimientos técnicos, sino más bien dar en el clavo con ciertas técnicas o ideas medianamente diferentes que se nos ocurran.

En esta entrada vamos a comprobar cómo se comportan diferentes motores “antivirus” (AV) ante amenazas ya conocidas por ellos mismos pero que se encuentran empaquetadas por un software que creen conocer. No se busca hacer una comparativa de antivirus, sino analizar cómo se comportan y concienciar sobre la fe ciega que muchas veces se pone en ellos.

Para la creación del packer, en lugar de construir uno propio desde 0, lo que nos daría bastante ventaja pero complicaría su creación, se ha utilizado uno de los más famosos no por su poder de ocultación, sino por lo extendido de su uso y porque su código es libre, UPX. Los motores antivirus deberían ser capaces casi de ver ‘a través’ del empaquetamiento. Para las pruebas y modificaciones que presentamos se ha utilizado versión 3.91 de UPX.
[Read more…]